summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpohlinkzei <pohlinkzei@gmx-topmail.de>2017-02-28 15:36:42 +0100
committerpohlinkzei <pohlinkzei@gmx-topmail.de>2017-02-28 15:36:42 +0100
commitd6361fac800b3bae8d8b37920fddb2bbedfc8c1a (patch)
treefcb7f52123710f6df61d805c68d6bbf47e050733
parent98702c661f58978f56b1e6d10defb322f7ad4252 (diff)
parente1b8340c662516353028e05abe0570fc4ae7bb9a (diff)
downloadnavit-pr-5-hide-keys.tar.gz
Merge remote-tracking branch 'navit/trunk' into pr-5-hide-keyspr-5-hide-keys
-rwxr-xr-xCMakeLists.txt45
-rw-r--r--Makefile.am25
-rw-r--r--Makefile.inc15
-rw-r--r--README.md14
-rwxr-xr-xautogen.sh20
-rw-r--r--ci/basic_upload_apks.py82
-rw-r--r--ci/build.sh2
-rw-r--r--ci/build_android.sh57
-rw-r--r--ci/build_android_x86.sh25
-rw-r--r--ci/build_linux.sh14
-rw-r--r--ci/build_tomtom_minimal.sh18
-rw-r--r--ci/build_tomtom_plugin.sh30
-rw-r--r--ci/merge_i18n_update.sh3
-rw-r--r--ci/pointer-64.pngbin0 -> 1733 bytes
-rw-r--r--ci/publish.sh14
-rw-r--r--ci/run_linux_tests.sh56
-rw-r--r--ci/setup_tomtom_requirements.sh208
-rw-r--r--ci/xdotools.sh94
-rw-r--r--circle.yml25
-rw-r--r--configure.in1336
-rw-r--r--contrib/tomtom/espeakdsp.c101
-rw-r--r--man/Makefile.am1
-rw-r--r--navit/Makefile.am248
-rw-r--r--navit/android/AndroidManifest.xml.cmake10
-rw-r--r--navit/android/AndroidManifest.xml.in37
-rw-r--r--navit/android/libs/acra-4.3.0b2.jarbin96994 -> 0 bytes
-rw-r--r--navit/android/libs/acra-4.8.5.jarbin0 -> 154375 bytes
-rw-r--r--navit/android/libs/android-support-v4.jarbin0 -> 1364299 bytes
-rw-r--r--navit/android/res/values/strings.xml4
-rw-r--r--navit/android/src/org/navitproject/navit/Navit.java54
-rwxr-xr-xnavit/android/src/org/navitproject/navit/NavitAppConfig.java8
-rw-r--r--navit/attr_def.h2
-rw-r--r--navit/autoload/Makefile.am6
-rw-r--r--navit/autoload/osso/Makefile.am6
-rw-r--r--navit/binding/Makefile.am15
-rw-r--r--navit/binding/dbus/Makefile.am18
-rw-r--r--navit/binding/python/Makefile.am6
-rw-r--r--navit/binding/win32/Makefile.am15
-rw-r--r--navit/event.c9
-rw-r--r--navit/fib-1.1/Makefile.am3
-rw-r--r--navit/font/Makefile.am4
-rw-r--r--navit/font/freetype/Makefile.am9
-rw-r--r--navit/fonts/Makefile.am15
-rw-r--r--navit/graphics/Makefile.am25
-rw-r--r--navit/graphics/android/Makefile.am9
-rw-r--r--navit/graphics/egl/CMakeLists.txt2
-rw-r--r--navit/graphics/egl/graphics_egl.c1458
-rw-r--r--navit/graphics/gd/Makefile.am9
-rw-r--r--navit/graphics/gtk_drawing_area/Makefile.am5
-rw-r--r--navit/graphics/null/Makefile.am9
-rw-r--r--navit/graphics/opengl/Makefile.am6
-rw-r--r--navit/graphics/qt5/CMakeLists.txt9
-rw-r--r--navit/graphics/qt5/QNavitWidget.cpp158
-rw-r--r--navit/graphics/qt5/QNavitWidget.h33
-rw-r--r--navit/graphics/qt5/event_qt5.cpp185
-rw-r--r--navit/graphics/qt5/event_qt5.h18
-rw-r--r--navit/graphics/qt5/graphics_qt5.cpp837
-rw-r--r--navit/graphics/qt5/graphics_qt5.h63
-rw-r--r--navit/graphics/qt_qpainter/Makefile.am13
-rw-r--r--navit/graphics/sdl/Makefile.am5
-rw-r--r--navit/graphics/win32/Makefile.am12
-rw-r--r--navit/gui/Makefile.am13
-rw-r--r--navit/gui/gtk/Makefile.am6
-rw-r--r--navit/gui/internal/Makefile.am10
-rw-r--r--navit/gui/qml/Makefile.am14
-rw-r--r--navit/gui/qml/skins/Makefile.am1
-rw-r--r--navit/gui/qml/skins/navit/Makefile.am9
-rw-r--r--navit/gui/win32/Makefile.am10
-rw-r--r--navit/map/Makefile.am24
-rw-r--r--navit/map/binfile/Makefile.am9
-rw-r--r--navit/map/csv/Makefile.am9
-rw-r--r--navit/map/filter/Makefile.am9
-rw-r--r--navit/map/garmin/Makefile.am33
-rw-r--r--navit/map/garmin_img/Makefile.am5
-rw-r--r--navit/map/mg/Makefile.am9
-rw-r--r--navit/map/shapefile/Makefile.am14
-rw-r--r--navit/map/textfile/Makefile.am9
-rw-r--r--navit/maps/Makefile.am51
-rw-r--r--navit/maptool/Makefile.am10
-rw-r--r--navit/navit.c100
-rw-r--r--navit/osd/Makefile.am6
-rw-r--r--navit/osd/core/Makefile.am10
-rw-r--r--navit/plugin/Makefile.am6
-rw-r--r--navit/plugin/pedestrian/Makefile.am11
-rw-r--r--navit/speech/Makefile.am16
-rw-r--r--navit/speech/android/Makefile.am17
-rw-r--r--navit/speech/cmdline/Makefile.am9
-rw-r--r--navit/speech/dbus/Makefile.am5
-rw-r--r--navit/speech/espeak/Makefile.am13
-rw-r--r--navit/speech/speech_dispatcher/Makefile.am6
-rw-r--r--navit/support/Makefile.am32
-rwxr-xr-xnavit/support/espeak/Makefile.am67
-rw-r--r--navit/support/ezxml/Makefile.am4
-rw-r--r--navit/support/gettext_intl/Makefile.in493
-rw-r--r--navit/support/glib/Makefile.am9
-rw-r--r--navit/support/libc/Makefile.am8
-rw-r--r--navit/support/libpng/Makefile.am8
-rw-r--r--navit/support/shapefile/Makefile.am4
-rw-r--r--navit/support/win32/Makefile.am5
-rw-r--r--navit/support/wordexp/Makefile.am4
-rw-r--r--navit/support/zlib/Makefile.am4
-rw-r--r--navit/tools/gpx2navit_txt/Makefile.am27
-rw-r--r--navit/tools/gpx2navit_txt/man/Makefile.am2
-rw-r--r--navit/tools/gpx2navit_txt/src/Makefile.am26
-rw-r--r--navit/vehicle/Makefile.am34
-rw-r--r--navit/vehicle/android/Makefile.am5
-rw-r--r--navit/vehicle/demo/Makefile.am9
-rw-r--r--navit/vehicle/file/Makefile.am15
-rw-r--r--navit/vehicle/gpsd/Makefile.am6
-rw-r--r--navit/vehicle/gpsd_dbus/Makefile.am6
-rw-r--r--navit/vehicle/gypsy/Makefile.am6
-rw-r--r--navit/vehicle/iphone/Makefile.am6
-rw-r--r--navit/vehicle/maemo/Makefile.am6
-rw-r--r--navit/vehicle/null/Makefile.am9
-rw-r--r--navit/vehicle/qt5/CMakeLists.txt6
-rw-r--r--navit/vehicle/qt5/vehicle_qt5.cpp300
-rw-r--r--navit/vehicle/qt5/vehicle_qt5.h58
-rw-r--r--navit/vehicle/webos/Makefile.am5
-rw-r--r--navit/vehicle/wince/Makefile.am9
-rw-r--r--navit/xpm/Makefile.am341
-rw-r--r--po/Makefile.am112
-rw-r--r--po/de.po.in3
-rw-r--r--po/uk.po.in23
123 files changed, 3947 insertions, 3659 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d154e1e6c..819e7d450 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -85,7 +85,9 @@ add_module(graphics/gd "FreeType library not found" FALSE)
add_module(graphics/gtk_drawing_area "FreeType library not found" FALSE)
add_module(graphics/opengl "FreeType library not found" FALSE)
add_module(graphics/sdl "Required library not found" FALSE)
+add_module(graphics/egl "Required library not found" FALSE)
add_module(graphics/qt_qpainter "Qt libraries not found" FALSE)
+add_module(graphics/qt5 "Qt5 libraries not found" FALSE)
add_module(gui/qml "Qt Declarative not found" FALSE)
add_module(gui/gtk "GTK libs not found" FALSE)
add_module(vehicle/gpsd "gpsd lib not found" FALSE)
@@ -97,6 +99,7 @@ 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(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)
@@ -136,6 +139,9 @@ find_package(Glib)
find_package(Gmodule)
find_package(ZLIB)
find_package(Freetype)
+find_library(SDL2MAIN SDL2)
+find_library(SDL2IMAGE SDL2_image)
+find_library(GLES2 GLESv2)
find_package(SDL)
find_package(SDL_ttf)
find_package(SDL_image)
@@ -151,11 +157,21 @@ find_package(Threads)
libfind_pkg_check_modules(FONTCONFIG fontconfig)
#Qt detection
if (NOT DISABLE_QT)
- # Unfortunately, CMake seems to ignore the "OPTIONAL_COMPONENTS" flag,
- # and actually requires all components to be installed. Maybe this can
- # be fixed later...
- find_package(Qt4 4.7 COMPONENTS QtCore OPTIONAL_COMPONENTS QtGui QtXml QtDeclarative QtSvg)
+ find_package(Qt5Widgets)
+ find_package(Qt5Svg)
+ find_package(Qt5DBus)
+ find_package(Qt5Positioning)
+ find_package(Qt5Sensors)
+ #find_package(Qt5Declarative)
+ if (Qt5Widgets_FOUND)
+ else (Qt5Widgets_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)
endif (NOT DISABLE_QT)
+
#pkg-config based detection
find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
@@ -274,6 +290,7 @@ else(FREETYPE_FOUND)
set_with_reason(graphics/gtk_drawing_area "FreeType library not found" FALSE)
set_with_reason(graphics/opengl "FreeType library not found" FALSE)
set_with_reason(graphics/sdl "FreeType library not found" FALSE)
+ set_with_reason(graphics/egl "FreeType library not found" FALSE)
endif(FREETYPE_FOUND)
if(FONTCONFIG_FOUND)
@@ -296,7 +313,17 @@ if (QT_FOUND)
endif()
endif()
endif(QT_FOUND)
-
+if (Qt5Widgets_FOUND)
+ set_with_reason(graphics/qt5 "Qt5 found" TRUE ${Qt5Widgets_LIBRARIES}
+ ${Qt5Declarative_LIBRARIES}
+ ${Qt5Svg_LIBRARIES}
+ ${Qt5DBus_LIBRARIES})
+endif ()
+if (Qt5Positioning_FOUND)
+ set_with_reason(vehicle/qt5 "Qt5 Positioning found" TRUE
+ ${Qt5Positioning_LIBRARIES}
+ ${Qt5Sensors_LIBRARIES})
+endif ()
if(GTK2_FOUND)
# Include gtk.h with "SYSTEM" to avoid GCC compiler warning for gtkitemfactory.h.
include_directories(SYSTEM ${GTK2_GTK_INCLUDE_DIR})
@@ -346,6 +373,11 @@ if(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND)
set_with_reason(graphics/sdl "SDL/SDL_image libs found" TRUE ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY})
endif(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND)
+if(SDL2MAIN AND SDL2IMAGE AND GLES2)
+ set_with_reason(graphics/egl "SDL2/SDL2_image libs found" TRUE ${SDL2MAIN} ${SDL2IMAGE} ${GLES2})
+ message(STATUS "EGL libs found : ${SDL2MAIN} ${SDL2IMAGE} ${GLES2}")
+endif(SDL2_FOUND AND SDL2IMAGE_FOUND AND GLES2)
+
if (LIBGPS_FOUND)
if (LIBGPS_NEW_FOUND)
set(VEHICLE_GPSD_REASON "gpsd lib found")
@@ -600,9 +632,6 @@ if (SAMPLE_MAP)
endif(SAMPLE_MAP)
if(ANDROID)
- # for android API 3 compatiblity
- SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,/data/data/org.navitproject.navit/lib/")
-
find_program(ANDROID_LOCATION NAMES android android.bat)
find_program(ANT_LOCATION NAMES ant)
if (NOT ANT_LOCATION)
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 7bc7d34d3..000000000
--- a/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-ACLOCAL_AMFLAGS= -I m4
-include $(top_srcdir)/Makefile.inc
-SUBDIRS=
-if USE_NATIVE_LANGUAGE_SUPPORT
-XCFLAGS=-DINSTALLPREFIX=INSTALLDIR
-if SUPPORT_WIN32
-XCFLAGS+=-DSUBLANG_BENGALI_BANGLADESH=0x03 -DSUBLANG_PUNJABI_PAKISTAN=0x03 -DSUBLANG_ROMANIAN_MOLDOVA=0x03
-if SUPPORT_WIN32CE
-if SHARED_LIBNAVIT
-XCFLAGS+=-L../navit/support/libc -lsupport_libc
-AM_MAKEFLAGS=l=l
-SUBDIRS+=navit/support/libc
-endif
-endif
-endif
-if SUPPORT_ANDROID
-XCFLAGS+=-Xcompiler -nostartfiles
-endif
-export XCFLAGS
-SUBDIRS+=intl po man
-endif
-SUBDIRS+=navit
-pkgdoc_DATA = README
-EXTRA_DIST = README COPYRIGHT LGPL-2 GPL-2 COPYING INSTALL contrib/android_build.sh contrib/sjjb_import.pl
-DIST_SUBDIRS=intl po navit man
diff --git a/Makefile.inc b/Makefile.inc
deleted file mode 100644
index 22fd8023e..000000000
--- a/Makefile.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-modulebindingdir=$(pkglibdir)/binding
-modulemapdir=$(pkglibdir)/map
-modulefontdir=$(pkglibdir)/font
-modulegraphicsdir=$(pkglibdir)/graphics
-moduleguidir=$(pkglibdir)/gui
-modulespeechdir=$(pkglibdir)/speech
-moduleosddir=$(pkglibdir)/osd
-modulevehicledir=$(pkglibdir)/vehicle
-moduleplugindir=$(pkglibdir)/plugin
-moduleautoloaddir=$(pkglibdir)/autoload
-pkgdocdir=$(pkgdatadir)
-imagedir=$(pkgdatadir)/xpm
-skinsdir=$(pkgdatadir)/skins
-fontsdir=$(pkgdatadir)/fonts
-mapsdir=$(pkgdatadir)/maps
diff --git a/README.md b/README.md
index 568255875..399b96802 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,19 @@
[![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](http://wiki.openstreetmap.org/w/images/2/25/Navit_android.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
=====
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 9638fd9ee..000000000
--- a/autogen.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-if [ `uname` = Darwin ]; then
- LIBTOOL=glibtool
-else
- LIBTOOL=libtool
-fi
-
-for pkg in pkg-config $LIBTOOL automake aclocal autoreconf:autoconf autopoint:gettext
-do
- if ! ${pkg%%:*} --version >/dev/null
- then
- echo "You need to install ${pkg##*:}"
- exit 1
- fi
-done
-
-autoreconf --install -I m4 "$@"
-echo "***** WARNING *****"
-echo "Support for autotools will be removed soon from navit, please use cmake instead"
-sleep 5
diff --git a/ci/basic_upload_apks.py b/ci/basic_upload_apks.py
new file mode 100644
index 000000000..b4b439536
--- /dev/null
+++ b/ci/basic_upload_apks.py
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+#
+# Copyright 2014 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the 'License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Uploads an apk to the beta track."""
+
+import argparse
+import sys
+from apiclient import sample_tools
+from oauth2client import client
+
+TRACK = 'beta' # Can be 'alpha', beta', 'production' or 'rollout'
+
+# Declare command-line flags.
+argparser = argparse.ArgumentParser(add_help=False)
+argparser.add_argument('package_name',
+ help='The package name. Example: com.android.sample')
+argparser.add_argument('apk_file',
+ nargs='?',
+ default='test.apk',
+ help='The path to the APK file to upload.')
+
+
+def main(argv):
+ # Authenticate and construct service.
+ service, flags = sample_tools.init(
+ argv,
+ 'androidpublisher',
+ 'v2',
+ __doc__,
+ __file__, parents=[argparser],
+ scope='https://www.googleapis.com/auth/androidpublisher')
+
+ # Process flags and read their values.
+ package_name = flags.package_name
+ apk_file = flags.apk_file
+
+ try:
+ edit_request = service.edits().insert(body={}, packageName=package_name)
+ result = edit_request.execute()
+ edit_id = result['id']
+
+ apk_response = service.edits().apks().upload(
+ editId=edit_id,
+ packageName=package_name,
+ media_body=apk_file).execute()
+
+ print 'Version code %d has been uploaded' % apk_response['versionCode']
+
+ track_response = service.edits().tracks().update(
+ editId=edit_id,
+ track=TRACK,
+ packageName=package_name,
+ body={u'versionCodes': [apk_response['versionCode']]}).execute()
+
+ print 'Track %s is set for version code(s) %s' % (
+ track_response['track'], str(track_response['versionCodes']))
+
+ commit_request = service.edits().commit(
+ editId=edit_id, packageName=package_name).execute()
+
+ print 'Edit "%s" has been committed' % (commit_request['id'])
+
+ except client.AccessTokenRefreshError:
+ print ('The credentials have been revoked or expired, please re-run the '
+ 'application to re-authorize')
+
+if __name__ == '__main__':
+ main(sys.argv)
+
diff --git a/ci/build.sh b/ci/build.sh
index 7f8f46279..b5d81e9dc 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -1,3 +1,5 @@
+set -e
+
echo "$# build script (s) to run"
for i in $(seq 1 $#); do
diff --git a/ci/build_android.sh b/ci/build_android.sh
index 5e9794a07..dc858e2ca 100644
--- a/ci/build_android.sh
+++ b/ci/build_android.sh
@@ -1,64 +1,37 @@
#!/bin/bash
-red='\e[0;31m'
-grn='\e[0;32m'
-yel='\e[1;33m'
-off='\e[0m'
+set -e
-wget -nv -c http://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip
-[ -d ~/android-ndk-r13 ] || unzip -q -d ~ android-ndk-r13-linux-x86_64.zip
-
-# setup var's to perform environment setup and cmake
+export ARCH="arm"
export START_PATH=~/
export SOURCE_PATH=$START_PATH"/"${CIRCLE_PROJECT_REPONAME}"/"
export CMAKE_FILE=$SOURCE_PATH"/Toolchain/arm-eabi.cmake"
-
-export ANDROID_NDK=~/android-ndk-r13
+export ANDROID_NDK=~/android-ndk-r11c
export ANDROID_NDK_BIN=$ANDROID_NDK"/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin"
-
export ANDROID_SDK="/usr/local/android-sdk-linux/"
export ANDROID_SDK_PLATFORM_TOOLS=$ANDROID_SDK"/platform-tools"
+export PATH=$ANDROID_NDK_BIN:$ANDROID_SDK_PLATFORM_TOOLS:$PATH
+export BUILD_PATH=$START_PATH"/android-${ARCH}"
-export ANDROID_TOOLS_CHECK=$ANDROID_SDK"/tools"
-
-export ANDROID_PLATFORM_TOOLS_CHECK=$ANDROID_SDK"/platform-tools"
-
-export ANDROID_BUILD_TOOLS="23.0.1"
-export ANDROID_BUILD_CHECK=$ANDROID_SDK"/build-tools/"$BUILD_TOOLS
-
-export ANDROID_PLATFORM_LATEST="android-21"
-export ANDROID_PLATFORM_MIN="android-7"
-export BUILD_PATH=$START_PATH"/android-build"
-export ANDROID_ENV=$ANDROID_NDK_BIN:$ANDROID_SDK_TOOLS:$ANDROID_SDK_PLATFORM_TOOLS
-
-# $ANDROID_HOME is /usr/local/android-sdk-linux for the android env. provided by CircleCI
-
-# If path already has our environment no need to set it
-if echo "$ANDROID_ENV" | grep -q "$PATH"; then
- echo -e "${grn}" " Android PATH configuration... ALREADY SET" "${off}"
- echo
-else
- echo -e "${grn}" " Android PATH configuration... EXPORTED" "${off}"
- export PATH=$ANDROID_ENV:$PATH
- echo
-fi
+wget -nv -c http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
+[ -d ~/android-ndk-r11c ] || unzip -q -d ~ android-ndk-r11c-linux-x86_64.zip
[ -d $BUILD_PATH ] || mkdir -p $BUILD_PATH
cd $BUILD_PATH
-export PATH=$ANDROID_NDK_BIN:$ANDROID_SDK_TOOLS:$ANDROID_SDK_PLATFORM_TOOLS:$PATH
+
android list targets
-mkdir $CIRCLE_ARTIFACTS/android/
-cp ~/navit/navit/android/CMakeLists.txt $CIRCLE_ARTIFACTS/android/
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DCACHE_SIZE='(20*1024*1024)' -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=23 -DANDROID_NDK_API_VERSION=19 $SOURCE_PATH
-make || exit 1
+make
+
if [[ "${CIRCLE_BRANCH}" == "master" ]]; then
- make apkg-release && mv navit/android/bin/Navit-release-unsigned.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-release-unsigned.apk || exit 1
+ make apkg-release && mv $BUILD_PATH/navit/android/bin/Navit-release-unsigned.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk || exit 1
else
- make apkg && mv navit/android/bin/Navit-debug.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-debug.apk || exit 1
+ make apkg && mv $BUILD_PATH/navit/android/bin/Navit-debug.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-debug.apk || exit 1
fi
-cp ~/android-build/navit/*.xml $CIRCLE_ARTIFACTS/android/
+[ -d $CIRCLE_ARTIFACTS/android-${ARCH}/ ] || mkdir $CIRCLE_ARTIFACTS/android-${ARCH}/
+cp $BUILD_PATH/navit/*.xml $CIRCLE_ARTIFACTS/android-${ARCH}/
echo
echo "Build leftovers :"
-ls navit/android/bin/
+ls $BUILD_PATH
diff --git a/ci/build_android_x86.sh b/ci/build_android_x86.sh
index 022b7f5af..c5a421cbe 100644
--- a/ci/build_android_x86.sh
+++ b/ci/build_android_x86.sh
@@ -1,32 +1,37 @@
+#!/bin/bash
+set -e
+
+export arch="x86"
export START_PATH=~/
export SOURCE_PATH=$START_PATH"/"${CIRCLE_PROJECT_REPONAME}"/"
export CMAKE_FILE=$SOURCE_PATH"/Toolchain/i686-android.cmake"
-export ANDROID_NDK=~/android-ndk-r13
+export ANDROID_NDK=~/android-ndk-r11c
export ANDROID_NDK_BIN=$ANDROID_NDK"/toolchains/x86-4.9/prebuilt/linux-x86_64/bin"
export ANDROID_SDK="/usr/local/android-sdk-linux/"
export ANDROID_SDK_PLATFORM_TOOLS=$ANDROID_SDK"/platform-tools"
export PATH=$ANDROID_NDK_BIN:$ANDROID_SDK_PLATFORM_TOOLS:$PATH
-export BUILD_PATH=$START_PATH"/android-x86"
+export BUILD_PATH=$START_PATH"/android-${ARCH}"
-wget -nv -c http://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip
-unzip -q -d ~ android-ndk-r13-linux-x86_64.zip
+wget -nv -c http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
+[ -d ~/android-ndk-r11c ] || unzip -q -d ~ android-ndk-r11c-linux-x86_64.zip
[ -d $BUILD_PATH ] || mkdir -p $BUILD_PATH
cd $BUILD_PATH
android list targets
-cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=23 -DANDROID_NDK_API_VERSION=19 -DDISABLE_CXX=1 -DDISABLE_QT=1 $SOURCE_PATH || exit -1
-make || exit -1
+cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=23 -DANDROID_NDK_API_VERSION=19 -DDISABLE_CXX=1 -DDISABLE_QT=1 $SOURCE_PATH
+make
if [[ "${CIRCLE_BRANCH}" == "master" ]]; then
- make apkg-release && mv navit/android/bin/Navit-release-unsigned.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-x86-release-unsigned.apk || exit 1
+ make apkg-release && mv $BUILD_PATH/navit/android/bin/Navit-release-unsigned.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk || exit 1
else
- make apkg && mv navit/android/bin/Navit-debug.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-x86-debug.apk || exit 1
+ make apkg && mv $BUILD_PATH/navit/android/bin/Navit-debug.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-debug.apk || exit 1
fi
-#cp ~/android-build/navit/*.xml $CIRCLE_ARTIFACTS/android/
+[ -d $CIRCLE_ARTIFACTS/android-${ARCH}/ ] || mkdir $CIRCLE_ARTIFACTS/android-${ARCH}/
+cp $BUILD_PATH/navit/*.xml $CIRCLE_ARTIFACTS/android-${ARCH}/
echo
echo "Build leftovers :"
-ls navit/android/bin/
+ls $BUILD_PATH
diff --git a/ci/build_linux.sh b/ci/build_linux.sh
index 5cbd2039a..7e26d0685 100644
--- a/ci/build_linux.sh
+++ b/ci/build_linux.sh
@@ -1,4 +1,4 @@
-sudo apt-get install cmake libpng12-dev librsvg2-bin libfreetype6-dev libdbus-glib-1-dev g++ libgtk2.0-dev
+sudo apt-get install cmake libpng12-dev librsvg2-bin libfreetype6-dev libdbus-glib-1-dev g++ libgtk2.0-dev libqt5svg5-dev
cmake_opts="-Dgraphics/qt_qpainter:BOOL=FALSE -Dgui/qml:BOOL=FALSE -DSVG2PNG:BOOL=FALSE -DSAMPLE_MAP=n -Dgraphics/gtk_drawing_area:BOOL=TRUE"
@@ -8,8 +8,8 @@ if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trun
tar xfz ~/assets/cov-analysis-linux64-7.6.0.tar.gz
export PATH=~/navit/cov-analysis-linux64-7.6.0/bin:$PATH
- mkdir bin && cd bin
- cov-build --dir cov-int cmake ../ ${cmake_opts}
+ mkdir ~/linux-bin && cd ~/linux-bin
+ cov-build --dir cov-int cmake ~/${CIRCLE_PROJECT_REPONAME}/ ${cmake_opts}
cov-build --dir cov-int make || exit -1
tar czvf navit.tgz cov-int
@@ -26,11 +26,15 @@ if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trun
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
- mkdir bin && cd bin
- cmake ../ ${cmake_opts} || exit -1
+ mkdir ~/linux-bin && cd ~/linux-bin
+ cmake ~/${CIRCLE_PROJECT_REPONAME}/ ${cmake_opts} || exit -1
make || exit -1
fi
if [[ "$CIRCLE_ARTIFACTS" != "" ]]; then
cp -r navit/xpm $CIRCLE_ARTIFACTS
fi
+
+
+# Done with the builds tests. Running some app tests
+bash ~/navit/ci/run_linux_tests.sh
diff --git a/ci/build_tomtom_minimal.sh b/ci/build_tomtom_minimal.sh
index 6a8582be1..8cf0c735a 100644
--- a/ci/build_tomtom_minimal.sh
+++ b/ci/build_tomtom_minimal.sh
@@ -37,12 +37,12 @@ mkdir -p ~/tomtom_assets
if ! [ -e "~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ]
then
- wget -nv -c http://www.tomtom.com/gpl/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets
+ wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets
fi
-if ! test -f "~/tomtom_assets/libpng-1.6.26.tar.gz"
- then
- wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.26.tar.gz -P ~/tomtom_assets
+if ! test -f "~/tomtom_assets/libpng-1.6.28.tar.gz"
+then
+ wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.28.tar.gz -P ~/tomtom_assets
fi
# toolchain
@@ -53,9 +53,9 @@ tar xzf ~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz
# zlib
cd /tmp
-wget -nv -c http://zlib.net/zlib-1.2.8.tar.gz
-tar xzf zlib-1.2.8.tar.gz
-cd zlib-1.2.8
+wget -nv -c http://zlib.net/zlib-1.2.11.tar.gz
+tar xzf zlib-1.2.11.tar.gz
+cd zlib-1.2.11
./configure --prefix=$PREFIX
make -j$JOBS
make install
@@ -71,8 +71,8 @@ make install
# libpng
cd /tmp/
-tar xzf ~/tomtom_assets/libpng-1.6.26.tar.gz
-cd libpng-1.6.26/
+tar xzf ~/tomtom_assets/libpng-1.6.28.tar.gz
+cd libpng-1.6.28/
./configure --prefix=$PREFIX --host=$ARCH
make -j$JOBS
make install
diff --git a/ci/build_tomtom_plugin.sh b/ci/build_tomtom_plugin.sh
index 3080b39c1..548109877 100644
--- a/ci/build_tomtom_plugin.sh
+++ b/ci/build_tomtom_plugin.sh
@@ -36,12 +36,12 @@ mkdir -p ~/tomtom_assets
if ! [ -e "~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ]
then
- wget -c http://www.tomtom.com/gpl/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets
+ wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets
fi
-if ! test -f "~/tomtom_assets/libpng-1.6.26.tar.gz"
+if ! test -f "~/tomtom_assets/libpng-1.6.28.tar.gz"
then
- wget -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.26.tar.gz -P ~/tomtom_assets
+ wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.28.tar.gz -P ~/tomtom_assets
fi
# toolchain
@@ -52,7 +52,7 @@ tar xzf ~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz
# espeak
cd /tmp
# this one includes the precompiled voices
-wget -c http://freefr.dl.sourceforge.net/project/espeak/espeak/espeak-1.48/espeak-1.48.04-source.zip
+wget -nv -c http://freefr.dl.sourceforge.net/project/espeak/espeak/espeak-1.48/espeak-1.48.04-source.zip
unzip espeak-1.48.04-source.zip
cd espeak-1.48.04-source
sed -i "s/PREFIX=\/usr//g" src/Makefile
@@ -177,16 +177,16 @@ arm-linux-gcc -O2 -I$PREFIX/include -I$PREFIX/usr/include espeakdsp.c -o espeakd
# zlib
cd /tmp
-wget -c http://zlib.net/zlib-1.2.8.tar.gz
-tar xzf zlib-1.2.8.tar.gz
-cd zlib-1.2.8
+wget -nv -c http://zlib.net/zlib-1.2.11.tar.gz
+tar xzf zlib-1.2.11.tar.gz
+cd zlib-1.2.11
./configure --prefix=$PREFIX
make -j$JOBS
make install
# libxml
cd /tmp/
-wget -c http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz
+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
@@ -195,15 +195,15 @@ make install
# libpng
cd /tmp/
-tar xzf ~/tomtom_assets/libpng-1.6.26.tar.gz
-cd libpng-1.6.26/
+tar xzf ~/tomtom_assets/libpng-1.6.28.tar.gz
+cd libpng-1.6.28/
./configure --prefix=$PREFIX --host=$ARCH
make -j$JOBS
make install
cd /tmp
-wget -c http://download.savannah.gnu.org/releases/freetype/freetype-2.5.0.tar.gz
+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
@@ -214,7 +214,7 @@ freetype-config --cflags
# glib
cd /tmp
-wget -c http://ftp.gnome.org/pub/gnome/sources/glib/2.25/glib-2.25.17.tar.gz
+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
@@ -249,10 +249,10 @@ make install
cd /tmp
-wget -c http://www.libsdl.org/release/SDL-1.2.15.tar.gz
+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 -c http://tracks.yaina.de/source/sdl-fbcon-notty.patch
+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 \
@@ -273,7 +273,7 @@ export PATH=$PREFIX/bin:$PATH
# sdl image
cd /tmp
-wget -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz
+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
diff --git a/ci/merge_i18n_update.sh b/ci/merge_i18n_update.sh
index be9fa7759..1943b27e4 100644
--- a/ci/merge_i18n_update.sh
+++ b/ci/merge_i18n_update.sh
@@ -3,6 +3,7 @@ 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 commit -m "${message}"
git push
diff --git a/ci/pointer-64.png b/ci/pointer-64.png
new file mode 100644
index 000000000..904f6878d
--- /dev/null
+++ b/ci/pointer-64.png
Binary files differ
diff --git a/ci/publish.sh b/ci/publish.sh
new file mode 100644
index 000000000..362411e6b
--- /dev/null
+++ b/ci/publish.sh
@@ -0,0 +1,14 @@
+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
+
+/usr/lib/jvm/java-8-openjdk-amd64/bin/jarsigner -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
+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
new file mode 100644
index 000000000..3f87161ed
--- /dev/null
+++ b/ci/run_linux_tests.sh
@@ -0,0 +1,56 @@
+#!/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/default.png
+
+ # run tests on X11
+ bash ~/navit/ci/xdotools.sh
+
+ # 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 test
+sed -i -e 's@graphics type="gtk_drawing_area"@graphics type="qt5" v="792" h="547"@' 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
+
diff --git a/ci/setup_tomtom_requirements.sh b/ci/setup_tomtom_requirements.sh
new file mode 100644
index 000000000..bf07211c6
--- /dev/null
+++ b/ci/setup_tomtom_requirements.sh
@@ -0,0 +1,208 @@
+#!/bin/sh
+# this builds navit for tomtom
+# in case you want to build a plugin for tomtom use build_tomtom_plugin.sh instead
+# in case you want to build a standalone system
+# https://github.com/george-hopkins/opentom
+# https://github.com/gefin/opentom
+
+set -e
+
+export ARCH=arm-linux
+cp Toolchain/$ARCH.cmake /tmp
+
+# toolchain
+export TOMTOM_SDK_DIR=/opt/tomtom-sdk
+mkdir -p $TOMTOM_SDK_DIR >/dev/null 2>&1 || export TOMTOM_SDK_DIR=$HOME/tomtom-sdk
+export PREFIX=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/sys-root
+export PATH=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/bin:$PREFIX/bin/:$PATH
+export CFLAGS="-O2 -I$PREFIX/include -I$PREFIX/usr/include"
+export CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include"
+export LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib"
+export CC=$ARCH-gcc
+export CXX=$ARCH-g++
+export LD=$ARCH-ld
+export NM="$ARCH-nm -B"
+export AR=$ARCH-ar
+export RANLIB=$ARCH-ranlib
+export STRIP=$ARCH-strip
+export OBJCOPY=$ARCH-objcopy
+export LN_S="ln -s"
+export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
+JOBS=`getconf _NPROCESSORS_ONLN`
+
+echo "Jobs"
+echo $JOBS
+
+mkdir -p ~/assets/tomtom/
+
+if ! [ -e "~/assets/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ]
+ then
+ wget -nv -c http://www.tomtom.com/gpl/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/assets/tomtom
+fi
+
+if ! test -f "~/assets/tomtom/libpng-1.6.27.tar.gz"
+then
+ wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.27.tar.gz -P ~/assets/tomtom
+fi
+
+# toolchain
+cd /tmp
+mkdir -p $TOMTOM_SDK_DIR
+tar xzf ~/assets/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -C $TOMTOM_SDK_DIR
+
+# zlib
+cd /tmp
+wget -nv -c http://zlib.net/zlib-1.2.9.tar.gz
+tar xzf zlib-1.2.9.tar.gz
+cd zlib-1.2.9
+./configure --prefix=$PREFIX
+make -j$JOBS
+make install
+
+# libxml
+cd /tmp/
+wget -nv -c http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz
+tar xzf libxml2-2.7.8.tar.gz
+cd libxml2-2.7.8/
+./configure --prefix=$PREFIX --host=$ARCH --without-python
+make -j$JOBS
+make install
+
+# libpng
+cd /tmp/
+tar xzf ~/assets/tomtom/libpng-1.6.27.tar.gz
+cd libpng-1.6.27/
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+
+cd /tmp
+wget -nv -c http://download.savannah.gnu.org/releases/freetype/freetype-2.5.0.tar.gz
+tar xzf freetype-2.5.0.tar.gz
+cd freetype-2.5.0
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+freetype-config --cflags
+
+# glib
+cd /tmp
+wget -nv -c http://ftp.gnome.org/pub/gnome/sources/glib/2.25/glib-2.25.17.tar.gz
+tar xzf glib-2.25.17.tar.gz
+cd glib-2.25.17
+cat > tomtom.cache << EOF
+glib_cv_long_long_format=ll
+glib_cv_stack_grows=no
+glib_cv_uscore=no
+ac_cv_func_posix_getgrgid_r=yes
+ac_cv_func_posix_getpwuid_r=yes
+EOF
+chmod a-w tomtom.cache
+./configure --prefix=$PREFIX --host=$ARCH --cache-file=tomtom.cache
+sed -i "s|cp xgen-gmc gmarshal.c |cp xgen-gmc gmarshal.c \&\& sed -i \"s\|g_value_get_schar\|g_value_get_char\|g\" gmarshal.c |g" gobject/Makefile
+make -j$JOBS
+make install
+
+
+# tslib
+cd /tmp
+rm -rf tslib-svn
+git clone https://github.com/playya/tslib-svn.git
+cd tslib-svn
+sed -i "s|AM_CONFIG_HEADER|AC_CONFIG_HEADERS|g" configure.ac
+sed -i "119i\#ifdef EVIOCGRAB" plugins/input-raw.c
+sed -i "124i\#endif" plugins/input-raw.c
+sed -i "290i\#ifdef EVIOCGRAB" plugins/input-raw.c
+sed -i "294i\#endif" plugins/input-raw.c
+sed -i "s|# module_raw h3600|module_raw h3600|g" etc/ts.conf # tomtom go 710
+./autogen.sh
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+
+cd /tmp
+wget -nv -c http://www.libsdl.org/release/SDL-1.2.15.tar.gz
+tar xzf SDL-1.2.15.tar.gz
+cd SDL-1.2.15
+wget -nv -c http://tracks.yaina.de/source/sdl-fbcon-notty.patch
+patch -p0 -i sdl-fbcon-notty.patch
+./configure --prefix=$PREFIX --host=$ARCH \
+ --disable-esd --disable-cdrom --disable-joystick --disable-video-x11 \
+ --disable-x11-vm --disable-dga --disable-video-x11-dgamouse \
+ --disable-video-x11-xv --disable-video-x11-xinerama --disable-video-directfb \
+ --enable-video-fbcon --disable-audio CFLAGS="$CFLAGS -DFBCON_NOTTY"
+make -j$JOBS
+make install
+
+# sdl test utilities
+cd test
+./configure --prefix=$PREFIX --host=$ARCH
+make testvidinfo
+cp testvidinfo $PREFIX/usr/bin/
+
+# to find sdl-config
+export PATH=$PREFIX/bin:$PATH
+
+# sdl image
+cd /tmp
+wget -nv -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz
+tar xzf SDL_image-1.2.12.tar.gz
+cd SDL_image-1.2.12
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+
+
+# espeak
+cd /tmp
+# this one includes the precompiled voices
+wget -nv -c http://freefr.dl.sourceforge.net/project/espeak/espeak/espeak-1.48/espeak-1.48.04-source.zip
+unzip espeak-1.48.04-source.zip
+cd espeak-1.48.04-source
+sed -i "s/PREFIX=\/usr//g" src/Makefile
+sed -i "s/DATADIR=\/usr\/share\/espeak-data/DATADIR=~\/share\/espeak-data/g" src/Makefile
+sed -i "s/AUDIO = portaudio/#AUDIO = portaudio/g" src/Makefile
+sed -i "s/-fvisibility=hidden//g" src/Makefile
+cat src/Makefile
+make -C src
+cd src
+sudo make install
+
+# http://forum.navit-project.org/viewtopic.php?f=17&t=568
+cd /tmp
+arm-linux-gcc -O2 -I$PREFIX/include -I$PREFIX/usr/include ~/navit/contrib/tomtom/espeakdsp.c -o espeakdsp
+
+
+
+# in the end we only want Navit locale
+rm -r $PREFIX/share/locale
+
+# navit
+cd ~/navit
+sed -i "s|set ( TOMTOM_SDK_DIR /opt/tomtom-sdk )|set ( TOMTOM_SDK_DIR $TOMTOM_SDK_DIR )|g" /tmp/$ARCH.cmake
+mkdir -p build
+cd build
+cmake ../ -DCMAKE_INSTALL_PREFIX=$PREFIX -DFREETYPE_INCLUDE_DIRS=$PREFIX/include/freetype2/ -Dsupport/gettext_intl=TRUE \
+-DHAVE_API_TOMTOM=TRUE -DXSLTS=tomtom -DAVOID_FLOAT=TRUE -Dmap/mg=FALSE -DUSE_PLUGINS=0 -DCMAKE_TOOLCHAIN_FILE=/tmp/$ARCH.cmake \
+-DDISABLE_QT=ON -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n
+make -j$JOBS
+make install
+cd ..
+
+
+# creating directories
+OUT_PATH="/tmp/tomtom/sdcard"
+rm -rf $OUT_PATH
+mkdir -p $OUT_PATH
+cd $OUT_PATH
+mkdir -p navit SDKRegistry
+cd navit
+mkdir -p bin lib share sdl ts
+cd share
+mkdir -p fonts
+cd ..
+
diff --git a/ci/xdotools.sh b/ci/xdotools.sh
new file mode 100644
index 000000000..36331fd9b
--- /dev/null
+++ b/ci/xdotools.sh
@@ -0,0 +1,94 @@
+sudo apt-get install xdotool
+# Use xinput test 4 when running x11vnc on the circleci server to find mouse coordinates
+
+[ -d $CIRCLE_ARTIFACTS/frames/ ] || mkdir $CIRCLE_ARTIFACTS/frames/
+
+event=0
+
+send_event (){
+ file=`printf "%05d\n" $event`
+
+ import -window root $CIRCLE_ARTIFACTS/frames/tmp.png
+ if [[ "$1" == "mousemove" ]]; then
+ composite -gravity NorthWest -geometry +$2+$3 ~/navit/ci/pointer-64.png $CIRCLE_ARTIFACTS/frames/tmp.png $CIRCLE_ARTIFACTS/frames/${file}.png
+ else
+ mv $CIRCLE_ARTIFACTS/frames/tmp.png $CIRCLE_ARTIFACTS/frames/${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 $CIRCLE_ARTIFACTS/frames/${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 $CIRCLE_ARTIFACTS/frames/*.png $CIRCLE_ARTIFACTS/town_search.gif
diff --git a/circle.yml b/circle.yml
index d00c9f624..9321c75b1 100644
--- a/circle.yml
+++ b/circle.yml
@@ -6,7 +6,6 @@ dependencies:
- ~/.android
- ~/android
- "~/assets/"
- - ~/tomtom_assets
pre:
- "[ -d ~/assets ] || mkdir ~/assets"
- "[ -d ~/android ] || mkdir ~/android"
@@ -30,23 +29,12 @@ test:
parallel: true
files:
- ci/build_*.sh
- post:
- - sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml:
- pwd: bin/navit/
- - sed -i -e 's@name="Demo" profilename="car" enabled="no" active="yes"@name="Demo" profilename="car" enabled="yes" active="yes" follow="1" refresh="1"@' navit.xml:
- pwd: bin/navit/
- - sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml:
- pwd: bin/navit/
- - sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml:
- pwd: bin/navit/
- - ./navit:
- pwd: bin/navit/
- background: true
- - sleep 5
- - import -window root $CIRCLE_ARTIFACTS/default.png
- - python 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
deployment:
+ publish_to_playstore:
+ branch: master
+ owner: navit-gps
+ commands:
+ - bash ci/publish.sh
merge_into_master:
branch: trunk
owner: navit-gps
@@ -58,6 +46,3 @@ deployment:
owner: navit-gps
commands:
- bash ci/merge_i18n_update.sh
-notify:
- webhooks:
- - url: http://62.210.125.30:8000/
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 67eca74c1..000000000
--- a/configure.in
+++ /dev/null
@@ -1,1336 +0,0 @@
-AC_INIT(navit, 0.5.0)
-AC_CONFIG_MACRO_DIR([m4])
-SOURCE_MODE=svn
-
-AM_INIT_AUTOMAKE
-AM_CONFIG_HEADER(config.h)
-
-AC_SUBST(SOURCE_MODE)
-AM_CONDITIONAL(SOURCE_MODE_SVN, [test "x${SOURCE_MODE}" = "xsvn"])
-
-if test "x${SOURCE_MODE}" = "xsvn" ; then
- USE_MAINTAINER_MODE=yes
-else
- USE_MAINTAINER_MODE=no
-fi
-
-AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is enabled by default (reason of inclusion of this function)
- AC_ARG_ENABLE(maintainer-mode,
-[ --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- USE_MAINTAINER_MODE=$enableval)
- AC_MSG_RESULT([$USE_MAINTAINER_MODE])
- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
- MAINT=$MAINTAINER_MODE_TRUE
- AC_SUBST(MAINT)dnl
-]
-)
-
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
-AM_MAINTAINER_MODE
-
-
-plugins=yes; plugins_reason=default
-postgresql=yes; postgresql_reason=default
-samplemap=yes; samplemap_reason=default
-binding_dbus=yes; binding_dbus_reason=default
-binding_dbus_use_system_bus=no
-binding_python=yes; binding_python_reason=default
-binding_win32=no; binding_win32_reason=default
-font_freetype=yes; font_freetype_reason=default
-fontconfig=yes; fontconfig_reason=default
-fribidi=yes; fribidi_reason=default
-gui_gtk=no; gui_gtk_reason=default
-gui_win32=no; gui_win32_reason=default
-gui_internal=yes; gui_internal_reason=default
-gui_qml=no; gui_qml_reason=default
-graphics=yes; graphics_reason=default
-graphics_gd=no; graphics_gd_reason=default
-graphics_gtk_drawing_area=no; graphics_gtk_drawing_area_reason=default
-graphics_qt_qpainter=yes; graphics_qt_qpainter_reason=default
-graphics_null=yes; graphics_null_reason=default
-graphics_opengl=yes; graphics_opengl_reason=default
-graphics_sdl=yes; graphics_sdl_reason=default
-graphics_win32=no; graphics_win32_reason=default
-maptool=yes; maptool_reason=default
-map_binfile=yes; map_binfile_reason=default
-map_filter=yes; map_filter_reason=default
-map_mg=yes; map_mg_reason=default
-map_shapefile=yes; map_shapefile_reason=default
-map_textfile=yes; map_textfile_reason=default
-map_csv=yes; map_csv_reason=default
-osd_core=yes; osd_core_reason=default
-plugin_pedestrian=no; plugin_pedestrian_reason=default
-routing=yes; routing_reason=default
-speech_android=no; speech_android_reason=default
-speech_cmdline=yes; speech_cmdline_reason=default
-speech_dbus=no; speech_dbus_reason=default
-speech_espeak=no; speech_espeak_reason=default
-speech_speech_dispatcher=yes; speech_speech_dispatcher_reason=default
-vehicle_demo=yes; vehicle_demo_reason=default
-vehicle_file=yes; vehicle_file_reason=default
-vehicle_gpsd=yes; vehicle_gpsd_reason=default
-vehicle_gpsd_dbus=no; vehicle_gpsd_dbus_reason=default
-vehicle_gypsy=yes; vehicle_gypsy_reason=default
-vehicle_null=no; vehicle_null_reason=default
-vehicle_wince=no; vehicle_wince_reason=default
-vehicle_iphone=no; vehicle_iphone_reason=default
-vehicle_android=no; vehicle_android_reason=default
-graphics_android=no; graphics_android_reason=default
-vehicle_maemo=no; vehicle_maemo_reason=default
-vehicle_webos=no; vehicle_webos_reason=default
-
-shared_libnavit=no
-LIBNAVIT=navit
-bin_navit=yes
-
-AC_CANONICAL_HOST
-win32=no
-win32ce=no
-case $host_os in
-wince|mingw32ce|cegcc)
- win32=yes
- win32ce=yes
- AC_DEFINE(HAVE_API_WIN32_BASE, 1, [Have Windows Base API])
- AC_DEFINE(HAVE_API_WIN32_CE, 1, [Have Windows CE API])
- AC_DEFINE(HAVE_PRAGMA_PACK, 1, [Have pragma pack])
- binding_win32=yes; binding_win32_reason="host_os is wince"
- gui_win32=yes; gui_win32_reason="host_os is wince"
- graphics_win32=yes; graphics_win32_reason="host_os is wince"
- vehicle_wince=yes; vehcile_wince_reason="host_os is wince"
- speech_espeak=yes; speech_espeak_reason="host_os is wince"
- support_libpng=yes
- maptool=no; maptool_reason="host_os is wince"
- ;;
-mingw32)
- win32=yes
- AC_DEFINE(HAVE_API_WIN32_BASE, 1, [Have Windows Base API])
- AC_DEFINE(HAVE_API_WIN32, 1, [Have Windows API])
- binding_win32=yes; binding_win32_reason="host_os is mingw32"
- gui_win32=yes; gui_win32_reason="host_os is mingw32"
- graphics_win32=yes; graphics_win32_reason="host_os is mingw32"
- speech_espeak=yes; speech_espeak_reason="host_os is mingw32"
- support_libpng=yes
- ;;
-linux*_android)
- android=yes
- shared_libnavit=yes
- bin_navit=no
- AC_DEFINE(HAVE_API_ANDROID, 1, [Have Android API])
- echo "void dl_unwind_find_exidx(void) {}" >crt0.c
- $CC -c crt0.c
- $AR r libg.a crt0.o
- vehicle_android=yes; vehicle_android_reason="host_os is android"
- graphics_android=yes; graphics_android_reason="host_os is android"
- speech_android=yes; speech_android_reason="host_os is android"
- MODULE_LDFLAGS="-module -Xcompiler -nostdlib -Xcompiler -Wl,-rpath -Xcompiler -Wl,/data/data/org.navitproject.navit/lib"
- MODULE_LIBADD="-llog"
- LIBNAVIT=_data_data_org.navitproject.navit_lib_navit
- NAVIT_MODULE_LDFLAGS="$MODULE_LDFLAGS -L\$(top_builddir)/navit -l$LIBNAVIT"
- ;;
-esac
-if test "x$win32" = "xyes"
-then
- NAVIT_CFLAGS="$NAVIT_CFLAGS -I\$(top_srcdir)/navit/support/win32"
- NAVIT_LIBS="$NAVIT_LIBS -L\$(top_builddir)/navit/support/win32 -lsupport_win32"
- NAVIT_SOCKET_LDFLAGS="$MODULE_LDFLAGS -lws2_32"
-fi
-
-
-AM_CONDITIONAL(SUPPORT_WIN32, [test "x$win32" = "xyes"])
-AM_CONDITIONAL(SUPPORT_WIN32CE, [test "x$win32ce" = "xyes"])
-AM_CONDITIONAL(SUPPORT_ANDROID, [test "x$android" = "xyes"])
-
-if test "x$support_libpng" = "xyes"
-then
- NAVIT_CFLAGS="$NAVIT_CFLAGS -I\$(top_srcdir)/navit/support/libpng"
- NAVIT_LIBS="$NAVIT_LIBS -L\$(top_builddir)/navit/support/libpng -lsupport_libpng"
-fi
-AM_CONDITIONAL(SUPPORT_LIBPNG, [test "x$support_libpng" = "xyes"])
-
-AC_SUBST(MODULE_LDFLAGS)
-AC_SUBST(MODULE_LIBADD)
-AC_SUBST(NAVIT_MODULE_LDFLAGS)
-AC_SUBST(NAVIT_SOCKET_LDFLAGS)
-
-LIBS="$LIBS -lm"
-if test "$win32" == "no" -a test "$host_os" != "cygwin"; then
- LIBS="$LIBS -rdynamic"
-fi
-
-m4_ifndef([AC_USE_SYSTEM_EXTENSIONS],
- [AC_DEFUN([AC_USE_SYSTEM_EXTENSIONS], [AC_GNU_SOURCE])])
-
-AC_USE_SYSTEM_EXTENSIONS
-
-m4_ifdef([AC_PROG_OBJC],[AC_PROG_OBJC])
-AC_PROG_CC
-m4_ifdef([AC_PROG_OBJC],[AC_PROG_OBJC],[AC_SUBST([OBJC],["$CC"])
-AC_SUBST([OBJCFLAGS],["$CFLAGS"])])
-m4_ifndef([AC_PROG_OBJC],[_AM_DEPENDENCIES(OBJC)])
-
-if eval "test x`uname` = xDarwin"; then
- CFLAGS="$CFLAGS -I/opt/local/include -L/opt/local/lib"
-fi
-if eval "test x$GCC = xyes"; then
- CFLAGS="$CFLAGS -Wall -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wreturn-type -D_GNU_SOURCE"
-fi
-AM_PROG_CC_C_O
-
-AC_PROG_CXX
-if eval "test x$GXX = xyes"; then
- CXXFLAGS="$CXXFLAGS -Wall -Wcast-align -Wpointer-arith -Wreturn-type -D_GNU_SOURCE"
-fi
-
-PKG_CHECK_EXISTS
-if test "x${cross_compiling}" = "xyes"; then
- samplemap="no";samplemap_reason="not supported for cross compiling"
- binding_python="no";binding_python_reason="not supported for cross compiling"
- postgresql="no";postgresql_reason="not supported for cross compiling"
- AC_MSG_CHECKING([for a C compiler for build tools])
- AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
-else
- CC_FOR_BUILD=$CC
-fi
-CCLD_FOR_BUILD="$CC_FOR_BUILD"
-AC_SUBST(cross_compiling)
-AM_CONDITIONAL(CROSS_COMPILING, test "x${cross_compiling}" = "xyes")
-AC_SUBST(CC_FOR_BUILD)
-AC_SUBST(CCLD_FOR_BUILD)
-
-# Endianness
-# defines WORDS_BIGENDIAN for big-endian systems
-AC_C_BIGENDIAN
-
-AC_ARG_ENABLE(variant, [ --enable-variant=something set variant], NAVIT_VARIANT=$enableval)
-AC_SUBST(NAVIT_VARIANT)
-
-AC_ARG_ENABLE(cache-size, [ --enable-cache-size=size in bytes set cache size], AC_DEFINE_UNQUOTED(CACHE_SIZE,[${enableval}], [Size of Cache in Bytes]),AC_DEFINE(CACHE_SIZE,[1048576], [Size of Cache in Bytes]))
-
-AC_ARG_ENABLE(avoid-unaligned, [ --enable-avoid-unaligned avoid unaligned accesses], AVOID_UNALIGNED=$enableval, AVOID_UNALIGNED=no)
-test x"${AVOID_UNALIGNED}" = xyes && AC_DEFINE(AVOID_UNALIGNED,[],Define to avoid unaligned access)
-
-AC_ARG_ENABLE(avoid-float, [ --enable-avoid-float avoid floating point calculations], AVOID_FLOAT=$enableval, AVOID_FLOAT=no)
-test x"${AVOID_FLOAT}" = xyes && AC_DEFINE(AVOID_FLOAT,[],Define to avoid floating point)
-
-AC_ARG_ENABLE(transformation-roll, [ --enable-transformation-roll add support for specifying roll angle in transformation], ENABLE_ROLL=$enableval, ENABLE_ROLL=no)
-test x"${ENABLE_ROLL}" = xyes && AC_DEFINE(ENABLE_ROLL,[],Define to add support for specifying roll angle in transformation)
-
-AC_ARG_ENABLE(hildon, [ --disable-hildon build without maemo/hildon support], enable_hildon=$enableval, enable_hildon=yes)
-if test "x${enable_hildon}" = "xyes" ; then
- PKG_CHECK_MODULES(HILDON, hildon-1 >= 0.9.9, , [
- AC_MSG_RESULT(no)
- enable_hildon=no
- ])
- PKG_CHECK_MODULES(GPSBT, gpsbt, [
- AC_DEFINE(HAVE_GPSBT, 1, [Have the gpsbt library])
- AC_SUBST(GPSBT_CFLAGS)
- AC_SUBST(GPSBT_LIBS)
- ], [
- AC_MSG_RESULT(no)
- ])
- if test x"${enable_hildon}" = xyes ; then
- AC_DEFINE(USE_HILDON, 1, [Build with maemo/hildon support])
- AC_SUBST(HILDON_CFLAGS)
- AC_SUBST(HILDON_LIBS)
- fi
-fi
-AM_CONDITIONAL(USE_HILDON, test "${enable_hildon}" = "xyes")
-
-AC_ARG_ENABLE(osso, [ --disable-osso build without maemo/osso support], enable_osso=$enableval, enable_osso=yes)
-if test "x${enable_osso}" = "xyes" ; then
- PKG_CHECK_MODULES(LIBOSSO, libosso, , [
- AC_MSG_RESULT(no)
- enable_osso=no
- ])
- if test x"${enable_osso}" = xyes ; then
- AC_DEFINE(USE_OSSO, 1, [Build with maemo/osso support])
- AC_SUBST(LIBOSSO_CFLAGS)
- AC_SUBST(LIBOSSO_LIBS)
- fi
-fi
-echo ${enable_osso}
-AM_CONDITIONAL(USE_OSSO, test "x${enable_osso}" = "xyes")
-
-AC_ARG_ENABLE(garmin, [ --disable-garmin disable garmin support], USE_GARMIN=$enableval, USE_GARMIN=yes)
-
-# samplemap
-AC_PATH_PROG(_PATH_BZCAT,[bzcat])
-if test "x${_PATH_BZCAT}" = "x" ; then
- samplemap=no; samplemap_reason="bzcat missing"
-fi
-AC_ARG_ENABLE(maptool, [ --disable-maptool don't build maptool], maptool=$enableval;maptool_reason="configure parameter")
-AM_CONDITIONAL(MAPTOOL, [test "x$maptool" = "xyes"])
-if test "x$maptool" != "xyes"; then
- samplemap=no; samplemap_reason="maptool disabled"
-fi
-AC_ARG_ENABLE(samplemap, [ --disable-samplemap don't build the samplemap], samplemap=$enableval;samplemap_reason="configure parameter")
-AM_CONDITIONAL(BUILD_SAMPLEMAP, [test "x$samplemap" = "xyes"])
-
-AC_ARG_ENABLE(fastmath, [ --disable-fastmath don't build with fastmath], fastmath=$enableval, fastmath=yes)
-AM_CONDITIONAL(FASTMATH, [test "x$fastmath" = "xyes"])
-
-if test x"$fastmath" = xyes; then
- if eval "test x$GCC = xyes"; then
- CFLAGS="$CFLAGS -ffast-math"
- fi
-fi
-
-X_CFLAGS="-I$x_includes"
-AS_IF([test -n "$ac_x_libraries"], [X_LIBS="-L$ac_x_libraries"])
-
-# glib
-AC_ARG_ENABLE(glib, [ --disable-glib don't build with external glib], glib=$enableval, glib=yes)
-if test "x${glib}" = "xyes" -a "x${GLIB_CFLAGS}" = "x" -a "x${GLIB_LIBS}" = "x"; then
- PKG_CHECK_MODULES(GLIB, [glib-2.0 gthread-2.0], [glib=yes],[glib=no])
-fi
-if test "x${glib}" = "xyes"; then
- AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if you have (external) glib library])
-else
- GLIB_CFLAGS="-I\$(top_srcdir)/navit/support -I\$(top_srcdir)/navit/support/glib -I\$(top_srcdir)/navit/support/ezxml"
- GLIB_LIBS="-L\$(top_builddir)/navit/support/glib -lsupport_glib -L\$(top_builddir)/navit/support/ezxml -lsupport_ezxml"
- if test "x${win32}" != "xyes" -a "x${android}" != "xyes"; then
- GLIB_LIBS="$GLIB_LIBS -lpthread"
- fi
-fi
-
-# gmodule
-AC_ARG_ENABLE(gmodule, [ --disable-gmodule don't build with gmodule], gmodule=$enableval, gmodule=yes)
-if test x"${gmodule}" = "xyes"; then
- PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule=yes], [gmodule=no])
-fi
-if test "x${gmodule}" = "xyes"; then
- AC_DEFINE(HAVE_GMODULE, 1, [Define to 1 if you have gmodule])
-else
- AC_CHECK_LIB(dl, dlopen,
- [plugins_reason="default, via dlopen";GMODULE_LIBS="-ldl";AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if you have dlopen])],
- [plugins="no"; plugins_reason="package gmodule and dlopen missing"]
- )
-fi
-
-# libcrypto
-AC_CHECK_LIB(crypto, AES_encrypt, [CRYPTO_LIBS="-lcrypto";AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have libcrypto])])
-AC_SUBST(CRYPTO_LIBS)
-
-# plugins
-AC_ARG_ENABLE(plugins, [ --disable-plugins disable plugins], [ plugins=$enableval;plugin_reason="configure parameter" ])
-AC_ARG_ENABLE(shared-libnavit, [ --enable-shared-libnavit], [ shared_libnavit=$enableval])
-if test "x${plugins}" = "xyes"; then
- AC_ENABLE_SHARED
- AC_DISABLE_STATIC
- AC_DEFINE(
- [USE_PLUGINS],
- [],
- Define to 1 if you have plugins.
- )
- if test "x${win32}" = "xyes"; then
- shared_libnavit=yes
- NAVIT_MODULE_LDFLAGS="-no-undefined -L\$(top_builddir)/navit -l$LIBNAVIT -L\$(top_builddir)/intl -lintl"
- fi
-else
- if test "x${shared_libnavit}" = "xyes"; then
- AC_ENABLE_SHARED
- AC_DISABLE_STATIC
- else
- AC_DISABLE_SHARED
- AC_ENABLE_STATIC
- fi
-fi
-AM_CONDITIONAL(PLUGINS, [test "x$plugins" = "xyes"])
-AM_CONDITIONAL(SHARED_LIBNAVIT, [test "x$shared_libnavit" = "xyes"])
-AM_CONDITIONAL(BIN_NAVIT, [test "x$bin_navit" = "xyes"])
-AC_PROG_LIBTOOL
-AC_SUBST(LIBNAVIT)
-
-AM_CONDITIONAL(EVENT_GLIB, [test "x$glib" = "xyes"])
-AM_CONDITIONAL(SUPPORT_GLIB, [test "x$glib" = "xno"])
-AM_CONDITIONAL(SUPPORT_EZXML, [test "x$glib" = "xno"])
-
-AC_CHECK_HEADER([sys/time.h],
- [AC_DEFINE(
- [HAVE_SYS_TIME_H],
- [1],
- [Define to 1 if you have the <sys/time.h> header file.])
- ])
-
-if test "x${ZLIB_CFLAGS}" = "x" -a "x${ZLIB_LIBS}" = "x"; then
-AC_CHECK_HEADER(
- zlib.h,
- AC_DEFINE(
- [HAVE_ZLIB],
- [],
- Define to 1 if you have the <zlib.h> header file.
- )
- ZLIB_LIBS="-lz"
- zlib=yes,
- ZLIB_CFLAGS="-I\$(top_srcdir)/navit/support/zlib"
- ZLIB_LIBS="-L\$(top_builddir)/navit/support/zlib -lsupport_zlib"
- zlib=no
-)
-else
- zlib=yes
-fi
-AM_CONDITIONAL(SUPPORT_ZLIB, [test "x$zlib" = "xno"])
-AC_SUBST(ZLIB_CFLAGS)
-AC_SUBST(ZLIB_LIBS)
-
-AC_CHECK_HEADER(sys/socket.h, AC_DEFINE([HAVE_SOCKET],[],Define to 1 if you have sockets))
-AC_CHECK_HEADER(winsock2.h, AC_DEFINE([HAVE_WINSOCK],[],Define to 1 if you have Windows sockets))
-
-# gtk
-PKG_CHECK_MODULES(GTK2, [gtk+-2.0], [gtk2_pkgconfig=yes], [gtk2_pkgconfig=no])
-if test "x$gtk2_pkgconfig" = "xyes"; then
- AC_DEFINE(HAVE_GTK2, 1, [Define to 1 if you have gtk2])
- graphics_gtk_drawing_area=yes; graphics_gtk_drawing_area_reason="gtk+-2.0 present"
- gui_gtk=yes; gui_gtk_reason="gtk+-2.0 present"
-fi
-
-# fsync
-AC_MSG_CHECKING(for fsync)
-AC_TRY_LINK([#include <unistd.h>], [fsync(0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_FSYNC, 1, [Define to 1 if you have the `fsync' function.]),AC_MSG_RESULT(no))
-
-# system
-AC_MSG_CHECKING(for system)
-AC_TRY_LINK([#include <stdlib.h>], [system("/bin/true");],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_SYSTEM, 1, [Define to 1 if you have the `system' function.]),speech_cmdline=no; speech_cmdline_reason="not supported without system()"; AC_MSG_RESULT(no))
-
-AC_MSG_CHECKING(for CreateProcess)
-AC_TRY_LINK([#include <windows.h>], [CreateProcess(NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_CREATEPROCESS, 1, [Define to 1 if you have the `CreateProcess' function.]) speech_cmdline=yes; speech_cmdline_reason="CreateProcess exists", AC_MSG_RESULT(no))
-
-# sbrk
-AC_MSG_CHECKING(for sbrk)
-AC_TRY_LINK([#include <unistd.h>], [sbrk(0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_SBRK, 1, [Define to 1 if you have the `sbrk' function.]),AC_MSG_RESULT(no))
-
-
-AC_ARG_ENABLE(graphics-sdl, [ --disable-graphics-sdl don't create graphics sdl], graphics_sdl=$enableval;graphics_sdl_reason="configure parameter")
-
-if test "x${graphics_sdl}" = "xyes" ; then
- PKG_CHECK_MODULES(SDL,
- [sdl],
- [graphics_sdl="yes"
- graphics_sdl_reason="sdl present"] ,
- [graphics_sdl="no"
- graphics_sdl_reason="sdl not available"]
- )
- AC_SUBST(SDL_CFLAGS)
- AC_SUBST(SDL_LIBS)
-fi
-if test "x${graphics_sdl}" = "xyes" ; then
- save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$SDL_CFLAGS $CPPFLAGS"
- AC_CHECK_HEADER(SDL_image.h,SDL_IMAGE_LIBS=-lSDL_image,graphics_sdl="no";graphics_sdl_reason="SDL_image.h missing")
- AC_SUBST(SDL_IMAGE_LIBS)
- CPPFLAGS=$save_CPPFLAGS
-fi
-if test "x${graphics_sdl}" = "xyes" ; then
- AC_DEFINE(GRAPHICS_SDL, 1, [Build with graphics sdl])
-fi
-AM_CONDITIONAL(GRAPHICS_SDL, test "x${graphics_sdl}" = "xyes")
-
-AC_ARG_ENABLE(postgresql, [ --disable-postgresql don't add postgresql support to maptool], postgresql=$enableval;postgresql_reason="configure parameter")
-if test "x${postgresql}" = "xyes" ; then
- if test -z "$PG_CONFIG"; then
- AC_PATH_PROG([PG_CONFIG], [pg_config], [])
- fi
- AC_MSG_CHECKING([for PostgreSQL libraries with $PG_CONFIG])
- if test ! -x "$PG_CONFIG"; then
- if test "x${PG_CONFIG}" = "x" ; then
- postgresql_reason="$PG_CONFIG not executable"
- else
- postgresql_reason="pg_config missing"
- fi
- postgresql=no
- AC_MSG_RESULT([no])
- else
- POSTGRESQL_CFLAGS="-I`$PG_CONFIG --includedir`"
- POSTGRESQL_LIBS="-L`$PG_CONFIG --libdir` -lpq"
- AC_DEFINE(HAVE_POSTGRESQL, 1, [Postgresql libraries available])
- AC_SUBST(POSTGRESQL_CFLAGS)
- AC_SUBST(POSTGRESQL_LIBS)
- AC_MSG_RESULT([yes])
- fi
-fi
-AM_CONDITIONAL(HAVE_POSTGRESQL, test "x${postgresql}" = "xyes")
-# font
-# freetype
-AC_ARG_ENABLE(font-freetype, [ --disable-font-freetype don't add freetype support], font_freetype=$enableval;font_freetype_reason="configure parameter")
-if test "x${font_freetype}" = "xyes" -a "x${FREETYPE2_CFLAGS}" = "x" -a "x${FREETYPE2_LIBS}" = "x"; then
- PKG_CHECK_MODULES(FREETYPE2, [freetype2], , [font_freetype=no;font_freetype_reason="Package freetype2 missing"])
-else
- fribidi=no
-fi
-AC_SUBST(FREETYPE2_CFLAGS)
-AC_SUBST(FREETYPE2_LIBS)
-AM_CONDITIONAL(FONT_FREETYPE, test "x${font_freetype}" = "xyes")
-AC_ARG_WITH(freetype-fonts, [ --with-freetype-fonts specify what fonts to use], AC_DEFINE_UNQUOTED(FREETYPE_FONTS,[${withval}],[Freetype fonts to use]))
-
-AC_ARG_ENABLE(fontconfig, [ --disable-fontconfig don't' add fontconfig support], fontconfig=$enableval;fontconfig_reason="configure parameter")
-if test "x${fontconfig}" = "xyes"; then
- PKG_CHECK_MODULES(FONTCONFIG, [fontconfig], [fontconfig=yes], [fontconfig=no])
-fi
-if test "x$fontconfig" = "xyes"; then
- AC_DEFINE(HAVE_FONTCONFIG, 1, [Define to 1 if you have fontconfig])
-fi
-AC_SUBST(FONTCONFIG_CFLAGS)
-AC_SUBST(FONTCONFIG_LIBS)
-
-AM_CONDITIONAL(FONTS, test "x${font_freetype}" = "xyes" -a "x$fontconfig" != "xyes")
-
-# fribidi
-AC_ARG_ENABLE(fribidi, [ --disable-fribidi dont build with fribidi], fribidi=$enableval;fribidi_reason="configure parameter", fribidi=yes)
-if test x"${fribidi}" = "xyes"; then
- PKG_CHECK_MODULES(FRIBIDI2, [fribidi >= 0.19.0], [fribidi=yes;oldfribidi=no],
- [ PKG_CHECK_MODULES([FRIBIDI], [fribidi],
- [fribidi=yes;oldfribidi=yes;fribid_reason="using old version"], [fribidi=no;fribidi_reason="FriBidi library not found"])
- ])
-fi
-if test x"${fribidi}" = "xyes"; then
- AC_DEFINE(USE_FRIBIDI, 1, [Build with fribidi support])
-fi
-if test x"${oldfribidi}" = "xyes"; then
- AC_DEFINE(FRIBIDIOLD, 1, [Build with fribidi support for older versions of fribidi])
-fi
-
-AC_SUBST(FRIBIDI2_CFLAGS)
-AC_SUBST(FRIBIDI2_LIBS)
-AC_SUBST(FRIBIDI_CFLAGS)
-AC_SUBST(FRIBIDI_LIBS)
-
-PKG_CHECK_MODULES(IMLIB2, [imlib2], [imlib2_pkgconfig=yes], [imlib2_pkgconfig=no])
-if test "x$imlib2_pkgconfig" = "xyes"; then
- AC_DEFINE(HAVE_IMLIB2, 1, [Define to 1 if you have imlib2])
-fi
-AC_SUBST(IMLIB2_CFLAGS)
-AC_SUBST(IMLIB2_LIBS)
-
-AC_ARG_ENABLE(graphics-opengl, [ --disable-graphics-opengl disable graphics type OpenGL], graphics_opengl=$enableval;graphics_opengl_reason="configure parameter")
-if test "x${graphics_opengl}" = "xyes" ; then
-
-AC_CHECK_HEADER(
- GL/gl.h,
- AC_DEFINE(
- [HAVE_OPENGL],
- [],
- Define to 1 if you have the <GL/gl.h> header file.
- )
- OPENGL_LIBS="$X_LIBS -lGL -lglut -lfreeimage"
- opengl=yes,
- AC_MSG_WARN([*** no GL/gl.h -- opengl graphics support disabled];graphics_opengl=no;graphics_opengl_reason="GL/gl.h header missing")
-)
-
-AC_CHECK_HEADER(
- GL/glut.h,
- AC_DEFINE(
- [HAVE_GLUT],
- [],
- Define to 1 if you have the <GL/glut.h> header file.
- )
- glut=yes,
- AC_MSG_WARN([*** no GL/glut.h -- opengl graphics support disabled]);graphics_opengl=no;graphics_opengl_reason="GL/glut.h header missing"
-)
-
-AC_CHECK_HEADER(
- GL/freeglut.h,
- AC_DEFINE(
- [HAVE_FREEGLUT],
- [],
- Define to 1 if you have the <GL/freeglut.h> header file.
- )
- freeglut=yes,
- AC_MSG_WARN([*** no GL/freeglut.h -- opengl support disabled]);graphics_opengl=no;graphics_opengl_reason="Headers missing"
-)
-
-AC_SUBST(OPENGL_CFLAGS)
-AC_SUBST(OPENGL_LIBS)
-
-AC_CHECK_HEADER(
- GL/glc.h,
- AC_DEFINE(
- [HAVE_GLC],
- [],
- Define to 1 if you have the <GL/glc.h> header file.
- )
- GLC_LIBS="-lGLC"
- glc=yes,
- AC_MSG_WARN([*** no GL/glc.h -- opengl graphics support disabled]);graphics_opengl=no;graphics_opengl_reason="GL/glc.h header missing"
-)
-AC_CHECK_HEADER(
- FreeImage.h,
- AC_DEFINE(
- [HAVE_FREEIMAGE],
- [1],
- Define to 1 if you have the <FreeImage.h> header file.
- )
- FREEIMAGE_LIBS="-lfreeimage"
- freeimage=yes,
- AC_MSG_WARN([*** no FreeImage.h -- opengl support disabled]);graphics_opengl=no;graphics_opengl_reason="Headers missing"
-)
-AC_SUBST(FREEIMAGE_LIBS)
-AC_SUBST(GLC_CFLAGS)
-AC_SUBST(GLC_LIBS)
-fi
-
-AM_CONDITIONAL(GRAPHICS_OPENGL, [test "x$glut" = "xyes" -a "x$freeglut" = "xyes" -a "x$opengl" = "xyes" -a "x$freeimage" = "xyes" -a "x$glc" = "xyes" ])
-
-
-system_shapefile=no
-if test x"${map_shapefile}" = xyes
-then
-AC_CHECK_HEADERS(
- [shapefil.h libshp/shapefil.h],
- [AC_DEFINE(
- [HAVE_SYS_SHAPEFILELIB],
- [1],
- Define to 1 if you have the <shapefil.h> header file.
- )],
- [SHAPEFILE_CFLAGS="-I\$(top_srcdir)/navit/support/shapefile"]
- )
-
-AC_CHECK_LIB(
- [shp],
- [DBFDeleteField],
- [SHAPEFILE_LIBS="-lshp"
- system_shapefile=yes],
- [SHAPEFILE_LIBS="-L\$(top_builddir)/navit/support/shapefile -lsupport_shapefile"
- system_shapefile=no]
- )
-
-if test x"${system_shapefile}" = xno
-then
- AC_MSG_WARN([*** The shapefile library(libshp) from the system is to old or not found! -- using included copy])
-fi
-
-fi
-AC_SUBST(SHAPEFILE_CFLAGS)
-AC_SUBST(SHAPEFILE_LIBS)
-AM_CONDITIONAL(HAVE_SYSTEM_SHAPEFILELIB, [test "x$system_shapefile" = "xyes" ])
-
-if test x"${USE_GARMIN}" = xyes
-then
- # check for libgarmin
- PKG_CHECK_MODULES(LIBGARMIN, libgarmin, use_libgarmin=yes, use_libgarmin=no)
- AC_SUBST(LIBGARMIN_CFLAGS)
- AC_SUBST(LIBGARMIN_LIBS)
-fi
- AM_CONDITIONAL(HAVELIBGARMIN, [test "x$use_libgarmin" = "xyes"])
-
-## binding
-# python
-AC_ARG_ENABLE(binding-python, [ --disable-binding-python don't create binding python], binding_python=$enableval;binding_python_reason="configure parameter")
-if test "x${binding_python}" = "xyes"; then
- AC_PATH_PROG(_PATH_PYTHON,[python])
- dnl Libraries and flags for embedded Python.
- dnl FIXME: I wish there was a less icky way to get this.
- if test "x${_PATH_PYTHON}" != "x" ; then
- AC_MSG_CHECKING(for Python linkage)
- AC_PATH_PROG([PYTHONCONFIG], [python-config], [])
- if test "x${PYTHONCONFIG}" = "x" ; then
- py_prefix=`$_PATH_PYTHON -c 'import sys; print sys.prefix'`
- py_ver=`$_PATH_PYTHON -c 'import sys; print sys.version[[:3]]'`
- py_lib=`$_PATH_PYTHON -c 'import sys; print sys.lib'`
- py_libdir="${py_prefix}/${py_lib}/python${py_ver}"
- PYTHON_CFLAGS="-I${py_prefix}/include/python${py_ver}"
- if test -f $py_libdir/config/Makefile -a -f $py_prefix/include/python${py_ver}/Python.h; then
- py_libs=`grep '^LIBS=' $py_libdir/config/Makefile | sed -e 's/^.*=//'`
- py_libc=`grep '^LIBC=' $py_libdir/config/Makefile | sed -e 's/^.*=//'`
- py_libm=`grep '^LIBM=' $py_libdir/config/Makefile | sed -e 's/^.*=//'`
- py_liblocalmod=`grep '^LOCALMODLIBS=' $py_libdir/config/Makefile | sed -e 's/^.*=//'`
- py_libbasemod=`grep '^BASEMODLIBS=' $py_libdir/config/Makefile | sed -e 's/^.*=//'`
- PYTHON_LIBS="-L$py_libdir/config $py_libs $py_libc $py_libm -lpython$py_ver $py_liblocalmod $py_libbasemod"
- PYTHON_LIBS=`echo $PYTHON_LIBS | sed -e 's/[ \\t]*/ /g'`
- AC_MSG_RESULT($py_libdir)
- else
- binding_python="no"
- binding_python_reason="$py_libdir/config/Makefile or $py_prefix/include/python${py_ver}/Python.h missing"
- fi
-
- else
- PYTHON_CFLAGS="`${PYTHONCONFIG} --cflags`"
- PYTHON_LIBS="`${PYTHONCONFIG} --ldflags`"
- fi
- else
- binding_python="no"
- binding_python_reason="python executable missing"
- fi
-fi
-if test "x${binding_python}" = xyes ; then
- AC_DEFINE(USE_BINDING_PYTHON, 1, [Build with binding python])
-fi
-AC_SUBST(PYTHON_CFLAGS)
-AC_SUBST(PYTHON_LIBS)
-AM_CONDITIONAL(BINDING_PYTHON, test "x${binding_python}" = "xyes")
-
-# dbus
-AC_ARG_ENABLE(binding-dbus, [ --disable-binding-dbus don't create binding dbus], binding_dbus=$enableval;binding_dbus_reason="configure parameter")
-AC_ARG_ENABLE(binding-dbus-use-system-bus, [ --enable-binding-dbus-use-system-bus use system bus for dbus binding], binding_dbus_use_system_bus=$enableval)
-if test "x${binding_dbus}" = "xyes" ; then
- PKG_CHECK_MODULES(DBUS, [dbus-glib-1], ,binding_dbus=no)
-fi
-if test "x${binding_dbus}" = "xyes" ; then
- AC_DEFINE(USE_BINDING_DBUS, 1, [Build with binding dbus])
- vehicle_gpsd_dbus="yes"
- vehicle_gpsd_dbus_reason="dbus binding present"
- speech_dbus="yes"
- speech_dbus_reason="dbus binding present"
-fi
-if test "x${binding_dbus_use_system_bus}" = "xyes" ; then
- AC_DEFINE(DBUS_USE_SYSTEM_BUS, 1, [Use system bus instead of session bus for binding dbus])
-fi
-AC_SUBST(DBUS_CFLAGS)
-AC_SUBST(DBUS_LIBS)
-AM_CONDITIONAL(BINDING_DBUS, test "x${binding_dbus}" = "xyes")
-AM_CONDITIONAL(VEHICLE_GPSD_DBUS, test "x${vehicle_gpsd_dbus}" = "xyes")
-AM_CONDITIONAL(SPEECH_DBUS, test "x${speech_dbus}" = "xyes")
-AC_ARG_WITH(dbus-service-dir, [ --with-dbus-service-dir specify where the dbus service dir resides], DBUS_SERVICE_DIR=$withval, DBUS_SERVICE_DIR="$datarootdir/dbus-1/services")
-AC_SUBST(DBUS_SERVICE_DIR)
-
-# win32 binding
-AC_ARG_ENABLE(binding-win32, [ --disable-binding-win32 don't create binding win32], binding_win32=$enableval;binding_win32_reason="configure parameter")
-if test "x${binding_win32}" = "xyes" ; then
- AC_DEFINE(USE_BINDING_WIN32, 1, [Build with binding win32])
-fi
-AM_CONDITIONAL(BINDING_WIN32, test "x${binding_win32}" = "xyes")
-
-# svg
-AC_ARG_ENABLE(svg, [ --disable-svg disable Scalable Vector Graphics], enable_svg=$enableval, enable_svg=yes)
-AC_ARG_ENABLE(svg2png, [ --disable-svg2png disable conversion of svgs to pngs], enable_svg2png=$enableval, enable_svg2png=yes)
-AC_ARG_ENABLE(svg2png-scaling, [ --enable-svg2png-scaling enable conversion of svgs to pngs with specified sizes], SVG2PNG_SCALES=$enableval, SVG2PNG_SCALES="8 16 32 48 96")
-AC_ARG_ENABLE(svg2png-scaling-flag, [ --enable-svg2png-scaling-flag enable conversion of flag svgs to pngs with specified sizes], SVG2PNG_SCALES_FLAG=$enableval, SVG2PNG_SCALES_FLAG="8 16 32 48 96")
-AC_ARG_ENABLE(svg2png-scaling-nav, [ --enable-svg2png-scaling-nav enable conversion of nav svgs to pngs with specified sizes], SVG2PNG_SCALES_NAV=$enableval, SVG2PNG_SCALES_NAV="8 16 32 48 96")
-AC_ARG_WITH(svg2png-use-convert, [ --with-svg2png-use-convert use imagemagick's convert for png creation], SVG2PNG_CONVERTER="convert")
-AC_ARG_WITH(svg2png-use-rsvg-convert, [ --with-svg2png-use-rsvg-convert use librsvg's rsvg-convert for png creation], SVG2PNG_CONVERTER="rsvg-convert")
-AC_ARG_WITH(svg2png-use-inkscape, [ --with-svg2png-use-inkscape use inkscapes internal convert routines for png creation], SVG2PNG_CONVERTER="inkscape")
-AC_ARG_WITH(svg2png-use-ksvgtopng4, [ --with-svg2png-use-ksvgtopng4 use kde4's ksvgtopng4 for png creation], SVG2PNG_CONVERTER="ksvgtopng4")
-AC_ARG_WITH(svg2png-use-ksvgtopng, [ --with-svg2png-use-ksvgtopng use kde3's convert for png creation], SVG2PNG_CONVERTER="ksvgtopng")
-if test "x${enable_svg2png}" = "xyes" ; then
- if test "x${SVG2PNG_CONVERTER}" = "x"; then
- SVG2PNG_CONVERTER="rsvg-convert ksvgtopng ksvgtopng4 inkscape convert"
- fi
- AC_PATH_PROGS([SVG2PNG], ${SVG2PNG_CONVERTER}, [none])
- if test "x${SVG2PNG}" = "xnone"; then
- enable_svg2png="no"
- fi
-fi
-AC_SUBST(SVG2PNG)
-AC_SUBST(SVG2PNG_SCALES)
-AC_SUBST(SVG2PNG_SCALES_FLAG)
-AC_SUBST(SVG2PNG_SCALES_NAV)
-AM_CONDITIONAL(USE_SVG2PNG_SCALES, test "x${SVG2PNG_SCALES}" != "xyes" -a "x${SVG2PNG_SCALES}" != "x")
-AM_CONDITIONAL(USE_SVG2PNG_SCALES_FLAG, test "x${SVG2PNG_SCALES_FLAG}" != "xyes" -a "x${SVG2PNG_SCALES_FLAG}" != "x")
-AM_CONDITIONAL(USE_SVG2PNG_SCALES_NAV, test "x${SVG2PNG_SCALES_NAV}" != "xyes" -a "x${SVG2PNG_SCALES_NAV}" != "x")
-AM_CONDITIONAL(USE_SVG2PNG, test "x${enable_svg2png}" = "xyes")
-AM_CONDITIONAL(USE_SVG, test "x${enable_svg}" = "xyes")
-
-# XSLTS
-AC_ARG_WITH(xslts, [ --with-xslts enable processing of navit.xml with given xslt scripts], XSLTS=$withval, XSLTS="")
-AC_SUBST(XSLTS)
-AC_ARG_WITH(saxon, [ --with-saxon specify the saxon xslt processor], SAXON=$withval, SAXON="saxon")
-AC_SUBST(SAXON)
-
-# Android Permissions
-AC_ARG_WITH(android-permissions, [ --with-android-permissions Set additional android permissions], ANDROID_PERMISSIONS=$withval, ANDROID_PERMISSIONS="")
-AC_SUBST(ANDROID_PERMISSIONS)
-# Android Project
-AC_ARG_WITH(android-project, [ --with-android-project Set android project], ANDROID_PROJECT=$withval, ANDROID_PROJECT="3")
-AC_SUBST(ANDROID_PROJECT)
-
-# NLS
-
-AC_ARG_ENABLE(nls,
- [ --disable-nls disable Native Language Support ( gettext/libintl )],
- enable_nls=$enableval, enable_nls=yes)
-
-
-INTLIBS=""
-MOFILES=""
-POFILES=""
-POIFILES=""
-LINGUAS=""
-
-xgettext_glade=no
-if test "x$enable_nls" = "xyes"; then
-
- AC_CHECK_FUNC(gettext, [HAVEGETTEXT="yes"],[INTLIBS="-lintl" HAVEGETTEXT="yes"])
- AC_CHECK_PROG(XGETTEXT, xgettext, xgettext)
- AC_CHECK_PROG(MSGMERGE, msgmerge, msgmerge)
- AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt)
-
- if test "$XGETTEXT" != ""; then
- if $XGETTEXT --help 2>&1 | grep illegal >/dev/null ; then
- echo "xgettext isn't GNU version"
- XGETTEXT=""
- else
- if echo '<test/>' | $XGETTEXT -L Glade - ; then
- xgettext_glade=yes
- fi
- fi
- fi
-
- if test "$XGETTEXT" != "" ; then
- PO=""
- if test "$LINGUAS" = ""; then
- ling=` (cd $srcdir/po; /bin/ls *.po.in) `
- for l in $ling; do
- lcode=`basename $l .po.in`
- LINGUAS="$LINGUAS$lcode "
- done
- fi
- AC_DEFINE(USE_NATIVE_LANGUAGE_SUPPORT, [1], [NLS Please])
- echo "xgettext and gettext() exist; will build i18n support for $LINGUAS"
- else
- LINGUAS=""
- PO=""
- echo "xgettext doesn't exist; will not build i18n support"
- enable_nls=no
- fi
- for lang in $LINGUAS; do
- MOFILES="$MOFILES $lang.mo"
- done
- for lang in $LINGUAS; do
- POFILES="$POFILES $lang.po"
- done
- for lang in $LINGUAS; do
- POIFILES="$POIFILES $lang.po.in"
- done
-
-AC_SUBST(INTLIBS)
-AC_SUBST(MOFILES)
-AC_SUBST(POFILES)
-AC_SUBST(POIFILES)
-AM_GNU_GETTEXT_VERSION
-AM_GNU_GETTEXT(no-libtool, need-ngettext, \$(top_builddir)/intl/)
-if test "x${shared_libnavit}" = "xyes" -a "x${win32ce}" = "xyes"; then
- INTLLIBS="\$(top_builddir)/intl/libintl.la"
- LIBINTL=$INTLLIBS
- LTLIBINTL=$INTLLIBS
-fi
-AC_SUBST(LIBINTL)
-AC_SUBST(LTLIBINTL)
-if test x"$LIBINTL" != "x" ;then
- CFLAGS="$CFLAGS -I\$(top_builddir)/intl/"
-fi
-
-fi
-AM_CONDITIONAL(USE_NATIVE_LANGUAGE_SUPPORT, [test "x$enable_nls" = "xyes"])
-AM_CONDITIONAL(XGETTEXT_GLADE, [test "x$xgettext_glade" = "xyes"])
-AC_CHECK_HEADER(
- byteswap.h,
- AC_DEFINE(
- [HAVE_BYTESWAP_H],
- [1],
- [Define to 1 if you have byteswap.h],
- )
- ,
-)
-
-AC_CHECK_HEADER(sys/endian.h,AC_DEFINE([USE_SYS_ENDIAN_H], [1], [Define to 1 if you have sys/endian.h],),)
-
-PACKAGE=navit
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-
-AC_CHECK_HEADER(wordexp.h,wordexp_h=yes,wordexp_h=no;NAVIT_CFLAGS="$NAVIT_CFLAGS -I\$(top_srcdir)/navit/support/wordexp";WORDEXP_LIBS="-L\$(top_builddir)/navit/support/wordexp -lsupport_wordexp")
-AM_CONDITIONAL(SUPPORT_WORDEXP, [test "x$wordexp_h" = "xno"])
-
-support_libc=no
-AC_ARG_ENABLE(support_libc, [ --enable-support-libc enable builtin mini libc ], support_libc=$enableval)
-AM_CONDITIONAL(SUPPORT_LIBC, [test "x$support_libc" = "xyes"])
-if test "x$support_libc" = "xyes"; then
- CFLAGS="$CFLAGS -I\$(top_srcdir)/navit/support/libc"
- LIBC_LIBS="-L\$(top_builddir)/navit/support/libc -lsupport_libc"
-fi
-
-## graphics
-AC_ARG_ENABLE(graphics, [ --disable-graphics disable graphics], graphics=$enableval;graphics_reason="configure parameter")
-AM_CONDITIONAL(GRAPHICS, test "x${graphics}" = "xyes")
-if test "x$graphics" = "xyes"; then
- AC_DEFINE([USE_GRAPHICS],[1],Define to 1 if you want to use graphics.)
-fi
-
-# gd
-
-# android
-AC_ARG_ENABLE(graphics-android, [ --disable-graphics-android disable graphics type android], graphics_android=$enableval;graphics_android_reason="configure parameter")
-AM_CONDITIONAL(GRAPHICS_ANDROID, test "x${graphics_android}" = "xyes")
-# gd
-AC_ARG_ENABLE(graphics-gd, [ --enable-graphics-gd enable graphics type gd], graphics_gd=$enableval;graphics_gd_reason="configure parameter")
-if test "x${graphics_gd}" = "xyes" ; then
- if test -z "$GDLIB_CONFIG"; then
- AC_PATH_PROG([GDLIB_CONFIG], [gdlib-config], [])
- fi
- AC_MSG_CHECKING([for gdlib with $GDLIB_CONFIG])
- if test ! -x "$GDLIB_CONFIG"; then
- if test "x${GDLIB_CONFIG}" = "x" ; then
- graphics_gd_reason="$GDLIB_CONFIG not executable"
- else
- graphics_gd_reason="gdlib-config missing"
- fi
- graphics_gd=no
- AC_MSG_RESULT([no])
- else
- if test "x${GD_CFLAGS}" = "x" ; then
- GD_CFLAGS="-I`$GDLIB_CONFIG --includedir`"
- fi
- if test "x${GD_LIBS}" = "x" ; then
- GD_LIBS="-L`$GDLIB_CONFIG --libdir` -lgd `$GDLIB_CONFIG --libs`"
- fi
- AC_SUBST(GD_CFLAGS)
- AC_SUBST(GD_LIBS)
- AC_MSG_RESULT([yes])
- fi
-fi
-AM_CONDITIONAL(GRAPHICS_GD, test "x${graphics_gd}" = "xyes")
-AC_CHECK_HEADER(
- sys/shm.h,
- AC_DEFINE(
- [HAVE_SHMEM],
- [],
- Define to 1 if you have shared memory
- )
-)
-AC_CHECK_HEADER(
- X11/xpm.h,
- AC_DEFINE(
- [HAVE_XPM],
- [],
- Define to 1 if you have xpm header
- )
-)
-AC_CHECK_HEADER(
- getopt.h,
- AC_DEFINE(
- [HAVE_GETOPT_H],
- [],
- Define to 1 if you have the getopt header
- )
-)
-if test "x${graphics_gd}" = "xyes" ; then
- save_CPPFLAGS=$CPPFLAGS
- save_LIBS=$LIBS
- LIBS="$GD_LIBS $LIBS"
- CPPFLAGS="$GD_CFLAGS $CPPFLAGS"
- AC_TRY_LINK([#include <gd.h>], [gdImageCreateFromPng(0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_GRAPHICS_GD_PNG, 1, [Define to 1 if you have png support in gd.]),AC_MSG_RESULT(no))
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
-fi
-
-# gtk_drawing_area
-AC_ARG_ENABLE(graphics-gtk-drawing-area, [ --disable-graphics-gtk-drawing-area disable graphics type gtk_drawing_area], graphics_gtk_drawing_area=$enableval;graphics_gtk_drawing_area_reason="configure parameter")
-AM_CONDITIONAL(GRAPHICS_GTK_DRAWING_AREA, [test "x${graphics_gtk_drawing_area}" = "xyes"])
-# null
-AC_ARG_ENABLE(graphics-null, [ --disable-graphics-null disable graphics type null], graphics_null=$enableval;graphics_null_reason="configure parameter")
-AM_CONDITIONAL(GRAPHICS_NULL, test "x${graphics_null}" = "xyes")
-# win32
-AC_ARG_ENABLE(graphics-win32, [ --disable-graphics-win32 disable graphics type win32], graphics_win32=$enableval;graphics_win32_reason="configure parameter")
-AM_CONDITIONAL(GRAPHICS_WIN32, test "x${graphics_win32}" = "xyes")
-# qt_qpainter
-AC_ARG_ENABLE(graphics-qt-qpainter, [ --disable-graphics-qt-qpainter disable graphics type qt-qpainter], graphics_qt_qpainter=$enableval;graphics_qt_qpainter_reason="configure parameter")
-if test "x${graphics_qt_qpainter}" = "xyes" -a "x${QT_GUI_CFLAGS}" = "x" -a "x${QT_GUI_LIBS}" = "x"; then
- PKG_CHECK_MODULES(QT_GUI, [QtGui QtCore],graphics_qt_qpainter=yes,graphics_qt_qpainter=no;graphics_qt_qpainter_reason="Packages QtGui and/or QtCore missing")
- if test "x${graphics_qt_qpainter}" = "xno"; then
- PKG_CHECK_MODULES(QT_GUI, [qt-mt],graphics_qt_qpainter=yes;graphics_qt_qpainter_reason="Package qt-mt present",graphics_qt_qpainter=no)
- fi
-fi
-if test "x${graphics_qt_qpainter}" = "xyes" ; then
- PKG_CHECK_MODULES(QT_SVG, [QtSvg], have_qt_svg=yes, have_qt_svg=no)
- if test "x${have_qt_svg}" = "xyes"; then
- AC_DEFINE([HAVE_QT_SVG],[],Define to 1 if qt supports svg)
- fi
-fi
-if test "x${graphics_qt_qpainter}" = "xyes" ; then
- AC_DEFINE(USE_GRAPICS_QT_QPAINTER, 1, [Build with graphics qt_qpainter])
-fi
-AC_SUBST(QT_GUI_CFLAGS)
-AC_SUBST(QT_GUI_LIBS)
-AC_SUBST(QT_SVG_CFLAGS)
-AC_SUBST(QT_SVG_LIBS)
-AM_CONDITIONAL(GRAPHICS_QT_QPAINTER, test "x${graphics_qt_qpainter}" = "xyes")
-MOC=`$PKG_CONFIG QtGui --variable=moc_location`
-if test "x${MOC}" = "x"; then
- AC_CHECK_PROG(MOC, moc, moc)
-fi
-AC_SUBST(MOC)
-
-
-## map
-# binfile
-AC_ARG_ENABLE(map-binfile, [ --disable-map-binfile disable map binfile], map_binfile=$enableval;map_binfile_reason="configure parameter")
-AM_CONDITIONAL(MAP_BINFILE, test "x${map_binfile}" = "xyes")
-# filter
-AC_ARG_ENABLE(map-filter, [ --disable-map-filter disable map filter], map_filter=$enableval;map_filter_reason="configure parameter")
-AM_CONDITIONAL(MAP_FILTER, test "x${map_filter}" = "xyes")
-# mg
-AC_ARG_ENABLE(map-mg, [ --disable-map-mg disable map mg], map_mg=$enableval;map_mg_reason="configure parameter")
-AM_CONDITIONAL(MAP_MG, test "x${map_mg}" = "xyes")
-# shapefile
-AC_ARG_ENABLE(map-shapefile, [ --disable-map-shapefile disable map shapefile], map_shapefile=$enableval;map_shapefile_reason="configure parameter")
-AM_CONDITIONAL(MAP_SHAPEFILE, test "x${map_shapefile}" = "xyes")
-# textfile
-AC_ARG_ENABLE(map-textfile, [ --disable-map-textfile disable map textfile], map_textfile=$enableval;map_textfile_reason="configure parameter")
-AM_CONDITIONAL(MAP_TEXTFILE, test "x${map_textfile}" = "xyes")
-# csv
-AC_ARG_ENABLE(map-csv, [ --disable-map-csv disable map csv], map_csv=$enableval;map_csv_reason="configure parameter")
-AM_CONDITIONAL(MAP_CSV, test "x${map_csv}" = "xyes")
-
-## osd
-# core
-AC_ARG_ENABLE(osd-core, [ --disable-osd-core disable osd core], osd_core=$enableval;osd_core_reason="configure parameter")
-AM_CONDITIONAL(OSD_CORE, test "x${osd_core}" = "xyes")
-
-## gui
-# gtk
-AC_ARG_ENABLE(gui-gtk, [ --disable-gui-gtk disable gui type gtk ], gui_gtk=$enableval)
-AM_CONDITIONAL(GUI_GTK, [test "x${gui_gtk}" = "xyes"])
-# internal
-AC_ARG_ENABLE(gui-internal, [ --disable-gui-internal disable gui type internal], gui_internal=$enableval;gui_internal_reason="configure parameter")
-AM_CONDITIONAL(GUI_INTERNAL, test "x${gui_internal}" = "xyes")
-# win32
-AC_ARG_ENABLE(gui-win32, [ --disable-gui-win32 disable gui type win32], gui_win32=$enableval;gui_win32_reason="configure parameter")
-AM_CONDITIONAL(GUI_WIN32, test "x${gui_win32}" = "xyes")
-# qml
-AC_ARG_ENABLE(gui-qml, [ --disable-gui-qml disable gui type QML], gui_qml=$enableval;gui_qml_reason="configure parameter")
-if test "x${gui_qml}" = "xyes" -a "x${QT_GUI_CFLAGS}" = "x" -a "x${QT_GUI_LIBS}" = "x"; then
- PKG_CHECK_MODULES(QT_GUI, [QtGui QtCore], ,gui_qml=no;gui_qml_reason="Packages QtGui and/or QtCore are missing")
-fi
-if test "x${gui_qml}" = "xyes" -a "x${QT_XML_CFLAGS}" = "x" -a "x${QT_XML_LIBS}" = "x"; then
- PKG_CHECK_MODULES(QT_XML, [QtXml], ,gui_qml=no;gui_qml_reason="Package QtXml is missing")
-fi
-if test "x${gui_qml}" = "xyes" -a "x${QT_DECLARATIVE_CFLAGS}" = "x" -a "x${QT_DECLARATIVE_LIBS}" = "x"; then
- PKG_CHECK_MODULES(QT_DECLARATIVE, [QtDeclarative >= 4.6.0 ], ,gui_qml=no;gui_qml_reason="Packages QtDeclarative is missing")
-fi
-if test "x${gui_qml}" = "xyes" ; then
- AC_DEFINE(USE_GUI_QML, 1, [Build with gui qml])
-fi
-AC_SUBST(QT_GUI_CFLAGS)
-AC_SUBST(QT_GUI_LIBS)
-AC_SUBST(QT_DECLARATIVE_CFLAGS)
-AC_SUBST(QT_DECLARATIVE_LIBS)
-AC_SUBST(QT_XML_CFLAGS)
-AC_SUBST(QT_XML_LIBS)
-AM_CONDITIONAL(GUI_QML, test "x${gui_qml}" = "xyes")
-
-## plugins
-# pedestrian
-AC_ARG_ENABLE(plugin-pedestrian, [ --enable-plugin-pedestrian enable pedestrian plugin], plugin_pedestrian=$enableval;plugin_pedestrian_reason="configure parameter")
-AM_CONDITIONAL(PLUGIN_PEDESTRIAN, test "x${plugin_pedestrian}" = "xyes")
-
-## routing
-AC_ARG_ENABLE(routing, [ --disable-routing disable routing], routing=$enableval;routing_reason="configure parameter")
-AM_CONDITIONAL(ROUTING, test "x${routing}" = "xyes")
-if test "x$routing" = "xyes"; then
- AC_DEFINE([USE_ROUTING],[1],Define to 1 if you want to have routing.)
-fi
-
-## speech
-# android
-AC_ARG_ENABLE(speech-android, [ --disable-speech-android disable speech type android], speech_android=$enableval;speech_android_reason="configure parameter")
-AM_CONDITIONAL(SPEECH_ANDROID, test "x${speech_android}" = "xyes")
-# cmdline
-AC_ARG_ENABLE(speech-cmdline, [ --disable-speech-cmdline disable speech type cmdline], speech_cmdline=$enableval;speech_cmdline_reason="configure parameter")
-AM_CONDITIONAL(SPEECH_CMDLINE, test "x${speech_cmdline}" = "xyes")
-# espeak
-AC_ARG_ENABLE(speech-espeak, [ --disable-speech-espeak disable speech type espeak], speech_espeak=$enableval;speech_espeak_reason="configure parameter")
-AM_CONDITIONAL(SPEECH_ESPEAK, test "x${speech_espeak}" = "xyes")
-# speech-dispatcher
-AC_ARG_ENABLE(speech-speech-dispatcher, [ --disable-speech-speech-dispatcher disable speech type speech-dispatcher], speech_speech_dispatcher=$enableval;speech_speech_dispatcher_reason="configure parameter")
-if test "x$speech_speech_dispatcher" = "xyes"; then
- AC_CHECK_HEADER(libspeechd.h, AC_DEFINE([HAVE_LIBSPEECHD],[],Define to 1 if you have the <libspeechd.h> header file.) SPEECHD_LIBS="-lspeechd", speech_speech_dispatcher=no; speech_speech_dispatcher_reason="libspeechd.h missing")
-fi
-AC_SUBST(SPEECHD_CFLAGS)
-AC_SUBST(SPEECHD_LIBS)
-AM_CONDITIONAL(SPEECH_SPEECH_DISPATCHER, test "x${speech_speech_dispatcher}" = "xyes")
-AM_CONDITIONAL(SUPPORT_ESPEAK, test "x${support_espeak}" = "xyes")
-
-## vehicle
-# android
-AC_ARG_ENABLE(vehicle-android, [ --disable-vehicle-android disable vehicle type android], vehicle_android=$enableval;vehicle_android_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_ANDROID, test "x${vehicle_android}" = "xyes")
-# demo
-AC_ARG_ENABLE(vehicle-demo, [ --disable-vehicle-demo disable vehicle type demo], vehicle_demo=$enableval;vehicle_demo_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_DEMO, test "x${vehicle_demo}" = "xyes")
-# file
-AC_ARG_ENABLE(vehicle-file, [ --disable-vehicle-file disable vehicle type file], vehicle_file=$enableval;vehicle_file_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_FILE, test "x${vehicle_file}" = "xyes")
-# gpsd
-# We accept even old, buggy versions of libgps, because N810 uses an old version (see #1179).
-AC_ARG_ENABLE(vehicle-gpsd, [ --disable-vehicle-gpsd disable vehicle type gpsd], vehicle_gpsd=$enableval;vehicle_gpsd_reason="configure parameter")
-if test "x${vehicle_gpsd}" = xyes
-then
- PKG_CHECK_MODULES([GPSD], [libgps], have_libgps="yes", have_libgps="no")
- if test "x$have_libgps" = "xyes"; then
- AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have libgps.)
- PKG_CHECK_MODULES([LIBGPS19], [libgps >= 2.90], have_libgps19="yes", have_libgps19="no")
- if test "x$have_libgps19" = "xyes"; then
- AC_DEFINE([HAVE_LIBGPS19],[],Define to 1 if you have libgps19.)
- fi
- else
- AC_CHECK_HEADER(gps.h, AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have the <gps.h> header file.) GPSD_LIBS="-lgps", vehicle_gpsd=no; vehicle_gpsd_reason="no gps.h and no gpsd pkgconfig" )
- fi
-fi
-AC_SUBST(GPSD_CFLAGS)
-AC_SUBST(GPSD_LIBS)
-AM_CONDITIONAL(VEHICLE_GPSD, [test "x${vehicle_gpsd}" = "xyes"])
-# gypsy
-AC_ARG_ENABLE(vehicle-gypsy,[ --disable-vehicle-gypsy disable vehicle type gypsy], vehicle_gypsy=$enableval;vehicle_gypsy_reason="configure parameter")
-if test "x${vehicle_gypsy}" = "xyes"
-then
- PKG_CHECK_MODULES(GYPSY, gypsy, ,vehicle_gypsy=no;vehicle_gypsy_reason="package gypsy missing")
-fi
-AC_SUBST(GYPSY_CFLAGS)
-AC_SUBST(GYPSY_LIBS)
-AM_CONDITIONAL(VEHICLE_GYPSY, test "x${vehicle_gypsy}" = "xyes")
-# maemo
-AC_ARG_ENABLE(vehicle-maemo, [ --disable-vehicle-maemo disable vehicle type maemo], vehicle_maemo=$enableval;vehicle_maemo_reason="configure parameter")
-if test "x${vehicle_maemo}" = "xyes" ; then
- PKG_CHECK_MODULES(LIBLOCATION, liblocation, [
- AC_SUBST(LIBLOCATION_CFLAGS)
- AC_SUBST(LIBLOCATION_LIBS)
- ], [
- AC_MSG_RESULT(no)
- vehicle_maemo=no
- vehicle_maemo_reason="no maemo location library found"
- ])
-fi
-AM_CONDITIONAL(VEHICLE_MAEMO, test "x${vehicle_maemo}" = "xyes")
-# null
-AC_ARG_ENABLE(vehicle-null, [ --enable-vehicle-null enable vehicle type null], vehicle_null=$enableval;vehicle_null_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_NULL, test "x${vehicle_null}" = "xyes")
-# wince
-AC_ARG_ENABLE(vehicle-wince, [ --disable-vehicle-wince disable vehicle type wince], vehicle_wince=$enableval;vehicle_wince_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_WINCE, test "x${vehicle_wince}" = "xyes")
-# iphone
-AC_ARG_ENABLE(vehicle-iphone, [ --disable-vehicle-iphone disable vehicle type iphone], vehicle_iphone=$enableval;vehicle_iphone_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_IPHONE, test "x${vehicle_iphone}" = "xyes")
-if test "x${vehicle_iphone}" = "xyes"
-then
- IPHONE_LIBS=-Wl,-framework,CoreLocation
-fi
-AC_SUBST(IPHONE_CFLAGS)
-AC_SUBST(IPHONE_LIBS)
-# webos
-AC_ARG_ENABLE(vehicle-webos, [ --enable-vehicle-webos enable vehicle type webos], vehicle_webos=$enableval;vehicle_webos_reason="configure parameter")
-AM_CONDITIONAL(VEHICLE_WEBOS, test "x${vehicle_webos}" = "xyes")
-if test "x${vehicle_webos}" = "xyes"
-then
- AC_DEFINE(USE_WEBOS,[],Build with webOS support)
- LIBPDL_CFLAGS="$SDL_CFLAGS -I/usr/local/include"
- LIBPDL_LIBS="-L/usr/local/lib -lpdl"
- AC_SUBST(LIBPDL_CFLAGS)
- AC_SUBST(LIBPDL_LIBS)
-fi
-NAVIT_CFLAGS="$NAVIT_CFLAGS $GLIB_CFLAGS $GMODULE_CFLAGS"
-NAVIT_LIBS="$NAVIT_LIBS $GLIB_LIBS $GMODULE_LIBS $LIBINTL"
-AC_SUBST(NAVIT_CFLAGS)
-AC_SUBST(NAVIT_LIBS)
-AC_SUBST(WORDEXP_LIBS)
-AC_SUBST(LIBC_LIBS)
-AC_SUBST(WINDRES)
-
-AC_CONFIG_FILES([
-Makefile
-navit/Makefile
-navit/autoload/Makefile
-navit/autoload/osso/Makefile
-navit/binding/Makefile
-navit/binding/python/Makefile
-navit/binding/dbus/Makefile
-navit/binding/win32/Makefile
-navit/map/Makefile
-navit/map/mg/Makefile
-navit/map/textfile/Makefile
-navit/map/csv/Makefile
-navit/map/shapefile/Makefile
-navit/map/filter/Makefile
-navit/map/binfile/Makefile
-navit/map/garmin/Makefile
-navit/maptool/Makefile
-navit/fib-1.1/Makefile
-navit/font/Makefile
-navit/font/freetype/Makefile
-navit/fonts/Makefile
-navit/graphics/Makefile
-navit/graphics/android/Makefile
-navit/graphics/gd/Makefile
-navit/graphics/gtk_drawing_area/Makefile
-navit/graphics/opengl/Makefile
-navit/graphics/null/Makefile
-navit/graphics/sdl/Makefile
-navit/graphics/qt_qpainter/Makefile
-navit/graphics/win32/Makefile
-navit/gui/Makefile
-navit/gui/gtk/Makefile
-navit/gui/internal/Makefile
-navit/gui/win32/Makefile
-navit/gui/qml/Makefile
-navit/gui/qml/skins/Makefile
-navit/gui/qml/skins/navit/Makefile
-navit/osd/Makefile
-navit/osd/core/Makefile
-navit/plugin/Makefile
-navit/plugin/pedestrian/Makefile
-navit/speech/Makefile
-navit/speech/android/Makefile
-navit/speech/cmdline/Makefile
-navit/speech/dbus/Makefile
-navit/speech/espeak/Makefile
-navit/speech/speech_dispatcher/Makefile
-navit/support/Makefile
-navit/support/espeak/Makefile
-navit/support/ezxml/Makefile
-navit/support/glib/Makefile
-navit/support/libc/Makefile
-navit/support/libpng/Makefile
-navit/support/shapefile/Makefile
-navit/support/win32/Makefile
-navit/support/wordexp/Makefile
-navit/support/zlib/Makefile
-navit/vehicle/Makefile
-navit/vehicle/android/Makefile
-navit/vehicle/file/Makefile
-navit/vehicle/gpsd/Makefile
-navit/vehicle/gpsd_dbus/Makefile
-navit/vehicle/gypsy/Makefile
-navit/vehicle/maemo/Makefile
-navit/vehicle/null/Makefile
-navit/vehicle/demo/Makefile
-navit/vehicle/wince/Makefile
-navit/vehicle/iphone/Makefile
-navit/vehicle/webos/Makefile
-navit/xpm/Makefile
-navit/maps/Makefile
-intl/Makefile
-po/Makefile
-man/Makefile
-])
-#src/data/garmin_img/Makefile
-
-AC_OUTPUT
-
-
-echo ""
-echo ""
-echo "Summary of your installation :"
-# FIXME : maybe elaborate missing dependencies
-if test x"$graphics_sdl" != xyes
- then
- sdl_failures="(libsdl maybe?) "
-fi
-if test x"$glut" != xyes
- then
- sdl_failures=$sdl_failures"glut "
-fi
-if test -z "$sdl_failures"
- then
- echo "OpenGL gui : ENABLED, with $CEGUI_LIBS"
- else
- echo "OpenGL gui : DISABLED : you are missing $sdl_failures"
-fi
-if test x"$enable_hildon" = xyes
- then
- echo "Maemo/Hildon: ENABLED"
- else
- echo "Maemo/Hildon: DISABLED"
-fi
-if test x"$enable_osso" = xyes
- then
- echo "Maemo/OSSO: ENABLED"
- else
- echo "Maemo/OSSO: DISABLED"
-fi
-if test x"${USE_GARMIN}" = xyes
- then
- if test "x$use_libgarmin" = "xyes"
- then
- echo "Garmin IMG : ENABLED"
- else
- echo "Garmin IMG : DISABLED (you don't have libgarmin)"
- fi
- else
- echo "Garmin IMG : DISABLED (you requested it)"
-fi
-
-if test x"$LIBINTL" = "x" ;then
- nls_libs="system gettext support"
-else
- nls_libs="$LIBINTL"
-fi
-echo "Plugins: $plugins ($plugins_reason)"
-echo "Postgresql: $postgresql ($postgresql_reason)"
-echo "Samplemap: $samplemap ($samplemap_reason)"
-echo "NLS Support: $enable_nls ($nls_libs)"
-echo "Routing: $routing ($routing_reason)"
-echo "Font renderers:"
-echo " freetype: $font_freetype ($font_freetype_reason)"
-echo " FriBidi enabled: $fribidi ($fribidi_reason)"
-
-echo "Graphics types: $graphics ($graphics_reason)"
-echo " android: $graphics_android ($graphics_android_reason)"
-echo " gtk_drawing_area: $graphics_gtk_drawing_area ($graphics_gtk_drawing_area_reason)"
-echo " null: $graphics_null ($graphics_null_reason)"
-echo " qt_qpainter: $graphics_qt_qpainter ($graphics_qt_qpainter_reason)"
-echo " win32: $graphics_win32 ($graphics_win32_reason)"
-echo " OpenGL: $graphics_opengl ($graphics_opengl_reason)"
-echo " gd: $graphics_gd ($graphics_gd_reason)"
-echo " sdl: $graphics_sdl ($graphics_sdl_reason)"
-
-echo "GUI types:"
-echo " gtk: $gui_gtk ($gui_gtk_reason)"
-echo " internal: $gui_internal ($gui_internal_reason)"
-echo " win32: $gui_win32 ($gui_win32_reason)"
-echo " qml: $gui_qml ($gui_qml_reason)"
-
-echo "Map types:"
-echo " binfile: $map_binfile ($map_binfile_reason)"
-echo " filter: $map_filter ($map_filter_reason)"
-echo " mg: $map_mg ($map_mg_reason)"
-echo " shapefile: $map_shapefile ($map_shapefile_reason)"
-echo " textfile: $map_textfile ($map_textfile_reason)"
-echo " csv: $map_csv ($map_csv_reason)"
-
-
-echo "Bindings:"
-echo " dbus: $binding_dbus ($binding_dbus_reason)"
-echo " python: $binding_python ($binding_python_reason)"
-
-echo "OSD types:"
-echo " core: $osd_core ($osd_core_reason)"
-
-echo "Plugins:"
-echo " pedestrian: $plugin_pedestrian ($plugin_pedestrian_reason)"
-
-echo "Speech types:"
-echo " android: $speech_android ($speech_android_reason)"
-echo " cmdline: $speech_cmdline ($speech_cmdline_reason)"
-echo " dbus: $speech_dbus ($speech_dbus_reason)"
-echo " espeak: $speech_espeak ($speech_espeak_reason)"
-echo " speech_dispatcher: $speech_speech_dispatcher ($speech_speech_dispatcher_reason)"
-
-echo "Vehicle types:"
-echo " android: $vehicle_android ($vehicle_android_reason)"
-echo " demo: $vehicle_demo ($vehicle_demo_reason)"
-echo " file: $vehicle_file ($vehicle_file_reason)"
-echo " gpsd: $vehicle_gpsd ($vehicle_gpsd_reason)"
-echo " gpsd_dbus: $vehicle_gpsd_dbus ($vehicle_gpsd_dbus_reason)"
-echo " gypsy: $vehicle_gypsy ($vehicle_gypsy_reason)"
-echo " maemo: $vehicle_maemo ($vehicle_maemo_reason)"
-echo " null: $vehicle_null ($vehicle_null_reason)"
-echo " wince: $vehicle_wince ($vehicle_wince_reason)"
-echo " iphone: $vehicle_iphone ($vehicle_iphone_reason)"
-echo " webos: $vehicle_webos ($vehicle_webos_reason)"
-
-if test "x${gtk2_pkgconfig}" != "xyes" -a "x${gui_win32}" != "xyes" -a "x${gui_internal}" != "xyes" -a "x${gui_qml}" != "xyes"
-then
- echo ""
- echo ""
- echo "*** WARNING! you have no gui that can be built! ***"
- echo "Please install the dependency for at least gtk or sdl gui"
- echo "For more details, see the wiki at http://wiki.navit-project.org/"
- echo ""
-fi
-
-echo "Support for autotools will be removed soon from navit, please use cmake instead"
-sleep 5
diff --git a/contrib/tomtom/espeakdsp.c b/contrib/tomtom/espeakdsp.c
new file mode 100644
index 000000000..bd6689a1f
--- /dev/null
+++ b/contrib/tomtom/espeakdsp.c
@@ -0,0 +1,101 @@
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/soundcard.h>
+#include <sys/wait.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <libgen.h>
+
+#define espeakpath "/mnt/sdcard/navit/bin/espeak"
+#define IBUFFERLEN 1024
+#define MAXARGC 30
+
+
+int main(int argc, char *argv[],char *envp[])
+{
+ int pipefd[2];
+ pid_t cpid;
+ char buf;
+ int co,wp,l,fh;
+ short bufi[IBUFFERLEN],bufo[IBUFFERLEN*2];
+ int rate=22050;
+
+ char *newargv[MAXARGC+2];
+
+ for(co=0;co<argc;co++)
+ {
+ if(co>=MAXARGC)break;
+ newargv[co]=argv[co];
+ }
+ newargv[co++]="--stdout";
+ newargv[co++]=NULL;
+
+ if (pipe(pipefd) == -1)
+ {
+ perror("pipe");
+ exit(EXIT_FAILURE);
+ }
+
+ if(setpriority(PRIO_PROCESS,0,-10))
+ perror ("setpriority");
+
+ cpid = fork();
+ if (cpid == -1)
+ {
+ perror("fork");
+ exit(EXIT_FAILURE);
+ }
+
+ if (cpid == 0)
+ { /* Child writes to pipe */
+
+ close(pipefd[0]); /* Close unused read end */
+ dup2(pipefd[1],1);
+ execve(espeakpath,newargv,envp);
+ perror(espeakpath);
+ close(pipefd[1]); /* Reader will see EOF */
+ wait(NULL); /* Wait for child */
+ exit(EXIT_SUCCESS);
+
+ } else { /* Parent read from pipe */
+
+ close(pipefd[1]); /* Close unused write end */
+
+ l=read(pipefd[0],bufi,64);
+ if(memcmp(bufi,"RIFF",4))
+ {
+ while(l>0)
+ {
+ write(1,bufi,l);
+ l=read(pipefd[0],bufi,IBUFFERLEN);
+ }
+ exit(EXIT_SUCCESS);
+ }
+ l=read(pipefd[0],bufi,IBUFFERLEN);
+
+ fh=open("/dev/dsp",O_WRONLY);
+ if(fh<0)
+ {
+ perror("open /dev/dsp");
+ exit(EXIT_FAILURE);
+ }
+ ioctl(fh, SNDCTL_DSP_SPEED , &rate);
+ ioctl(fh, SNDCTL_DSP_SYNC, 0);
+ while(l)
+ {
+ for(co=0,wp=0;(co<IBUFFERLEN)&&(co<l);co++)
+ {
+ bufo[wp++]=bufi[co]; /* mono->stereo */
+ bufo[wp++]=bufi[co];
+ }
+ write (fh,bufo,wp);
+ l=read(pipefd[0],bufi,IBUFFERLEN);
+ }
+ ioctl(fh, SNDCTL_DSP_SYNC, 0);
+ close(pipefd[0]);
+ exit(EXIT_SUCCESS);
+ }
+}
diff --git a/man/Makefile.am b/man/Makefile.am
deleted file mode 100644
index 44d6c2d5e..000000000
--- a/man/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-dist_man_MANS=maptool.1 navit.1
diff --git a/navit/Makefile.am b/navit/Makefile.am
deleted file mode 100644
index 16cb81d58..000000000
--- a/navit/Makefile.am
+++ /dev/null
@@ -1,248 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-comma=,
-SUBDIRS=fib-1.1 support
-if PLUGINS
- SUBDIRS += .
-endif
-DIST_SUBDIRS=autoload binding map maptool fib-1.1 font fonts gui graphics osd plugin speech support vehicle xpm maps
-SUBDIRS+=autoload binding map font gui graphics osd plugin speech vehicle xpm
-
-MODULES = $(wildcard $(top_builddir)/navit/binding/*/*.la $(top_builddir)/navit/font/*/*.la $(top_builddir)/navit/graphics/*/*.la $(top_builddir)/navit/gui/*/*.la $(top_builddir)/navit/map/*/*.la $(top_builddir)/navit/osd/*/*.la $(top_builddir)/navit/speech/*/*.la $(top_builddir)/navit/vehicle/*/*.la)
-
-if FONTS
- SUBDIRS += fonts
-endif
-if !PLUGINS
- SUBDIRS += .
-endif
-
-if MAPTOOL
- SUBDIRS += maptool
-endif
-
-if BUILD_SAMPLEMAP
- SUBDIRS += maps
-endif
-
-
-AM_CPPFLAGS = -I$(top_srcdir)/navit/fib-1.1 @NAVIT_CFLAGS@ @ZLIB_CFLAGS@ -DPREFIX=\"@prefix@\" -DLIBDIR=\"@libdir@\" -DMODULE=navit
-BUILT_SOURCES = version.h navit_config.h
-
-if BIN_NAVIT
- bin_PROGRAMS = navit
-endif
-
-if SHARED_LIBNAVIT
- lib_LTLIBRARIES = lib@LIBNAVIT@.la
- lib@LIBNAVIT@_la_LDFLAGS = -avoid-version @MODULE_LDFLAGS@ @NAVIT_SOCKET_LDFLAGS@ -no-undefined -Wl,--no-undefined
-else
- noinst_LTLIBRARIES = lib@LIBNAVIT@.la
-endif
-lib@LIBNAVIT@_la_LIBADD = @NAVIT_LIBS@ @WORDEXP_LIBS@ @ZLIB_LIBS@ @INTLLIBS@ -Lfib-1.1 -lfib @MODULE_LIBADD@ @CRYPTO_LIBS@
-
-if SUPPORT_WIN32CE
- lib@LIBNAVIT@_la_LIBADD += -Lsupport/libc -lsupport_libc
-endif
-
-pkgdata_DATA = navit.xml
-
-EXTRA_DIST = navit_shipped.xml navit.dtd
-
-lib@LIBNAVIT@_la_SOURCES = announcement.c atom.c attr.c cache.c callback.c command.c config_.c coord.c country.c data_window.c debug.c \
- event.c event_glib.h file.c geom.c graphics.c gui.c item.c layout.c log.c main.c map.c maps.c \
- linguistics.c mapset.c maptype.c menu.c messages.c bookmarks.c bookmarks.h navit.c navigation.c osd.c param.c phrase.c plugin.c popup.c \
- profile.c profile_option.c projection.c roadprofile.c route.c search.c search_houseno_interpol.c script.c speech.c start_real.c \
- transform.c track.c util.c vehicle.c vehicleprofile.c xmlconfig.c \
- announcement.h atom.h attr.h attr_def.h cache.h callback.h color.h command.h config_.h coord.h country.h \
- android.h data.h data_window.h data_window_int.h debug.h destination.h draw_info.h endianess.h event.h \
- file.h geom.h graphics.h gtkext.h gui.h item.h item_def.h keys.h log.h layer.h layout.h linguistics.h main.h map-share.h map.h\
- map_data.h mapset.h maptype.h menu.h messages.h navigation.h navit.h osd.h \
- param.h phrase.h plugin.h point.h plugin_def.h projection.h popup.h route.h profile.h roadprofile.h search.h search_houseno_interpol.h \
- speech.h start_real.h transform.h track.h types.h util.h vehicle.h vehicleprofile.h window.h xmlconfig.h zipfile.h \
- navit_lfs.h navit_nls.c navit_nls.h sunriset.c sunriset.h glib_slice.h
-
-XSLTS=@XSLTS@
-navit.xml: navit_shipped.xml $(foreach xslt, $(subst $(comma), ,$(XSLTS)), $(addsuffix .xslt,$(addprefix xslt/,$(xslt)))) navit_android_xml
- cp $< navit.xml.new
- if [ ! -f navit.dtd ]; then cp -f $(top_srcdir)/navit/navit.dtd .; fi
- for i in $^; do if [ "$${i%.xslt}" != "$$i" ]; then echo "Applying $$i" ; @SAXON@ -snone navit.xml.new $$i >navit.xml.tmp || exit ; mv -f navit.xml.tmp navit.xml.new || exit ; fi ; done
- mv -f navit.xml.new navit.xml
- rm -f navit.xml.tmp
-
-navit_android_xml: navit_shipped.xml
-if SUPPORT_ANDROID
-# new android xml files for (mdpi,ldpi,hdpi)
- cp $(srcdir)/navit_shipped.xml navit_android.xml.new
- if [ ! -f navit.dtd ]; then cp -f $(top_srcdir)/navit/navit.dtd .; fi
-
-# # now apply any other xslt files (this would allow for pedestrian plugin)
-# for i in $(foreach xslt, $(subst $(comma), ,$(XSLTS)), $(addsuffix .xslt,$(addprefix xslt/,$(xslt)))); do if [ "$${i%.xslt}" != "$$i" ]; then j=`basename $$i` ; if [ "$$j" != "android.xslt" ] ; then echo "Android: Applying $$i" ; @SAXON@ -snone navit_android.xml.new $(srcdir)/"$$i" >navit_android.xml.new.tmp || exit ; mv navit_android.xml.new.tmp navit_android.xml.new || exit ; fi ; fi ; done
-# # for now disable pedestrian plugin (zoff99)
-
- @SAXON@ -snone navit_android.xml.new $(srcdir)/xslt/android_mdpi.xslt >navit_android_mdpi.xml.tmp
- @SAXON@ -snone navit_android.xml.new $(srcdir)/xslt/android_ldpi.xslt >navit_android_ldpi.xml.tmp
- @SAXON@ -snone navit_android.xml.new $(srcdir)/xslt/android_hdpi.xslt >navit_android_hdpi.xml.tmp
- rm -f navit_android.xml.new
- rm -f navit_android.xml.new.tmp
- mv -f navit_android_mdpi.xml.tmp navit_android_mdpi.xml
- mv -f navit_android_ldpi.xml.tmp navit_android_ldpi.xml
- mv -f navit_android_hdpi.xml.tmp navit_android_hdpi.xml
- rm -f navit_android_mdpi.xml.tmp
- rm -f navit_android_ldpi.xml.tmp
- rm -f navit_android_hdpi.xml.tmp
-else
- echo "no Android support"
-endif
-
-if SUPPORT_ANDROID
- lib@LIBNAVIT@_la_SOURCES += android.c
- navit_SOURCES =
- navit_LDADD =
-
-v_int = $$(cat $(srcdir)/android/Android_Market_Version_int.txt|grep v_int|cut -d ":" -f 2)
-v_name = "0.5.0-"$$(LANG=C svnversion $(top_srcdir) 2> /dev/null|tr -d ":A-Z" 2> /dev/null)
-
-android/AndroidManifest.xml: android/AndroidManifest.xml.in
- mkdir -p $(builddir)/android
- sed '0,/<uses-sdk/!d' <$< >$@
- for i in $(subst $(comma), ,@ANDROID_PERMISSIONS@); do echo " <uses-permission android:name=\"android.permission.$$i\" />" >>$@; done
- sed '0,/<uses-sdk/d' <$< >>$@
- sed -e "s/@ANDROID_VERSION_INT@/$(v_int)/" <$@ >android/AndroidManifest.xml.tmp
- mv -f android/AndroidManifest.xml.tmp $@
- sed -e "s/@ANDROID_VERSION_NAME@/$(v_name)/" <$@ >android/AndroidManifest.xml.tmp
- mv -f android/AndroidManifest.xml.tmp $@
-
-android/build.xml: android/AndroidManifest.xml android/dummy.txt
-# this is needed, otherwise somehow the files cant be deleted
- mkdir -p $(builddir)/android/src/
- if [ "$(builddir)" != "$(srcdir)" ]; then chmod -R u+w $(builddir)/android/src/; fi
- if [ "$(builddir)" != "$(srcdir)" ]; then rm -Rf $(builddir)/android/src/; fi
- if [ "$(builddir)" != "$(srcdir)" ]; then cp -rpf $(srcdir)/android/* $(builddir)/android; fi
- touch $(srcdir)/android/dummy.txt
- touch $(builddir)/android/dummy.txt
- android update project -t @ANDROID_PROJECT@ -p android
-
-apkg-all: all android/build.xml navit.xml
- mkdir -p android/libs/armeabi
- cp .libs/*.so android/libs/armeabi/libnavit.so
- for i in */*/.libs/*.so ; do sed 's&lib_data_data_org\.navitproject\.navit_lib_&/data/data/org.navitproject.navit/lib/lib&' <$$i >android/libs/armeabi/$$(basename $$i); done
-
- for i in $(shell cd $(srcdir)/../po && echo ??_*.po.in ??.po.in); do echo Gnerating strings.xml from $$i ; mkdir -p $(builddir)/android/res/values-$$(echo $$i | sed -e s/\\.po\\.in// -e s/_/-r/) ; @SAXON@ $(srcdir)/android/res/values/strings.xml $(srcdir)/android/po2xml.xslt po_file=$(abs_top_srcdir)/po/$$i >$(builddir)/android/res/values-$$(echo $$i | sed -e s/\\.po\\.in// -e s/_/-r/)/strings.xml ; done
-
- mkdir -p android/res/drawable-ldpi
- mkdir -p android/res/drawable-mdpi
- mkdir -p android/res/drawable-hdpi
- for i in $(shell cd $(srcdir)/xpm && echo *.xpm); do convert $(srcdir)/xpm/$$i android/res/drawable-mdpi/$${i%.xpm}.png; done
- for i in $(shell cd $(srcdir)/xpm && echo *.xpm); do convert -resize 75% $(srcdir)/xpm/$$i android/res/drawable-ldpi/$${i%.xpm}.png; done
- for i in $(shell cd $(srcdir)/xpm && echo *.xpm); do convert -resize 150% $(srcdir)/xpm/$$i android/res/drawable-hdpi/$${i%.xpm}.png; done
-
-# for i in $(shell cd $(srcdir)/xpm && echo *.png); do cp $(srcdir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
-# for i in $(shell cd $(srcdir)/xpm && echo *.png); do cp $(srcdir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
-# for i in $(shell cd $(srcdir)/xpm && echo *.png); do cp $(srcdir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
-
- for i in $(shell cd $(srcdir)/xpm && echo *.png); do convert $(srcdir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
- for i in $(shell cd $(srcdir)/xpm && echo *.png); do convert -resize 75% $(srcdir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
- for i in $(shell cd $(srcdir)/xpm && echo *.png); do convert -resize 150% $(srcdir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
-
-# if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do cp $(builddir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi
-# if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do cp $(builddir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi
-# if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do cp $(builddir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi
-
- if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do convert $(builddir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi
- if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do convert -resize 75% $(builddir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi
- if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do convert -resize 150% $(builddir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi
-
- mkdir -p android/res/raw
- for i in $(shell cd ../po && echo *.mo); do cp ../po/$$i android/res/raw/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done
-# cp navit.xml android/res/raw
- cp navit_android_mdpi.xml android/res/raw/navitmdpi.xml
- cp navit_android_ldpi.xml android/res/raw/navitldpi.xml
- cp navit_android_hdpi.xml android/res/raw/navithdpi.xml
-
-apkg: apkg-all
- touch $(srcdir)/android/dummy.txt
- touch $(builddir)/android/dummy.txt
- cd android && ant debug
-
-apkg-release: apkg-all
- touch $(srcdir)/android/dummy.txt
- touch $(builddir)/android/dummy.txt
- cd android && ant release
- jarsigner $$(cat ~/.keystore_args) android/bin/Navit-unsigned.apk mykey
-# zipalign -f 4 android/bin/Navit-unsigned.apk android/bin/Navit-unsigned-aligned.apk
-else
-navit_SOURCES = start.c
-navit_LDADD = lib@LIBNAVIT@.la
-
-endif
-
-if EVENT_GLIB
- lib@LIBNAVIT@_la_SOURCES += event_glib.c
-endif
-
-navit_LDFLAGS = -export-dynamic
-
-if !PLUGINS
- lib@LIBNAVIT@_la_SOURCES += builtin.c
- lib@LIBNAVIT@_la_LIBADD += $(MODULES)
-endif
-
-
-navit_LDADD += @NAVIT_LIBS@ @WORDEXP_LIBS@ @ZLIB_LIBS@ @CRYPTO_LIBS@ @INTLLIBS@
-
-
-if SUPPORT_WIN32
- navit_LDADD += resource.rsc
-if SUPPORT_WIN32CE
- navit_LDADD += -lcommctrl -Lsupport/libc
-else
- navit_LDADD += -lgdi32 -lcomctl32 -lwinmm
-endif
-
-
-resource.rsc: $(top_srcdir)/navit/gui/win32/resources/resource.rc
- $(WINDRES) -I $(top_srcdir)/navit/gui/win32/resources $(top_srcdir)/navit/gui/win32/resources/resource.rc resource.rsc
-endif
-
-.PHONY: version.h.tmp
-
-version.h.tmp:
- echo "#include \"config.h\"" >version.h.tmp
-if SOURCE_MODE_SVN
- echo "#define SVN_VERSION \"$$(LANG=C svnversion $(top_srcdir) 2>/dev/null)\"" >>version.h.tmp
-else
- echo "#define SVN_VERSION \"@SOURCE_MODE@\"" >>version.h.tmp
-endif
- echo "#define GIT_VERSION \"$(shell git describe --abbrev=8 --dirty --always --tags)\"" >>version.h.tmp
- echo "#define NAVIT_VARIANT \"@NAVIT_VARIANT@\"" >>version.h.tmp
- if ! diff version.h.tmp version.h >/dev/null 2>/dev/null; \
- then \
- mv -f version.h.tmp version.h; \
- fi
-
-version.h: version.h.tmp
-
-navit_config.h: ../config.h
- cp ../config.h navit_config.h.tmp
- if ! diff navit_config.h.tmp navit_config.h >/dev/null 2>/dev/null; \
- then \
- mv -f navit_config.h.tmp navit_config.h; \
- fi
-
-
-distclean-local:
- rm -f version.h version.h.tmp navit_config.h navit_config.h.tmp builtin.c support-builtin.c navit.xml resurce.rsc
- if [ "$(top_builddir)" != "$(top_srcdir)" ]; then rm -f navit.dtd; fi
-
-builtin.c: $(top_builddir)/config.h
- ls $(top_builddir)/navit/*/*/*.la | sed -e "s/\.la/_init(void);/" -e "s/.*lib/extern void module_/" >builtin.c
- echo "extern void builtin_init(void);" >>builtin.c
- echo "void builtin_init(void) {" >>builtin.c
- ls $(top_builddir)/navit/*/*/*.la | grep -v shapefile | sed -e "s/\.la/_init();/" -e "s/.*\\/lib/ module_/" >>builtin.c
- echo "}" >>builtin.c
-support-builtin.c: $(top_builddir)/config.h
- ls $(top_builddir)/navit/support/*/*.la | sed -e "s/\.la/_init(void);/" -e "s/.*lib/extern void module_/" >support-builtin.c
- echo "extern void builtin_init(void);" >>support-builtin.c
- echo "void builtin_init(void) {" >>support-builtin.c
- ls $(top_builddir)/navit/support/*/*.la | sed -e "s/\.la/_init();/" -e "s/.*\\/lib/ module_/" >>support-builtin.c
- echo "}" >>support-builtin.c
diff --git a/navit/android/AndroidManifest.xml.cmake b/navit/android/AndroidManifest.xml.cmake
index b5bd757cb..7aa882bb8 100644
--- a/navit/android/AndroidManifest.xml.cmake
+++ b/navit/android/AndroidManifest.xml.cmake
@@ -37,5 +37,15 @@
<activity android:name=".NavitDownloadSelectMapActivity"></activity>
<activity android:name=".NavitAddressResultListActivity"></activity>
<activity android:name=".FileBrowserActivity"></activity>
+ <activity
+ android:name="org.acra.dialog.CrashReportDialog"
+ android:theme="@android:style/Theme.Dialog"
+ android:launchMode="singleInstance"
+ android:excludeFromRecents="true"
+ android:finishOnTaskLaunch="true"/>
+ <service
+ android:name="org.acra.sender.SenderService"
+ android:exported="false"
+ android:process=":acra" />
</application>
</manifest>
diff --git a/navit/android/AndroidManifest.xml.in b/navit/android/AndroidManifest.xml.in
deleted file mode 100644
index 085276623..000000000
--- a/navit/android/AndroidManifest.xml.in
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.navitproject.navit"
- android:sharedUserId="org.navitproject.navit"
- android:versionCode="@ANDROID_VERSION_INT@"
- android:versionName="@ANDROID_VERSION_NAME@"
- android:installLocation="auto">
- <application android:label="@string/app_name"
- android:icon="@drawable/icon"
- android:name=".NavitAppConfig"
- android:theme="@style/NavitTheme">
- <activity android:name="Navit"
- android:label="@string/app_name"
- android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="google.navigation" />
- </intent-filter>
- </activity>
- <activity android:name=".NavitAddressSearchActivity"></activity>
- <activity android:name=".NavitDownloadSelectMapActivity"></activity>
- <activity android:name=".NavitAddressResultListActivity"></activity>
- <activity android:name=".FileBrowserActivity"></activity>
- </application>
- <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19"/>
- <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" android:anyDensity="true"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- <uses-permission android:name="android.permission.WAKE_LOCK" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-</manifest>
diff --git a/navit/android/libs/acra-4.3.0b2.jar b/navit/android/libs/acra-4.3.0b2.jar
deleted file mode 100644
index 259a69581..000000000
--- a/navit/android/libs/acra-4.3.0b2.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
new file mode 100644
index 000000000..f0044ece8
--- /dev/null
+++ b/navit/android/libs/acra-4.8.5.jar
Binary files differ
diff --git a/navit/android/libs/android-support-v4.jar b/navit/android/libs/android-support-v4.jar
new file mode 100644
index 000000000..aa0b1a5cc
--- /dev/null
+++ b/navit/android/libs/android-support-v4.jar
Binary files differ
diff --git a/navit/android/res/values/strings.xml b/navit/android/res/values/strings.xml
index 0aadefa7e..3a730e807 100644
--- a/navit/android/res/values/strings.xml
+++ b/navit/android/res/values/strings.xml
@@ -76,5 +76,9 @@
<!-- TTS -->
<string name="TTS_title_data_missing">System text to speech engine data is missing</string>
<string name="TTS_qery_install_data">Navit can use any text to speech engine installed on your device. The currently selected engine reports it is unable to speak in your language. Should we ask the system to show voice download dialog?</string>
+
+ <!-- Permissions dialog-->
+ <string name="permissions_not_granted">Navit needs permission to access GPS and read the map.\nIf you change your mind please restart Navit and grant the permissions</string>
+ <string name="permissions_info_box_title">One or more ungranted permissions</string>
</resources>
diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java
index c8578df07..1b5d8fb50 100644
--- a/navit/android/src/org/navitproject/navit/Navit.java
+++ b/navit/android/src/org/navitproject/navit/Navit.java
@@ -55,6 +55,7 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Point;
+import android.Manifest;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Build;
@@ -62,6 +63,8 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.os.PowerManager;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
@@ -115,6 +118,7 @@ public class Navit extends Activity
static final String FIRST_STARTUP_FILE = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt";
public static final String NAVIT_PREFS = "NavitPrefs";
Boolean isFullscreen = false;
+ private static final int MY_PERMISSIONS_REQUEST_ALL = 101;
/**
@@ -303,8 +307,8 @@ public class Navit extends Activity
PendingIntent appIntent = PendingIntent.getActivity(getApplicationContext(), 0, getIntent(), 0);
// FIXME : needs a fix for sdk 23
// NavitNotification.setLatestEventInfo(getApplicationContext(), "Navit", getString(R.string.notification_event_default), appIntent); // Set the text in the notification
- NavitNotification.flags|=Notification.FLAG_ONGOING_EVENT; // Ensure that the notification appears in Ongoing
- nm.notify(R.string.app_name, NavitNotification); // Set the notification
+// NavitNotification.flags|=Notification.FLAG_ONGOING_EVENT; // Ensure that the notification appears in Ongoing
+// nm.notify(R.string.app_name, NavitNotification); // Set the notification
// Status and navigation bar sizes
// These are platform defaults and do not change with rotation, but we have to figure out which ones apply
@@ -322,7 +326,12 @@ public class Navit extends Activity
navigation_bar_width = (nwid > 0) ? resources.getDimensionPixelSize(nwid) : 0;
Log.d(TAG, String.format("status_bar_height=%d, action_bar_default_height=%d, navigation_bar_height=%d, navigation_bar_height_landscape=%d, navigation_bar_width=%d",
status_bar_height, action_bar_default_height, navigation_bar_height, navigation_bar_height_landscape, navigation_bar_width));
-
+ if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)||
+ (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
+ Log.d (TAG,"ask for permission(s)");
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION},MY_PERMISSIONS_REQUEST_ALL);
+ }
// get the local language -------------
Locale locale = java.util.Locale.getDefault();
String lang = locale.getLanguage();
@@ -481,7 +490,40 @@ public class Navit extends Activity
show_soft_keyboard_now_showing = true;
}
}
-
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSIONS_REQUEST_ALL: {
+ if (grantResults.length > 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED
+ && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
+ // ok, we got permissions
+ } else {
+ AlertDialog.Builder infobox = new AlertDialog.Builder(this);
+ infobox.setTitle(getString(R.string.permissions_info_box_title)); // TRANS
+ infobox.setCancelable(false);
+ final TextView message = new TextView(this);
+ message.setFadingEdgeLength(20);
+ message.setVerticalFadingEdgeEnabled(true);
+ RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
+ message.setLayoutParams(rlp);
+ final SpannableString s = new SpannableString(getString(R.string.permissions_not_granted)); // TRANS
+ message.setText(s);
+ message.setMovementMethod(LinkMovementMethod.getInstance());
+ infobox.setView(message);
+ // TRANS
+ infobox.setPositiveButton(getString(R.string.initial_info_box_OK), new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface arg0, int arg1) {
+ exit();
+ }
+ });
+ infobox.show();
+ }
+ return;
+ }
+ }
+ }
+
private void parseNavigationURI(String schemeSpecificPart) {
String naviData[]= schemeSpecificPart.split("&");
Pattern p = Pattern.compile("(.*)=(.*)");
@@ -864,8 +906,8 @@ public class Navit extends Activity
public void exit()
{
- NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- nm.cancel(R.string.app_name);
+// NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+// nm.cancel(R.string.app_name);
NavitVehicle.removeListener();
NavitDestroy();
}
diff --git a/navit/android/src/org/navitproject/navit/NavitAppConfig.java b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
index 32f003f18..13ccc9bb4 100755
--- a/navit/android/src/org/navitproject/navit/NavitAppConfig.java
+++ b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
@@ -8,10 +8,14 @@ import org.navitproject.navit.NavitAddressSearchActivity.NavitAddress;
import android.app.Application;
import android.content.SharedPreferences;
import android.util.Log;
-
+import org.acra.*;
import org.acra.annotation.*;
-@ReportsCrashes(formKey = "dGlrNVRIOVVKYjB0UGVoLUZPanlzWFE6MQ")
+//@ReportsCrashes(formKey = "dGlrNVRIOVVKYjB0UGVoLUZPanlzWFE6MQ")
+@ReportsCrashes(mailTo = "android@navit-project.org",
+ mode = ReportingInteractionMode.TOAST,
+ resToastText = R.string.app_name)
+
public class NavitAppConfig extends Application {
private static final int MAX_LAST_ADDRESSES = 10;
diff --git a/navit/attr_def.h b/navit/attr_def.h
index 264365c2e..04848d987 100644
--- a/navit/attr_def.h
+++ b/navit/attr_def.h
@@ -281,7 +281,7 @@ ATTR_UNUSED
ATTR_UNUSED
ATTR_UNUSED
ATTR(window_title)
-ATTR_UNUSED
+ATTR(qt5_platform)
ATTR_UNUSED
/* poi */
ATTR_UNUSED
diff --git a/navit/autoload/Makefile.am b/navit/autoload/Makefile.am
deleted file mode 100644
index 4ca10b6fa..000000000
--- a/navit/autoload/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-SUBDIRS=
-if USE_OSSO
- SUBDIRS += osso
-endif
-
-DIST_SUBDIRS= osso
diff --git a/navit/autoload/osso/Makefile.am b/navit/autoload/osso/Makefile.am
deleted file mode 100644
index bb965beb3..000000000
--- a/navit/autoload/osso/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @LIBOSSO_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=plugin_osso
-moduleautoload_LTLIBRARIES = libplugin_osso.la
-libplugin_osso_la_LDFLAGS=-module -avoid-version @NAVIT_MODULE_LDFLAGS@ @LIBOSSO_LIBS@ #-Wl,--no-undefined
-
-libplugin_osso_la_SOURCES = osso.c
diff --git a/navit/binding/Makefile.am b/navit/binding/Makefile.am
deleted file mode 100644
index 6b782b48a..000000000
--- a/navit/binding/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-SUBDIRS=
-if BINDING_PYTHON
- SUBDIRS+=python
-endif
-if BINDING_DBUS
- SUBDIRS+=dbus
-endif
-
-if BINDING_WIN32
- SUBDIRS+=win32
-endif
-
-
-DIST_SUBDIRS=python dbus win32
-
diff --git a/navit/binding/dbus/Makefile.am b/navit/binding/dbus/Makefile.am
deleted file mode 100644
index 1e6334291..000000000
--- a/navit/binding/dbus/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @DBUS_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=binding_dbus
-modulebinding_LTLIBRARIES = libbinding_dbus.la
-libbinding_dbus_la_SOURCES = binding_dbus.c
-libbinding_dbus_la_LIBADD = @DBUS_LIBS@
-libbinding_dbus_la_LDFLAGS = -module -avoid-version
-
-servicedir = @DBUS_SERVICE_DIR@
-service_in_files = org.navit_project.navit.service.in
-service_DATA = $(service_in_files:.service.in=.service)
-
-$(service_DATA): $(service_in_files) Makefile
- sed -e "s|\@bindir\@|$(bindir)|" $< > $@
-
-EXTRA_DIST = $(service_in_files)
-
-distclean-local:
- rm -f $(service_DATA)
diff --git a/navit/binding/python/Makefile.am b/navit/binding/python/Makefile.am
deleted file mode 100644
index a71632317..000000000
--- a/navit/binding/python/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @PYTHON_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=binding_python
-modulebinding_LTLIBRARIES = libbinding_python.la
-libbinding_python_la_SOURCES = binding_python.c config.c navit.c pcoord.c route.c navigation.c attr.c common.h
-libbinding_python_la_LIBADD = @PYTHON_LIBS@
-libbinding_python_la_LDFLAGS = -module -avoid-version
diff --git a/navit/binding/win32/Makefile.am b/navit/binding/win32/Makefile.am
deleted file mode 100644
index f25c28d3e..000000000
--- a/navit/binding/win32/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = -I$(top_srcdir)/navit -I$(top_srcdir)/navit/binding/win32 @NAVIT_CFLAGS@ -DMODULE=binding_win32
-if PLUGINS
-modulebinding_LTLIBRARIES = libbinding_win32.la
-else
-noinst_LTLIBRARIES = libbinding_win32.la
-endif
-libbinding_win32_la_SOURCES = binding_win32.c binding_win32.h
-libbinding_win32_la_LIBADD =
-libbinding_win32_la_LDFLAGS = -module -avoid-version
-bin_PROGRAMS=tell_navit
-tell_navit_LDADD = @NAVIT_LIBS@
-if SUPPORT_WIN32CE
- tell_navit_LDADD += -L$(top_builddir)/navit/support/libc -lsupport_libc
-endif
diff --git a/navit/event.c b/navit/event.c
index 667e5bdc3..5aee40689 100644
--- a/navit/event.c
+++ b/navit/event.c
@@ -77,6 +77,15 @@ event_remove_watch(struct event_watch *ev)
event_methods.remove_watch(ev);
}
+/**
+ * Add an event timeout
+ *
+ * @param the timeout itself in msec
+ * @param multi 0 means that the timeout will fire only once, 1 means that it will repeat
+ * @param the callback to call when the timeout expires
+ *
+ * @returns the result of the event_methods.add_timeout() call
+ */
struct event_timeout *
event_add_timeout(int timeout, int multi, struct callback *cb)
{
diff --git a/navit/fib-1.1/Makefile.am b/navit/fib-1.1/Makefile.am
deleted file mode 100644
index 7c7b2a130..000000000
--- a/navit/fib-1.1/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-noinst_LTLIBRARIES = libfib.la
-libfib_la_SOURCES = fib.c fib.h fibpriv.h
-EXTRA_DIST=README configure.in fh_extractmin.3 fh_makeheap.3 fh_makekeyheap.3 fibtest.c fibtest2.c tt.c use.c
diff --git a/navit/font/Makefile.am b/navit/font/Makefile.am
deleted file mode 100644
index 620280e6f..000000000
--- a/navit/font/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS=
-if FONT_FREETYPE
- SUBDIRS+=freetype
-endif
diff --git a/navit/font/freetype/Makefile.am b/navit/font/freetype/Makefile.am
deleted file mode 100644
index 4c081e391..000000000
--- a/navit/font/freetype/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @FREETYPE2_CFLAGS@ @FONTCONFIG_CFLAGS@ @FRIBIDI2_CFLAGS@ @FRIBIDI_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=font_freetype
-if PLUGINS
- modulefont_LTLIBRARIES = libfont_freetype.la
-else
- noinst_LTLIBRARIES = libfont_freetype.la
-endif
-libfont_freetype_la_SOURCES = font_freetype.c font_freetype.h
-libfont_freetype_la_LDFLAGS = @FREETYPE2_LIBS@ @FONTCONFIG_LIBS@ @FRIBIDI2_LIBS@ @FRIBIDI_LIBS@ -module -avoid-version
diff --git a/navit/fonts/Makefile.am b/navit/fonts/Makefile.am
deleted file mode 100644
index d8ea2633b..000000000
--- a/navit/fonts/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-
-fonts_DATA =
-fonts_DATA += LiberationMono-Bold.ttf
-fonts_DATA += LiberationMono-BoldItalic.ttf
-fonts_DATA += LiberationMono-Italic.ttf
-fonts_DATA += LiberationMono-Regular.ttf
-fonts_DATA += LiberationSans-Bold.ttf
-fonts_DATA += LiberationSans-BoldItalic.ttf
-fonts_DATA += LiberationSans-Italic.ttf
-fonts_DATA += LiberationSans-Regular.ttf
-fonts_DATA += LiberationSerif-Bold.ttf
-fonts_DATA += LiberationSerif-BoldItalic.ttf
-fonts_DATA += LiberationSerif-Italic.ttf
-fonts_DATA += LiberationSerif-Regular.ttf
diff --git a/navit/graphics/Makefile.am b/navit/graphics/Makefile.am
deleted file mode 100644
index c878b9a35..000000000
--- a/navit/graphics/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-SUBDIRS=
-if GRAPHICS_ANDROID
- SUBDIRS+=android
-endif
-if GRAPHICS_GTK_DRAWING_AREA
- SUBDIRS+=gtk_drawing_area
-endif
-if GRAPHICS_NULL
- SUBDIRS+=null
-endif
-if GRAPHICS_OPENGL
- SUBDIRS+=opengl
-endif
-if GRAPHICS_QT_QPAINTER
- SUBDIRS+=qt_qpainter
-endif
-if GRAPHICS_SDL
- SUBDIRS+=sdl
-endif
-if GRAPHICS_WIN32
- SUBDIRS+=win32
-endif
-if GRAPHICS_GD
- SUBDIRS+=gd
-endif
diff --git a/navit/graphics/android/Makefile.am b/navit/graphics/android/Makefile.am
deleted file mode 100644
index a625edd1c..000000000
--- a/navit/graphics/android/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_android
-if PLUGINS
-modulegraphics_LTLIBRARIES = libgraphics_android.la
-else
-noinst_LTLIBRARIES = libgraphics_android.la
-endif
-libgraphics_android_la_SOURCES = graphics_android.c
-libgraphics_android_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/graphics/egl/CMakeLists.txt b/navit/graphics/egl/CMakeLists.txt
new file mode 100644
index 000000000..1943f2bc0
--- /dev/null
+++ b/navit/graphics/egl/CMakeLists.txt
@@ -0,0 +1,2 @@
+module_add_library(graphics_egl graphics_egl.c)
+
diff --git a/navit/graphics/egl/graphics_egl.c b/navit/graphics/egl/graphics_egl.c
new file mode 100644
index 000000000..4d7780ff4
--- /dev/null
+++ b/navit/graphics/egl/graphics_egl.c
@@ -0,0 +1,1458 @@
+/**
+ * Navit, a modular navigation system.
+ * Copyright (C) 2005-2010 Navit Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <unistd.h>
+#include <math.h>
+#include <stdio.h>
+
+#include <time.h>
+
+#include "item.h"
+#include "attr.h"
+#include "config.h"
+#include "point.h"
+#include "graphics.h"
+#include "color.h"
+#include "plugin.h"
+#include "event.h"
+#include "debug.h"
+#include "callback.h"
+#include "keys.h"
+#include "window.h"
+#include "navit/font/freetype/font_freetype.h"
+
+#include <SDL2/SDL_image.h>
+#include <GLES2/gl2.h>
+#include <EGL/egl.h>
+
+/*
+ * This is work in progress *
+ * Remainng issues :
+ * - SDL mouse cursor sometimes raise an SDL assertion
+ * - Dashed lines to implement
+ * - Full Keyboard handling
+*/
+
+#define SCREEN_WIDTH 800
+#define SCREEN_HEIGHT 600
+
+#define glF(x) x
+#define glD(x) x
+#define GL_F GL_FLOAT
+typedef GLfloat GLf;
+
+struct graphics_gc_priv {
+ struct graphics_priv *gr;
+ float fr, fg, fb, fa;
+ float br, bg, bb, ba;
+ int linewidth;
+ unsigned char *dash_list;
+ int dash_count;
+ int dash_mask;
+} graphics_gc_priv;
+
+struct graphics_priv {
+ int fill_poly;
+ int show_overlays;
+ int button_timeout;
+ struct point p;
+ int width;
+ int height;
+ int library_init;
+ int visible;
+ int overlay_enabled;
+ int overlay_autodisabled;
+ int wraparound;
+ GLuint framebuffer_name;
+ GLuint overlay_texture;
+ struct graphics_priv *parent;
+ struct graphics_priv *overlays;
+ struct graphics_priv *next;
+ struct graphics_gc_priv *background_gc;
+ enum draw_mode_num mode;
+ GLuint program;
+ GLint mvp_location, position_location, color_location, texture_position_location, use_texture_location, texture_location;
+ struct callback_list *cbl;
+ struct font_freetype_methods freetype_methods;
+ struct navit *nav;
+ int timeout;
+ int delay;
+ struct window window;
+ int dirty; //display needs to be redrawn (draw on root graphics or overlay is done)
+ int force_redraw; //display needs to be redrawn (draw on root graphics or overlay is done)
+ time_t last_refresh_time; //last display refresh time
+ struct graphics_opengl_platform *platform;
+ struct graphics_opengl_platform_methods *platform_methods;
+};
+
+struct graphics_image_priv {
+ SDL_Surface *img;
+} graphics_image_priv;
+
+
+struct graphics_opengl_platform {
+ SDL_Window* eglwindow;
+ SDL_GLContext eglcontext;
+ EGLDisplay egldisplay;
+ EGLConfig config[1];
+};
+
+struct contour
+{
+ struct point *p;
+ unsigned int count;
+};
+
+static GHashTable *hImageData;
+static int USERWANTSTOQUIT = 0;
+static struct graphics_priv *graphics_priv_root;
+static struct graphics_priv *graphics_opengl_new_helper(struct
+ graphics_methods
+ *meth);
+
+/*
+ * GLES 2 Compatible vertex and fragment shaders
+ * Taken from opengl driver
+ */
+const char vertex_src [] =
+" \
+ attribute vec2 position; \
+ attribute vec2 texture_position; \
+ uniform mat4 mvp; \
+ varying vec2 v_texture_position; \
+ \
+ void main() \
+ { \
+ v_texture_position=texture_position; \
+ gl_Position = mvp*vec4(position, 0.0, 1.0); \
+ } \
+";
+
+const char fragment_src [] =
+" \
+ uniform lowp vec4 avcolor; \
+ uniform sampler2D texture; \
+ uniform bool use_texture; \
+ varying vec2 v_texture_position; \
+ void main() \
+ { \
+ if (use_texture) { \
+ gl_FragColor = texture2D(texture, v_texture_position); \
+ } else { \
+ gl_FragColor = avcolor; \
+ } \
+ } \
+";
+
+/*
+* C conversion of Efficient Polygon Triangulation
+* Found at http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml
+* Adapted and debugged for this use
+*/
+float area(const struct contour* contour)
+{
+ int p, q;
+ int n = contour->count - 1;
+ float A = 0.f;
+
+ for (p=n-1, q=0; q < n; p=q++)
+ {
+ A += contour->p[p].x * contour->p[q].y - contour->p[q].x * contour->p[p].y;
+ }
+ return A * .5f;
+}
+
+int
+inside_triangle(float Ax, float Ay,
+ float Bx, float By,
+ float Cx, float Cy,
+ float Px, float Py)
+{
+ float ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy;
+ float cCROSSap, bCROSScp, aCROSSbp;
+
+ ax = Cx - Bx; ay = Cy - By;
+ bx = Ax - Cx; by = Ay - Cy;
+ cx = Bx - Ax; cy = By - Ay;
+ apx= Px - Ax; apy= Py - Ay;
+ bpx= Px - Bx; bpy= Py - By;
+ cpx= Px - Cx; cpy= Py - Cy;
+
+ aCROSSbp = ax*bpy - ay*bpx;
+ cCROSSap = cx*apy - cy*apx;
+ bCROSScp = bx*cpy - by*cpx;
+
+ return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f));
+}
+
+int
+snip(const struct point* pnt,int u,int v,int w,int n,int *V)
+{
+ int p;
+ float Ax, Ay, Bx, By, Cx, Cy, Px, Py;
+
+ Ax = pnt[V[u]].x;
+ Ay = pnt[V[u]].y;
+
+ Bx = pnt[V[v]].x;
+ By = pnt[V[v]].y;
+
+ Cx = pnt[V[w]].x;
+ Cy = pnt[V[w]].y;
+
+ if ( (((Bx-Ax)*(Cy-Ay)) - ((By-Ay)*(Cx-Ax))) < 0.f )
+ return 0;
+
+ for (p=0;p<n;p++)
+ {
+ if( (p == u) || (p == v) || (p == w) )
+ continue;
+ Px = pnt[V[p]].x;
+ Py = pnt[V[p]].y;
+ if (inside_triangle(Ax,Ay,Bx,By,Cx,Cy,Px,Py))
+ return 0;
+ }
+
+ return 1;
+}
+
+int
+process_triangles(const struct contour* contour, struct contour* result)
+{
+ int v;
+ int contour_size = contour->count - 1;
+ int polygon_temp_size = contour_size * 80;
+ int final_count = 0;
+ result->p = malloc(sizeof(struct point) * polygon_temp_size);
+
+ int n = contour_size;
+ if ( n < 3 ) return 0;
+
+ int *V = alloca(sizeof(int)*n);
+
+ if ( 0.0f < area(contour) )
+ for (v=0; v<n; v++) V[v] = v;
+ else
+ for(v=0; v<n; v++) V[v] = (n-1)-v;
+
+ int nv = n;
+
+ int count = 2*nv;
+
+ for(v=nv-1; nv>2; )
+ {
+ /* if we loop, it is probably a non-simple polygon */
+ if (0 >= (count--))
+ {
+ //** Triangulate: ERROR - probable bad polygon!
+ break;
+ }
+
+ /* three consecutive vertices in current polygon, <u,v,w> */
+ int u = v ; if (nv <= u) u = 0; /* previous */
+ v = u+1; if (nv <= v) v = 0; /* new v */
+ int w = v+1; if (nv <= w) w = 0; /* next */
+
+ if ( snip(contour->p,u,v,w,nv,V) )
+ {
+ int a,b,c,s,t;
+
+ /* true names of the vertices */
+ a = V[u]; b = V[v]; c = V[w];
+
+ /* output Triangle */
+ result->p[final_count++] = contour->p[a];
+ result->p[final_count++] = contour->p[b];
+ result->p[final_count++] = contour->p[c];
+
+ if (final_count >= polygon_temp_size){
+ free(result->p);
+ return 0;
+ }
+
+ /* remove v from remaining polygon */
+ for(s=v,t=v+1;t<nv;s++,t++)
+ V[s] = V[t];
+ nv--;
+
+ /* resest error detection counter */
+ count = 2*nv;
+ }
+ }
+
+ result->count = final_count;
+
+ return 1;
+}
+
+// ** Efficient Polygon Triangulation **
+
+/*
+ * Destroys SDL/EGL context
+ */
+static void
+sdl_egl_destroy(struct graphics_opengl_platform *egl)
+{
+ if (egl->eglwindow){
+ SDL_GL_DeleteContext(egl->eglcontext);
+ SDL_DestroyWindow(egl->eglwindow);
+ }
+ g_free(egl);
+ SDL_Quit();
+}
+
+/*
+ * Swap EGL buffer
+ */
+static void
+sdl_egl_swap_buffers(struct graphics_opengl_platform *egl)
+{
+ SDL_GL_SwapWindow(egl->eglwindow);
+}
+
+/*
+ * Main graphic destroy
+ */
+static void
+graphics_destroy(struct graphics_priv *gr)
+{
+ /*FIXME graphics_destroy is never called */
+ gr->freetype_methods.destroy();
+ g_free(gr);
+ gr = NULL;
+ sdl_egl_destroy(gr->platform);
+ SDL_Quit();
+}
+
+static void
+gc_destroy(struct graphics_gc_priv *gc)
+{
+ g_free(gc);
+ gc = NULL;
+}
+
+static void
+gc_set_linewidth(struct graphics_gc_priv *gc, int w)
+{
+ gc->linewidth = w;
+}
+
+static void
+gc_set_dashes(struct graphics_gc_priv *gc, int width, int offset,
+ unsigned char *dash_list, int n)
+{
+ int i;
+ const int cOpenglMaskBits = 16;
+ gc->dash_count = n;
+ if (1 == n) {
+ gc->dash_mask = 0;
+ for (i = 0; i < cOpenglMaskBits; ++i) {
+ gc->dash_mask <<= 1;
+ gc->dash_mask |= (i / n) % 2;
+ }
+ } else if (1 < n) {
+ unsigned char *curr = dash_list;
+ int cnt = 0; //dot counter
+ int dcnt = 0; //dash element counter
+ int sum_dash = 0;
+ gc->dash_mask = 0;
+
+ for (i = 0; i < n; ++i) {
+ sum_dash += dash_list[i];
+ }
+
+ //scale dashlist elements to max size
+ if (sum_dash > cOpenglMaskBits) {
+ int num_error[2] = { 0, 0 }; //count elements rounded to 0 for odd(drawn) and even(masked) for compensation
+ double factor = (1.0 * cOpenglMaskBits) / sum_dash;
+ for (i = 0; i < n; ++i) { //calculate dashlist max and largest common denomiator for scaling
+ dash_list[i] *= factor;
+ if (dash_list[i] == 0) {
+ ++dash_list[i];
+ ++num_error[i % 2];
+ } else if (0 < num_error[i % 2]
+ && 2 < dash_list[i]) {
+ ++dash_list[i];
+ --num_error[i % 2];
+ }
+ }
+ }
+ //calculate mask
+ for (i = 0; i < cOpenglMaskBits; ++i) {
+ gc->dash_mask <<= 1;
+ gc->dash_mask |= 1 - dcnt % 2;
+ ++cnt;
+ if (cnt == *curr) {
+ cnt = 0;
+ ++curr;
+ ++dcnt;
+ if (dcnt == n) {
+ curr = dash_list;
+ }
+ }
+ }
+ }
+}
+
+
+static void
+gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
+{
+ gc->fr = c->r / 65535.0;
+ gc->fg = c->g / 65535.0;
+ gc->fb = c->b / 65535.0;
+ gc->fa = c->a / 65535.0;
+}
+
+static void
+gc_set_background(struct graphics_gc_priv *gc, struct color *c)
+{
+ gc->br = c->r / 65535.0;
+ gc->bg = c->g / 65535.0;
+ gc->bb = c->b / 65535.0;
+ gc->ba = c->a / 65535.0;
+}
+
+static struct graphics_gc_methods gc_methods = {
+ gc_destroy,
+ gc_set_linewidth,
+ gc_set_dashes,
+ gc_set_foreground,
+ gc_set_background
+};
+
+static struct graphics_gc_priv *
+gc_new(struct graphics_priv *gr, struct graphics_gc_methods *meth)
+{
+ struct graphics_gc_priv *gc = g_new0(struct graphics_gc_priv, 1);
+
+ *meth = gc_methods;
+ gc->gr = gr;
+ gc->linewidth = 1;
+ return gc;
+}
+
+static struct graphics_image_priv image_error;
+
+static struct graphics_image_priv *
+image_new(struct graphics_priv *gr, struct graphics_image_methods *meth, char *name, int *w, int *h,
+ struct point *hot, int rotation)
+{
+ struct graphics_image_priv *gi;
+
+ /* FIXME: meth is not used yet.. so gi leaks. at least xpm is small */
+
+ struct graphics_image_priv *curr_elem =
+ g_hash_table_lookup(hImageData, name);
+
+ if (curr_elem == &image_error) {
+ //found but couldn't be loaded
+ return NULL;
+ } else if (curr_elem) {
+ //found and OK -> use hastable entry
+ *w = curr_elem->img->w;
+ *h = curr_elem->img->h;
+ hot->x = *w / 2;
+ hot->y = *h / 2;
+ return curr_elem;
+ }
+
+ if (strlen(name) < 4) {
+ g_hash_table_insert(hImageData, g_strdup(name),
+ &image_error);
+ return NULL;
+ }
+
+ gi = g_new0(struct graphics_image_priv, 1);
+ gi->img = IMG_Load(name);
+ if(gi->img)
+ {
+ *w=gi->img->w;
+ *h=gi->img->h;
+ hot->x=*w/2;
+ hot->y=*h/2;
+ }
+ else
+ {
+ /* TODO: debug "colour parse errors" on xpm */
+ dbg(lvl_error,"image_new on '%s' failed: %s\n", name, IMG_GetError());
+ g_free(gi);
+ gi = NULL;
+ g_hash_table_insert(hImageData,
+ g_strdup(name),
+ &image_error);
+ return gi;
+ }
+
+ g_hash_table_insert(hImageData, g_strdup(name), gi);
+ return gi;
+}
+
+static void
+image_free(struct graphics_priv *gr, struct graphics_image_priv * gi)
+{
+// SDL_FreeSurface(gi->img);
+// g_free(gi);
+}
+
+static void
+set_color(struct graphics_priv *gr, struct graphics_gc_priv *gc)
+{
+ GLfloat col[4];
+ col[0]=gc->fr;
+ col[1]=gc->fg;
+ col[2]=gc->fb;
+ col[3]=gc->fa;
+ glUniform4fv(gr->color_location, 1, col);
+}
+
+static void
+draw_array(struct graphics_priv *gr, struct point *p, int count, GLenum mode)
+{
+ int i;
+ GLf *x;//[count*2];
+ x = alloca(sizeof(GLf)*count*2);
+ for (i = 0 ; i < count ; i++) {
+ x[i*2]=glF(p[i].x);
+ x[i*2+1]=glF(p[i].y);
+ }
+
+ glVertexAttribPointer (gr->position_location, 2, GL_FLOAT, 0, 0, x );
+ glDrawArrays(mode, 0, count);
+}
+
+static void
+draw_rectangle_do(struct graphics_priv *gr, struct point *p, int w, int h)
+{
+ struct point pa[4];
+ pa[0]=pa[1]=pa[2]=pa[3]=*p;
+ pa[0].x+=w;
+ pa[1].x+=w;
+ pa[1].y+=h;
+ pa[3].y+=h;
+ draw_array(gr, pa, 4, GL_TRIANGLE_STRIP);
+}
+
+
+static void
+draw_image_es(struct graphics_priv *gr, struct point *p, int w, int h, unsigned char *data)
+{
+ GLf x[8];
+ GLuint texture;
+ memset(x, 0, sizeof(x));
+
+ glGenTextures(1, &texture);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
+
+ x[0]+=glF(1);
+ x[2]+=glF(1);
+ x[3]+=glF(1);
+ x[7]+=glF(1);
+ glUniform1i(gr->use_texture_location, 1);
+ glEnableVertexAttribArray(gr->texture_position_location);
+ glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x );
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ draw_rectangle_do(gr, p, w, h);
+
+ glUniform1i(gr->use_texture_location, 0);
+ glDisableVertexAttribArray(gr->texture_position_location);
+
+ glDisable(GL_BLEND);
+ glDeleteTextures(1, &texture);
+}
+
+inline void
+get_overlay_pos(struct graphics_priv *gr, struct point *point_out)
+{
+ if (gr->parent == NULL) {
+ point_out->x = 0;
+ point_out->y = 0;
+ return;
+ }
+ point_out->x = gr->p.x;
+ if (point_out->x < 0) {
+ point_out->x += gr->parent->width;
+ }
+
+ point_out->y = gr->p.y;
+ if (point_out->y < 0) {
+ point_out->y += gr->parent->height;
+ }
+}
+
+inline void
+draw_overlay(struct graphics_priv *gr)
+{
+ struct point p_eff;
+ GLf x[8];
+
+ get_overlay_pos(gr, &p_eff);
+
+ memset(x, 0, 8*sizeof(GLf));
+ x[0]+=glF(1);
+ x[1]+=glF(1);
+ x[2]+=glF(1);
+ x[5]+=glF(1);
+
+ glUniform1i(gr->use_texture_location, 1);
+ glEnableVertexAttribArray(gr->texture_position_location);
+ glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x);
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBindTexture(GL_TEXTURE_2D, gr->overlay_texture);
+
+ draw_rectangle_do(graphics_priv_root, &p_eff, gr->width, gr->height);
+
+ glUniform1i(gr->use_texture_location, 0);
+ glDisableVertexAttribArray(gr->texture_position_location);
+
+ glDisable(GL_BLEND);
+}
+
+static void
+draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc,
+ struct point *p, int count)
+{
+ if ((gr->parent && !gr->parent->overlay_enabled)
+ || (gr->parent && gr->parent->overlay_enabled
+ && !gr->overlay_enabled)) {
+ return;
+ }
+
+ glLineWidth(gc->linewidth);
+
+ set_color(gr, gc);
+ graphics_priv_root->dirty = 1;
+
+ draw_array(gr, p, count, GL_LINE_STRIP);
+}
+
+
+static void
+draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc,
+ struct point *p, int count)
+{
+ int ok;
+ if ((gr->parent && !gr->parent->overlay_enabled)
+ || (gr->parent && gr->parent->overlay_enabled
+ && !gr->overlay_enabled)) {
+ return;
+ }
+ set_color(gr, gc);
+ graphics_priv_root->dirty = 1;
+ struct contour contour, result;
+ contour.count = count;
+ contour.p = p;
+ ok = process_triangles(&contour, &result);
+ if (ok && gr->fill_poly){
+ draw_array(gr, result.p, result.count, GL_TRIANGLES);
+ free(result.p);
+ } else {
+ draw_array(gr, p, count, GL_LINE_STRIP);
+ }
+}
+
+static void
+draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc,
+ struct point *p, int w, int h)
+{
+ if ((gr->parent && !gr->parent->overlay_enabled)
+ || (gr->parent && gr->parent->overlay_enabled
+ && !gr->overlay_enabled)) {
+ return;
+ }
+ set_color(gr, gc);
+ draw_rectangle_do(gr, p, w, h);
+ graphics_priv_root->dirty = 1;
+}
+
+static void
+display_text_draw(struct font_freetype_text *text,
+ struct graphics_priv *gr, struct graphics_gc_priv *fg,
+ struct graphics_gc_priv *bg, int color, struct point *p)
+{
+ int i, x, y, stride;
+ struct font_freetype_glyph *g, **gp;
+ unsigned char *shadow, *glyph;
+ struct color transparent = { 0x0000, 0x0000, 0x0000, 0x0000 };
+ struct color black =
+ { fg->fr * 65535, fg->fg * 65535, fg->fb * 65535,
+ fg->fa * 65535 };
+ struct color white = { 0xffff, 0xffff, 0xffff, 0xffff };
+
+ if (bg) {
+ if (COLOR_IS_WHITE(black) && COLOR_IS_BLACK(white)) {
+ black.r = 65535;
+ black.g = 65535;
+ black.b = 65535;
+ black.a = 65535;
+
+ white.r = 0;
+ white.g = 0;
+ white.b = 0;
+ white.a = 65535;
+ } else if (COLOR_IS_BLACK(black) && COLOR_IS_WHITE(white)) {
+ white.r = 65535;
+ white.g = 65535;
+ white.b = 65535;
+ white.a = 65535;
+
+ black.r = 0;
+ black.g = 0;
+ black.b = 0;
+ black.a = 65535;
+ } else {
+ white.r = bg->fr;
+ white.g = bg->fg;
+ white.b = bg->fb;
+ white.a = bg->fa;
+ }
+ } else {
+ white.r = 0;
+ white.g = 0;
+ white.b = 0;
+ white.a = 0;
+ }
+
+ gp = text->glyph;
+ i = text->glyph_count;
+ x = p->x << 6;
+ y = p->y << 6;
+ while (i-- > 0) {
+ g = *gp++;
+ if (g->w && g->h && bg) {
+ stride = (g->w + 2) * 4;
+ if (color) {
+ shadow = g_malloc(stride * (g->h + 2));
+ gr->freetype_methods.get_shadow(g, shadow,
+ stride,
+ &white,
+ &transparent);
+
+ struct point p;
+ p.x=((x + g->x) >> 6)-1;
+ p.y=((y + g->y) >> 6)-1;
+ draw_image_es(gr, &p, g->w+2, g->h+2, shadow);
+
+ g_free(shadow);
+ }
+ }
+ x += g->dx;
+ y += g->dy;
+ }
+
+ x = p->x << 6;
+ y = p->y << 6;
+ gp = text->glyph;
+ i = text->glyph_count;
+ while (i-- > 0) {
+ g = *gp++;
+ if (g->w && g->h) {
+ if (color) {
+ stride = g->w;
+ if (bg) {
+ glyph =
+ g_malloc(stride * g->h * 4);
+ gr->freetype_methods.get_glyph(g,
+ glyph,
+ stride
+ * 4,
+ &black,
+ &white,
+ &transparent);
+ struct point p;
+ p.x=(x + g->x) >> 6;
+ p.y=(y + g->y) >> 6;
+ draw_image_es(gr, &p, g->w, g->h, glyph);
+
+ g_free(glyph);
+ }
+ stride *= 4;
+ glyph = g_malloc(stride * g->h);
+ gr->freetype_methods.get_glyph(g, glyph,
+ stride,
+ &black,
+ &white,
+ &transparent);
+ struct point p;
+ p.x=(x + g->x) >> 6;
+ p.y=(y + g->y) >> 6;
+ draw_image_es(gr, &p, g->w, g->h, glyph);
+
+ g_free(glyph);
+ }
+ }
+ x += g->dx;
+ y += g->dy;
+ }
+}
+
+static void
+draw_text(struct graphics_priv *gr, struct graphics_gc_priv *fg,
+ struct graphics_gc_priv *bg, struct graphics_font_priv *font,
+ char *text, struct point *p, int dx, int dy)
+{
+ if ((gr->parent && !gr->parent->overlay_enabled)
+ || (gr->parent && gr->parent->overlay_enabled
+ && !gr->overlay_enabled)) {
+ return;
+ }
+
+ struct font_freetype_text *t;
+ int color = 1;
+
+ if (!font) {
+ dbg(lvl_error, "no font, returning\n");
+ return;
+ }
+ graphics_priv_root->dirty = 1;
+
+ t = gr->freetype_methods.text_new(text,
+ (struct font_freetype_font *)
+ font, dx, dy);
+
+ struct point p_eff;
+ p_eff.x = p->x;
+ p_eff.y = p->y;
+
+ display_text_draw(t, gr, fg, bg, color, &p_eff);
+ gr->freetype_methods.text_destroy(t);
+}
+
+
+static void
+draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg,
+ struct point *p, struct graphics_image_priv *img)
+{
+ draw_image_es(gr, p, img->img->w, img->img->h, img->img->pixels);
+}
+
+static void
+draw_drag(struct graphics_priv *gr, struct point *p)
+{
+ if (p) {
+ gr->p.x = p->x;
+ gr->p.y = p->y;
+ }
+}
+
+static void
+background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
+{
+ gr->background_gc = gc;
+}
+
+/*
+ * Draws map in background
+ */
+static void
+draw_background(struct graphics_priv *gr)
+{
+ struct point p_eff;
+ GLf x[8];
+
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ glViewport(0, 0, gr->width, gr->height);
+ //get_overlay_pos(gr, &p_eff);
+ p_eff.x = gr->p.x;
+ p_eff.y = gr->p.y;
+
+ memset(x, 0, 8*sizeof(GLf));
+ x[0]+=glF(1);
+ x[1]+=glF(1);
+ x[2]+=glF(1);
+ x[5]+=glF(1);
+
+ glUniform1i(gr->use_texture_location, 1);
+ glEnableVertexAttribArray(gr->texture_position_location);
+ glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x);
+
+ glDisable(GL_BLEND);
+ glBindTexture(GL_TEXTURE_2D, gr->overlay_texture);
+
+ draw_rectangle_do(gr, &p_eff, gr->width, gr->height);
+
+ glUniform1i(gr->use_texture_location, 0);
+ glDisableVertexAttribArray(gr->texture_position_location);
+}
+
+/*
+ Drawing method :
+ Map and overlays are rendered in an offscreen buffer (See render to texture)
+ and are recomposed altogether at draw_mode_end request for root
+*/
+static void
+draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
+{
+ GLfloat matrix[16];
+ struct graphics_priv *overlay = NULL;
+ int i;
+
+ if (mode == draw_mode_begin){
+ // Should not be necessary...
+ // SDL_GL_MakeCurrent(gr->platform->eglwindow, gr->platform->eglcontext);
+
+ if (gr->parent == NULL){
+ // Full redraw, reset drag position
+ gr->p.x = 0;
+ gr->p.y = 0;
+ }
+
+ // Need to setup appropriate projection matrix
+ for (i = 0; i < 16 ; i++){
+ matrix[i] = 0.0;
+ }
+
+ matrix[0]=2.0 / gr->width;
+ matrix[5]=-2.0 / gr->height;
+ matrix[10]=1;
+ matrix[12]=-1;
+ matrix[13]=1;
+ matrix[15]=1;
+ glUniformMatrix4fv(gr->mvp_location, 1, GL_FALSE, matrix);
+
+ glBindFramebuffer(GL_FRAMEBUFFER, gr->framebuffer_name);
+ glViewport(0,0,gr->width,gr->height);
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ if (mode == draw_mode_end && gr->parent == NULL) {
+ overlay = gr->overlays;
+ draw_background(gr);
+ while(overlay){
+ if (gr->overlay_enabled)
+ draw_overlay(overlay);
+ overlay = overlay->next;
+ }
+ sdl_egl_swap_buffers(gr->platform);
+ }
+
+ gr->mode = mode;
+}
+
+static int
+graphics_opengl_fullscreen(struct window *w, int on)
+{
+ return 1;
+}
+
+static void
+graphics_opengl_disable_suspend(struct window *w)
+{
+ // No op
+}
+
+
+static GLuint
+load_shader(const char *shader_source, GLenum type)
+{
+ GLuint shader = glCreateShader(type);
+
+ glShaderSource(shader, 1, &shader_source, NULL);
+ glCompileShader(shader);
+
+ return shader;
+}
+
+static void *
+get_data(struct graphics_priv *this, const char *type)
+{
+ GLuint vertexShader;
+ GLuint fragmentShader;
+ struct window* win;
+ int i;
+
+ if (!strcmp(type, "gtk_widget")) {
+ fprintf(stderr,
+ "Currently GTK gui is not yet supported with EGL graphics driver\n");
+ return NULL;
+ }
+
+ if(strcmp(type, "window") == 0) {
+ SDL_GL_MakeCurrent(this->platform->eglwindow, this->platform->eglcontext);
+
+ glClearColor ( 0 , 0 , 0 , 1);
+ glClear ( GL_COLOR_BUFFER_BIT );
+
+ callback_list_call_attr_2(graphics_priv_root->cbl, attr_resize,
+ GINT_TO_POINTER(this->width), GINT_TO_POINTER(this->height));
+
+ this->program = glCreateProgram();
+ vertexShader = load_shader(vertex_src, GL_VERTEX_SHADER);
+ fragmentShader = load_shader(fragment_src, GL_FRAGMENT_SHADER);
+
+ glAttachShader(this->program, vertexShader);
+ glAttachShader(this->program, fragmentShader);
+ glLinkProgram(this->program);
+ glUseProgram(this->program);
+
+ this->mvp_location = glGetUniformLocation(this->program, "mvp");
+ this->position_location = glGetAttribLocation(this->program, "position");
+ glEnableVertexAttribArray(this->position_location);
+ this->texture_position_location = glGetAttribLocation(this->program, "texture_position");
+ this->color_location = glGetUniformLocation(this->program, "avcolor");
+ this->texture_location = glGetUniformLocation(this->program, "texture");
+ this->use_texture_location = glGetUniformLocation(this->program, "use_texture");
+
+ glUniform1i(this->use_texture_location, 0);
+ glUniform1i(this->texture_location, 0);
+
+ win=g_new(struct window, 1);
+ win->priv=this;
+ win->disable_suspend=NULL;
+ win->fullscreen = graphics_opengl_fullscreen;
+ win->disable_suspend = graphics_opengl_disable_suspend;
+ return win;
+ }
+
+ return NULL;
+
+}
+
+static void
+overlay_disable(struct graphics_priv *gr, int disable)
+{
+ gr->overlay_enabled = !disable;
+ gr->force_redraw = 1;
+ draw_mode(gr, draw_mode_end);
+}
+
+// Need more testing
+static void
+overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h,
+ int wraparound)
+{
+ int changed = 0;
+ int w2, h2;
+
+ if (w == 0) {
+ w2 = 1;
+ } else {
+ w2 = w;
+ }
+
+ if (h == 0) {
+ h2 = 1;
+ } else {
+ h2 = h;
+ }
+
+ gr->p = *p;
+ if (gr->width != w2) {
+ gr->width = w2;
+ changed = 1;
+ }
+
+ if (gr->height != h2) {
+ gr->height = h2;
+ changed = 1;
+ }
+
+ gr->wraparound = wraparound;
+
+ if (changed) {
+ if ((w == 0) || (h == 0)) {
+ gr->overlay_autodisabled = 1;
+ } else {
+ gr->overlay_autodisabled = 0;
+ // Reset overlay texture
+ glDeleteTextures(1, &gr->overlay_texture);
+ glGenTextures(1, &gr->overlay_texture);
+ glBindTexture(GL_TEXTURE_2D, gr->overlay_texture);
+ glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, gr->width, gr->height, 0,GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gr->overlay_texture, 0);
+ }
+
+ callback_list_call_attr_2(gr->cbl, attr_resize,
+ GINT_TO_POINTER(gr->width),
+ GINT_TO_POINTER(gr->height));
+ }
+}
+
+
+static struct graphics_priv *overlay_new(struct graphics_priv *gr,
+ struct graphics_methods *meth,
+ struct point *p, int w, int h,
+ int wraparound);
+
+static struct graphics_methods graphics_methods = {
+ graphics_destroy,
+ draw_mode,
+ draw_lines,
+ draw_polygon,
+ draw_rectangle,
+ NULL,
+ draw_text,
+ draw_image,
+ NULL,
+ draw_drag,
+ NULL,
+ gc_new,
+ background_gc,
+ overlay_new,
+ image_new,
+ get_data,
+ image_free,
+ NULL,
+ overlay_disable,
+ overlay_resize,
+ NULL, /* set_attr, */
+ NULL, /* show_native_keyboard */
+ NULL, /* hide_native_keyboard */
+};
+
+static struct graphics_priv *
+graphics_opengl_new_helper(struct graphics_methods *meth)
+{
+ struct font_priv *(*font_freetype_new) (void *meth);
+ font_freetype_new = plugin_get_category_font("freetype");
+
+ if (!font_freetype_new) {
+ return NULL;
+ }
+
+ struct graphics_priv *this = g_new0(struct graphics_priv, 1);
+
+ font_freetype_new(&this->freetype_methods);
+ *meth = graphics_methods;
+
+ meth->font_new =
+ (struct graphics_font_priv *
+ (*)(struct graphics_priv *, struct graphics_font_methods *,
+ char *, int, int)) this->freetype_methods.font_new;
+ meth->get_text_bbox =
+ (void (*) (struct graphics_priv *, struct graphics_font_priv *,
+ char *, int, int, struct point*, int)) this->freetype_methods.get_text_bbox;
+ return this;
+}
+
+static void
+create_framebuffer_texture(struct graphics_priv *gr)
+{
+ GLenum status;
+ // Prepare a new framebuffer object
+ glGenFramebuffers(1, &gr->framebuffer_name);
+ glBindFramebuffer(GL_FRAMEBUFFER, gr->framebuffer_name);
+
+ glGenTextures(1, &gr->overlay_texture);
+ glBindTexture(GL_TEXTURE_2D, gr->overlay_texture);
+ glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, gr->width, gr->height, 0,GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gr->overlay_texture, 0);
+
+ status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+ if (status != GL_FRAMEBUFFER_COMPLETE) {
+ printf("Error creating texture framebuffer for overlay, exiting.\n");
+ SDL_Quit();
+ exit(1);
+ }
+}
+
+static struct graphics_priv *
+overlay_new(struct graphics_priv *gr, struct graphics_methods *meth,
+ struct point *p, int w, int h, int wraparound)
+{
+ struct graphics_priv *this = graphics_opengl_new_helper(meth);
+
+ this->p.x = p->x;
+ this->p.y = p->y;
+
+ this->width = w;
+ this->height = h;
+ this->parent = gr;
+ this->overlays = NULL;
+ this->fill_poly = 1;
+
+ // Copy shader locations parameters
+ this->mvp_location = graphics_priv_root->mvp_location;
+ this->position_location = graphics_priv_root->position_location;
+ this->texture_position_location = graphics_priv_root->texture_position_location;
+ this->color_location = graphics_priv_root->color_location;
+ this->texture_location = graphics_priv_root->texture_location;
+ this->use_texture_location = graphics_priv_root->use_texture_location;
+
+ if ((w == 0) || (h == 0)) {
+ this->overlay_autodisabled = 1;
+ } else {
+ this->overlay_autodisabled = 0;
+ }
+ this->overlay_enabled = 1;
+
+ this->next = gr->overlays;
+ gr->overlays = this;
+
+ create_framebuffer_texture(this);
+
+ return this;
+}
+
+
+static gboolean graphics_sdl_idle(void *data)
+{
+ struct graphics_priv *gr = (struct graphics_priv *)data;
+ struct point p;
+ SDL_Event ev;
+ int ret;
+ char key_mod = 0;
+ char keybuf[8];
+ char keycode;
+
+ // Process SDL events (KEYS + MOUSE)
+ while(1)
+ {
+ ret = SDL_PollEvent(&ev);
+
+ if(!ret)
+ break;
+
+ switch(ev.type)
+ {
+ case SDL_MOUSEMOTION:
+ {
+ p.x = ev.motion.x;
+ p.y = ev.motion.y;
+ //gr->force_redraw = 1;
+ callback_list_call_attr_1(gr->cbl, attr_motion, (void *)&p);
+ break;
+ }
+
+ case SDL_KEYDOWN:
+ {
+ memset(keybuf, 0, sizeof(keybuf));
+ switch(ev.key.keysym.sym)
+ {
+ case SDLK_F1:
+ graphics_priv_root->fill_poly = !graphics_priv_root->fill_poly;
+ break;
+ case SDLK_F2:
+ graphics_priv_root->show_overlays = !graphics_priv_root->show_overlays;
+ break;
+ case SDLK_LEFT:
+ {
+ keybuf[0] = NAVIT_KEY_LEFT;
+ break;
+ }
+ case SDLK_RIGHT:
+ {
+ keybuf[0] = NAVIT_KEY_RIGHT;
+ break;
+ }
+ case SDLK_BACKSPACE:
+ {
+ keybuf[0] = NAVIT_KEY_BACKSPACE;
+ break;
+ }
+ case SDLK_RETURN:
+ {
+ keybuf[0] = NAVIT_KEY_RETURN;
+ break;
+ }
+ case SDLK_DOWN:
+ {
+ keybuf[0] = NAVIT_KEY_DOWN;
+ break;
+ }
+ case SDLK_PAGEUP:
+ {
+ keybuf[0] = NAVIT_KEY_ZOOM_OUT;
+ break;
+ }
+ case SDLK_UP:
+ {
+ keybuf[0] = NAVIT_KEY_UP;
+ break;
+ }
+ case SDLK_PAGEDOWN:
+ {
+ keybuf[0] = NAVIT_KEY_ZOOM_IN;
+ break;
+ }
+ case SDLK_ESCAPE:
+ {
+ USERWANTSTOQUIT = 1;
+ break;
+ }
+ default:
+ {
+ /* return unicode chars when they can be converted to ascii */
+ // Need more work...
+ keycode = ev.key.keysym.sym;
+ keybuf[0] = keycode <= 127 ? keycode : 0;
+ break;
+ }
+ }
+ if (keybuf[0]) {
+ callback_list_call_attr_1(gr->cbl, attr_keypress, (void *)keybuf);
+ }
+ break;
+ }
+ case SDL_KEYUP:
+ {
+ break;
+ }
+ case SDL_MOUSEBUTTONDOWN:
+ {
+ p.x = ev.button.x;
+ p.y = ev.button.y;
+ graphics_priv_root->force_redraw = 1;
+ callback_list_call_attr_3(gr->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER((int)ev.button.button), (void *)&p);
+ break;
+ }
+
+ case SDL_MOUSEBUTTONUP:
+ {
+ p.x = ev.button.x;
+ p.y = ev.button.y;
+ callback_list_call_attr_3(gr->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER((int)ev.button.button), (void *)&p);
+ break;
+ }
+
+ case SDL_QUIT:
+ {
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
+
+ if (USERWANTSTOQUIT){
+ SDL_Quit();
+ exit(0);
+ }
+
+ return TRUE;
+}
+
+
+static struct graphics_priv *
+graphics_opengl_new(struct navit *nav, struct graphics_methods *meth,
+ struct attr **attrs, struct callback_list *cbl)
+{
+ struct attr *attr;
+ if (!event_request_system("glib", "graphics_opengl_new"))
+ return NULL;
+
+ hImageData = g_hash_table_new(g_str_hash, g_str_equal);
+ struct graphics_priv *this = graphics_opengl_new_helper(meth);
+ graphics_priv_root = this;
+
+ this->nav = nav;
+ this->parent = NULL;
+ this->overlay_enabled = 1;
+ this->framebuffer_name = 0;
+ this->overlays = NULL;
+ this->fill_poly = 1;
+ this->show_overlays = 1;
+
+ this->width = SCREEN_WIDTH;
+ if ((attr = attr_search(attrs, NULL, attr_w)))
+ this->width = attr->u.num;
+ this->height = SCREEN_HEIGHT;
+ if ((attr = attr_search(attrs, NULL, attr_h)))
+ this->height = attr->u.num;
+ this->timeout = 100;
+ if ((attr = attr_search(attrs, NULL, attr_timeout)))
+ this->timeout = attr->u.num;
+ this->delay = 0;
+ if ((attr = attr_search(attrs, NULL, attr_delay)))
+ this->delay = attr->u.num;
+ this->cbl = cbl;
+
+ this->framebuffer_name = 0;
+
+ graphics_priv_root->cbl = cbl;
+ graphics_priv_root->width = this->width;
+ graphics_priv_root->height = this->height;
+
+ struct graphics_opengl_platform *ret=g_new0(struct graphics_opengl_platform,1);
+
+ // SDL Init
+ int sdl_status = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_EVENTS);
+
+ if (sdl_status != 0){
+ fprintf(stderr, "\nUnable to initialize SDL: %i %s\n", sdl_status, SDL_GetError() );
+ exit(1);
+ }
+
+ Uint32 flags = SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN;
+ SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
+ SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
+ SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
+ SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
+ SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
+ SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
+ SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
+ // I think it's not necessary to sync vblank, update is quite slow
+ SDL_GL_SetSwapInterval(0);
+
+ ret->eglwindow = SDL_CreateWindow(
+ "Navit EGL", // window title
+ SDL_WINDOWPOS_UNDEFINED, // initial x position
+ SDL_WINDOWPOS_UNDEFINED, // initial y position
+ this->width, // width, in pixels
+ this->height, // height, in pixels
+ flags
+ );
+
+ if (ret->eglwindow == NULL) {
+ fprintf(stderr, "\nUnable to initialize SDL window: %s\n", SDL_GetError() );
+ goto error;
+ }
+
+ ret->eglcontext = SDL_GL_CreateContext(ret->eglwindow);
+ if (ret->eglcontext == NULL){
+ printf("EGL context creation failed\n");
+ goto error;
+ }
+
+ this->platform = ret;
+ create_framebuffer_texture(this);
+ g_timeout_add(G_PRIORITY_DEFAULT+10, graphics_sdl_idle, this);
+ glDisable(GL_DEPTH_TEST);
+ return this;
+error:
+ SDL_Quit();
+ return NULL;
+}
+
+void
+plugin_init(void)
+{
+ plugin_register_category_graphics("egl", graphics_opengl_new);
+}
+
diff --git a/navit/graphics/gd/Makefile.am b/navit/graphics/gd/Makefile.am
deleted file mode 100644
index 67fc270ac..000000000
--- a/navit/graphics/gd/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @GD_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=graphics_gd
-libgraphics_gd_la_LDFLAGS = @GD_LIBS@ -module -avoid-version
-if PLUGINS
-modulegraphics_LTLIBRARIES = libgraphics_gd.la
-else
-noinst_LTLIBRARIES = libgraphics_gd.la
-endif
-libgraphics_gd_la_SOURCES = graphics_gd.c
diff --git a/navit/graphics/gtk_drawing_area/Makefile.am b/navit/graphics/gtk_drawing_area/Makefile.am
deleted file mode 100644
index 79da228d7..000000000
--- a/navit/graphics/gtk_drawing_area/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @GTK2_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=graphics_gtk_drawing_area
-modulegraphics_LTLIBRARIES = libgraphics_gtk_drawing_area.la
-libgraphics_gtk_drawing_area_la_SOURCES = graphics_gtk_drawing_area.c
-libgraphics_gtk_drawing_area_la_LDFLAGS = @GTK2_LIBS@ @IMLIB2_LIBS@ -module -avoid-version
diff --git a/navit/graphics/null/Makefile.am b/navit/graphics/null/Makefile.am
deleted file mode 100644
index a4631ff4a..000000000
--- a/navit/graphics/null/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_null
-if PLUGINS
-modulegraphics_LTLIBRARIES = libgraphics_null.la
-else
-noinst_LTLIBRARIES = libgraphics_null.la
-endif
-libgraphics_null_la_SOURCES = graphics_null.c
-libgraphics_null_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/graphics/opengl/Makefile.am b/navit/graphics/opengl/Makefile.am
deleted file mode 100644
index 02d356dd7..000000000
--- a/navit/graphics/opengl/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @OPENGL_CFLAGS@ @GLC_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_opengl
-modulegraphics_LTLIBRARIES = libgraphics_opengl.la
-libgraphics_opengl_la_SOURCES = graphics_opengl.c
-libgraphics_opengl_la_LIBADD = @OPENGL_LIBS@ @GLC_LIBS@
-libgraphics_opengl_la_LDFLAGS = -module -avoid-version
diff --git a/navit/graphics/qt5/CMakeLists.txt b/navit/graphics/qt5/CMakeLists.txt
new file mode 100644
index 000000000..9c2574e8b
--- /dev/null
+++ b/navit/graphics/qt5/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Find includes in corresponding build directories
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+# Instruct CMake to run moc automatically when needed.
+set(CMAKE_AUTOMOC ON)
+
+# Find the QtWidgets library
+find_package(Qt5Widgets)
+
+module_add_library(graphics_qt5 graphics_qt5.cpp event_qt5.cpp QNavitWidget.cpp)
diff --git a/navit/graphics/qt5/QNavitWidget.cpp b/navit/graphics/qt5/QNavitWidget.cpp
new file mode 100644
index 000000000..fe3a618e2
--- /dev/null
+++ b/navit/graphics/qt5/QNavitWidget.cpp
@@ -0,0 +1,158 @@
+/**
+ * Navit, a modular navigation system.
+ * Copyright (C) 2005-2008 Navit Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include "config.h"
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include "item.h"
+#include "point.h"
+#include "graphics.h"
+#include "color.h"
+#include "plugin.h"
+#include "event.h"
+#include "debug.h"
+#include "window.h"
+#include "callback.h"
+#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE)
+#include <windows.h>
+#endif
+#include "graphics_qt5.h"
+#include "QNavitWidget.h"
+#include "QNavitWidget.moc"
+
+QNavitWidget :: QNavitWidget(struct graphics_priv *my_graphics_priv,
+ QWidget * parent,
+ Qt::WindowFlags flags): QWidget(parent, flags)
+{
+ graphics_priv = my_graphics_priv;
+}
+
+bool QNavitWidget::event(QEvent *event)
+{
+ if (event->type() == QEvent::Gesture)
+ dbg(lvl_debug, "Gesture event caught");
+ //return gestureEvent(static_cast<QGestureEvent*>(event));
+ return QWidget::event(event);
+}
+
+void QNavitWidget :: paintEvent(QPaintEvent * event)
+{
+// dbg(lvl_debug,"enter\n");
+ 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(0, 0, graphics_priv->pixmap->width(),
+ graphics_priv->pixmap->height(),
+ *graphics_priv->background_graphics_gc_priv->brush);
+ }
+ painter.drawPixmap(0,0,*graphics_priv->pixmap);
+
+}
+
+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());
+ graphics_priv->pixmap->fill();
+ painter = new QPainter(graphics_priv->pixmap);
+ QBrush brush;
+ painter->fillRect(0, 0, width(), height(), brush);
+ if(painter != NULL)
+ 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(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(callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(1), GINT_TO_POINTER(&p));
+ break;
+ case Qt::MidButton:
+ callback_list_call_attr_3(callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(2), GINT_TO_POINTER(&p));
+ break;
+ case Qt::RightButton:
+ callback_list_call_attr_3(callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(3), GINT_TO_POINTER(&p));
+ break;
+ default:
+ break;
+ }
+}
+
+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(callbacks, attr_motion, (void *)&p);
+}
+
+void QNavitWidget::wheelEvent(QWheelEvent *event)
+{
+ struct point p;
+ int button;
+ dbg(lvl_debug,"enter");
+ 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(callbacks, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), GINT_TO_POINTER(&p));
+ callback_list_call_attr_3(callbacks, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), GINT_TO_POINTER(&p));
+ }
+
+ event->accept();
+}
diff --git a/navit/graphics/qt5/QNavitWidget.h b/navit/graphics/qt5/QNavitWidget.h
new file mode 100644
index 000000000..3b048ccf7
--- /dev/null
+++ b/navit/graphics/qt5/QNavitWidget.h
@@ -0,0 +1,33 @@
+#ifndef __QNavitWidget_h
+#define __QNavitWidget_h
+class QNavitWidget;
+#include "graphics_qt5.h"
+#include <QPixmap>
+#include <QWidget>
+#include <QMouseEvent>
+#include <QWheelEvent>
+#include <QEvent>
+
+class QNavitWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ QNavitWidget(struct graphics_priv *my_graphics_priv,
+ QWidget * parent,
+ Qt::WindowFlags flags);
+protected:
+ virtual bool event(QEvent *event);
+ virtual void paintEvent(QPaintEvent * event);
+ virtual void resizeEvent(QResizeEvent * event);
+ virtual void mouseEvent(int pressed, QMouseEvent *event);
+ virtual void mousePressEvent(QMouseEvent *event);
+ virtual void mouseReleaseEvent(QMouseEvent *event);
+ virtual void mouseMoveEvent(QMouseEvent *event);
+ virtual void wheelEvent(QWheelEvent * event);
+
+
+private:
+ struct graphics_priv *graphics_priv;
+};
+#endif
+
diff --git a/navit/graphics/qt5/event_qt5.cpp b/navit/graphics/qt5/event_qt5.cpp
new file mode 100644
index 000000000..9cea3d921
--- /dev/null
+++ b/navit/graphics/qt5/event_qt5.cpp
@@ -0,0 +1,185 @@
+/**
+ * Navit, a modular navigation system.
+ * Copyright (C) 2005-2008 Navit Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "config.h"
+#include "navit/point.h"
+#include "navit/item.h"
+#include "navit/graphics.h"
+#include "navit/color.h"
+#include "navit/debug.h"
+#include "navit/plugin.h"
+#include "navit/callback.h"
+#include "navit/event.h"
+#include "navit/window.h"
+#include "navit/keys.h"
+#include "navit/navit.h"
+#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE)
+#include <windows.h>
+#endif
+#include <QSocketNotifier>
+#include "graphics_qt5.h"
+#include "event_qt5.h"
+#include "event_qt5.moc"
+
+struct event_watch {
+ QSocketNotifier *sn;
+ struct callback *cb;
+ int fd;
+};
+
+static void event_qt5_remove_timeout(struct event_timeout *to);
+
+qt5_navit_timer :: qt5_navit_timer (QObject * parent) : QObject(parent)
+{
+ timer_type=g_hash_table_new(NULL, NULL);
+ timer_callback=g_hash_table_new(NULL, NULL);
+ watches=g_hash_table_new(NULL,NULL);
+ dbg(lvl_debug, "qt5_navit_timer object created\n");
+}
+
+void qt5_navit_timer :: timerEvent (QTimerEvent * event)
+{
+ int id=event->timerId();
+ void* multi = NULL;
+// dbg(lvl_debug, "TimerEvent (%d)\n", id);
+ struct callback *cb=(struct callback *)g_hash_table_lookup(timer_callback, (void *)(long)id);
+ if (cb)
+ callback_call_0(cb);
+ /* remove timer if it was oneshot timer */
+ if (g_hash_table_lookup_extended(timer_type, (void *)(long)id, NULL, &multi))
+ {
+ /* it's still in the list */
+ if(((int)(long)multi) == 0)
+ event_qt5_remove_timeout((struct event_timeout *)(long)id);
+ }
+// dbg(lvl_debug, "TimerEvent (%d) leave\n", id);
+}
+
+qt5_navit_timer * qt5_timer = NULL;
+
+static void
+event_qt5_main_loop_run(void)
+{
+
+ dbg(lvl_debug,"enter\n");
+ if(navit_app != NULL)
+ navit_app->exec();
+
+}
+
+static void event_qt5_main_loop_quit(void)
+{
+ dbg(lvl_debug,"enter\n");
+ exit(0);
+}
+
+static struct event_watch *
+event_qt5_add_watch(int fd, enum event_watch_cond cond, struct callback *cb)
+{
+ dbg(lvl_debug,"enter fd=%d\n",(int)(long)fd);
+ struct event_watch *ret=g_new0(struct event_watch, 1);
+ ret->fd=fd;
+ ret->cb=cb;
+ g_hash_table_insert(qt5_timer->watches, GINT_TO_POINTER(fd), ret);
+ ret->sn=new QSocketNotifier(fd, QSocketNotifier::Read, qt5_timer);
+ QObject::connect(ret->sn, SIGNAL(activated(int)), qt5_timer, SLOT(watchEvent(int)));
+ return ret;
+}
+
+static void
+event_qt5_remove_watch(struct event_watch *ev)
+{
+ dbg(lvl_debug,"enter\n");
+ g_hash_table_remove(qt5_timer->watches, GINT_TO_POINTER(ev->fd));
+ delete(ev->sn);
+ g_free(ev);
+}
+
+
+static struct event_timeout *
+event_qt5_add_timeout(int timeout, int multi, struct callback *cb)
+{
+ int id;
+ dbg(lvl_debug,"add timeout %d, mul %d, %p ==",timeout, multi, cb);
+ id=qt5_timer->startTimer(timeout);
+ dbg(lvl_debug,"%d\n", id);
+ g_hash_table_insert(qt5_timer->timer_callback, (void *)(long)id, cb);
+ g_hash_table_insert(qt5_timer->timer_type, (void *)(long)id, (void *)(long)!!multi);
+ return (struct event_timeout *)(long)id;
+}
+
+static void
+event_qt5_remove_timeout(struct event_timeout *to)
+{
+ dbg(lvl_debug,"remove timeout (%d)\n",(int)(long)to);
+ qt5_timer->killTimer((int)(long)to);
+ g_hash_table_remove(qt5_timer->timer_callback, to);
+ g_hash_table_remove(qt5_timer->timer_type, to);
+}
+
+
+static struct event_idle *
+event_qt5_add_idle(int priority, struct callback *cb)
+{
+ dbg(lvl_debug,"add idle event\n");
+ return (struct event_idle *)event_qt5_add_timeout(0, 1, cb);
+}
+
+static void
+event_qt5_remove_idle(struct event_idle *ev)
+{
+ dbg(lvl_debug,"Remove idle timeout\n");
+ event_qt5_remove_timeout((struct event_timeout *) ev);
+}
+
+static void
+event_qt5_call_callback(struct callback_list *cb)
+{
+ dbg(lvl_debug,"enter\n");
+}
+
+static struct event_methods event_qt5_methods = {
+ event_qt5_main_loop_run,
+ event_qt5_main_loop_quit,
+ event_qt5_add_watch,
+ event_qt5_remove_watch,
+ event_qt5_add_timeout,
+ event_qt5_remove_timeout,
+ event_qt5_add_idle,
+ event_qt5_remove_idle,
+ event_qt5_call_callback,
+};
+
+static struct event_priv *
+event_qt5_new(struct event_methods *meth)
+{
+ *meth=event_qt5_methods;
+ qt5_timer = new qt5_navit_timer(NULL);
+ return NULL;
+}
+
+
+void
+qt5_event_init(void)
+{
+ plugin_register_category_event("qt5", event_qt5_new);
+}
diff --git a/navit/graphics/qt5/event_qt5.h b/navit/graphics/qt5/event_qt5.h
new file mode 100644
index 000000000..f999d3a46
--- /dev/null
+++ b/navit/graphics/qt5/event_qt5.h
@@ -0,0 +1,18 @@
+#include <glib.h>
+#include <QObject>
+
+class qt5_navit_timer : public QObject
+{
+ Q_OBJECT
+public:
+ qt5_navit_timer(QObject * parent = 0);
+ GHashTable *timer_type;
+ GHashTable *timer_callback;
+ GHashTable *watches;
+protected:
+ void timerEvent(QTimerEvent * event);
+};
+
+
+void
+qt5_event_init(void);
diff --git a/navit/graphics/qt5/graphics_qt5.cpp b/navit/graphics/qt5/graphics_qt5.cpp
new file mode 100644
index 000000000..81fec32c2
--- /dev/null
+++ b/navit/graphics/qt5/graphics_qt5.cpp
@@ -0,0 +1,837 @@
+/**
+ * Navit, a modular navigation system.
+ * Copyright (C) 2005-2008 Navit Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include "config.h"
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include "item.h"
+#include "point.h"
+#include "graphics.h"
+#include "color.h"
+#include "plugin.h"
+#include "event.h"
+#include "debug.h"
+#include "window.h"
+#include "callback.h"
+#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE)
+#include <windows.h>
+#endif
+#include "graphics_qt5.h"
+#include "event_qt5.h"
+#include "QNavitWidget.h"
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QPixmap>
+#include <QPainter>
+#include <QFont>
+#include <QSvgRenderer>
+#include <QPixmapCache>
+#include <QDBusConnection>
+#include <QDBusInterface>
+
+struct callback_list* callbacks;
+QApplication * navit_app = NULL;
+
+struct graphics_font_priv {
+ QFont * font;
+};
+
+struct graphics_image_priv {
+ QPixmap * pixmap;
+};
+
+static void
+graphics_destroy(struct graphics_priv *gr)
+{
+// dbg(lvl_debug,"enter\n");
+#ifdef QT_QPAINTER_USE_FREETYPE
+ gr->freetype_methods.destroy();
+#endif
+ /* destroy painter */
+ if(gr->painter != NULL)
+ delete(gr->painter);
+ /* destroy pixmap */
+ if(gr->pixmap != NULL)
+ delete(gr->pixmap);
+ /* destroy widget */
+ delete(gr->widget);
+ /* unregister from parent, if any */
+ if(gr->parent != NULL)
+ {
+ g_hash_table_remove(gr->parent->overlays, gr);
+ }
+#ifdef SAILFISH_OS
+ if(gr->display_on_ev != NULL)
+ {
+ event_remove_timeout(gr->display_on_ev);
+ }
+ if(gr->display_on_cb != NULL)
+ {
+ g_free(gr->display_on_cb);
+ }
+#endif
+ /* destroy overlays hash */
+ g_hash_table_destroy(gr->overlays);
+ /* destroy global application if destroying the last */
+ if(gr->root)
+ {
+ if(navit_app != NULL)
+ {
+ delete (navit_app);
+ }
+ navit_app = NULL;
+ /* destroy argv if any */
+ while(gr->argc > 0)
+ {
+ gr->argc --;
+ if(gr->argv[gr->argc] != NULL)
+ g_free(gr->argv[gr->argc]);
+ }
+ }
+ /* destroy self */
+ g_free(gr);
+}
+
+static void font_destroy(struct graphics_font_priv *font)
+{
+// dbg(lvl_debug,"enter\n");
+ if(font->font != NULL)
+ delete(font->font);
+ g_free(font);
+
+}
+
+static struct graphics_font_methods font_methods = {
+ font_destroy
+};
+
+static struct graphics_font_priv *font_new(struct graphics_priv *gr, struct graphics_font_methods *meth, char *font, int size, int flags)
+{
+ struct graphics_font_priv *font_priv;
+// dbg(lvl_debug,"enter (font %s, %d)\n", font, size);
+ font_priv = g_new0(struct graphics_font_priv, 1);
+ if(font != NULL)
+ font_priv->font=new QFont(font,size/16);
+ else
+ font_priv->font=new QFont("Arial",size/16);
+ font_priv->font->setStyleStrategy(QFont::NoAntialias);
+ *meth=font_methods;
+ return font_priv;
+}
+
+static void
+gc_destroy(struct graphics_gc_priv *gc)
+{
+// dbg(lvl_debug,"enter gc=%p\n", gc);
+ delete(gc->pen);
+ delete(gc->brush);
+ g_free(gc);
+}
+
+static void
+gc_set_linewidth(struct graphics_gc_priv *gc, int w)
+{
+// dbg(lvl_debug,"enter gc=%p, %d\n", gc, w);
+ gc->pen->setWidth(w);
+}
+
+static void
+gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n)
+{
+ if(n <= 0)
+ {
+ dbg(lvl_error, "Refuse to set dashes without dash pattern");
+ }
+ /* use Qt dash feature */
+ QVector<qreal> dashes;
+ gc->pen->setWidth(w);
+ gc->pen->setDashOffset(offset);
+ for(int a = 0; a < n; a ++)
+ {
+ dashes << dash_list[a];
+ }
+ /* Qt requires the pattern to have even element count. Add the last
+ * element twice if n doesn't divide by two
+ */
+ if((n % 2) != 0)
+ {
+ dashes << dash_list[n-1];
+ }
+ gc->pen->setDashPattern(dashes);
+}
+
+static void
+gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
+{
+ QColor col(c->r >> 8, c->g >> 8, c->b >> 8, c->a >> 8 );
+// dbg(lvl_debug,"context %p: color %02x%02x%02x\n",gc, c->r >> 8, c->g >> 8, c->b >> 8);
+ gc->pen->setColor(col);
+ gc->brush->setColor(col);
+ //gc->c=*c;
+}
+
+static void
+gc_set_background(struct graphics_gc_priv *gc, struct color *c)
+{
+ QColor col(c->r >> 8, c->g >> 8, c->b >> 8, c->a >> 8 );
+// dbg(lvl_debug,"context %p: color %02x%02x%02x\n",gc, c->r >> 8, c->g >> 8, c->b >> 8);
+ //gc->pen->setColor(col);
+ //gc->brush->setColor(col);
+}
+
+static struct graphics_gc_methods gc_methods = {
+ gc_destroy,
+ gc_set_linewidth,
+ gc_set_dashes,
+ gc_set_foreground,
+ gc_set_background
+};
+
+static struct graphics_gc_priv *gc_new(struct graphics_priv *gr, struct graphics_gc_methods *meth)
+{
+ struct graphics_gc_priv * graphics_gc_priv = NULL;
+// dbg(lvl_debug,"enter gr==%p\n", gr);
+ graphics_gc_priv = g_new0(struct graphics_gc_priv, 1);
+ graphics_gc_priv->graphics_priv = gr;
+ graphics_gc_priv->pen=new QPen();
+ graphics_gc_priv->brush=new QBrush(Qt::SolidPattern);
+
+ *meth=gc_methods;
+ return graphics_gc_priv;
+}
+
+static void image_destroy(struct graphics_image_priv *img)
+{
+// dbg(lvl_debug, "enter\n");
+ if(img->pixmap != NULL)
+ delete(img->pixmap);
+ g_free(img);
+}
+
+struct graphics_image_methods image_methods ={
+ image_destroy
+};
+
+
+static struct graphics_image_priv *
+image_new(struct graphics_priv *gr, struct graphics_image_methods *meth, char *path, int *w, int *h, struct point *hot, int rotation)
+{
+ struct graphics_image_priv * image_priv;
+// dbg(lvl_debug,"enter %s, %d %d\n", path, *w, *h);
+ if(path[0] == 0)
+ {
+ dbg(lvl_debug,"Refuse to load image without path\n");
+ return NULL;
+ }
+ QString key(path);
+ QString renderer_key(key);
+ QString extension = key.right(key.lastIndexOf("."));
+ QFile imagefile(key);
+ if(!imagefile.exists())
+ {
+ /* file doesn't exit. Either navit wants us to guess file name by
+ * ommitting exstension, or the file does really not exist.
+ */
+ if(extension != "")
+ {
+ /*file doesn't exist. give up */
+ dbg(lvl_debug,"File %s does not exist\n",path);
+ return NULL;
+ }
+ else
+ {
+ /* add ".svg" for renderer to try .svg file first in renderer */
+ dbg(lvl_debug, "Guess extension on %s\n", path);
+ renderer_key += ".svg";
+ }
+ }
+ image_priv = g_new0(struct graphics_image_priv, 1);
+ *meth = image_methods;
+
+ /* check if this can be rendered */
+ if(renderer_key.endsWith("svg"))
+ {
+ QSvgRenderer renderer(renderer_key);
+ if(renderer.isValid())
+ {
+ dbg(lvl_debug,"render %s\n", path);
+ /* try to render this */
+ /* assume "standard" size if size is not given */
+ if(*w <= 0) *w = renderer.defaultSize().width();
+ if(*h <= 0) *h = renderer.defaultSize().height();
+ image_priv->pixmap=new QPixmap(*w, *h);
+ image_priv->pixmap->fill(Qt::transparent);
+ QPainter painter(image_priv->pixmap);
+ renderer.render(&painter);
+ }
+ }
+
+ if (image_priv->pixmap == NULL) {
+ /*cannot be rendered. try to load it */
+ dbg(lvl_debug,"cannot render %s\n",path);
+ image_priv->pixmap=new QPixmap(key);
+ }
+
+ /* check if we got image */
+ if (image_priv->pixmap->isNull()) {
+ g_free(image_priv);
+ return NULL;
+ }
+ else
+ {
+ /* check if we need to scale this */
+ if((*w > 0) && (*h > 0))
+ {
+ if((image_priv->pixmap->width() != *w) ||
+ (image_priv->pixmap->height() != *h))
+ {
+ dbg(lvl_debug,"scale pixmap %s, %d->%d,%d->%d\n",path, image_priv->pixmap->width(), *w, image_priv->pixmap->height(), *h);
+ QPixmap * scaled = new QPixmap(image_priv->pixmap->scaled(*w, *h,Qt::IgnoreAspectRatio,Qt::FastTransformation));
+ delete (image_priv->pixmap);
+ image_priv->pixmap = scaled;
+ }
+ }
+ }
+
+ *w=image_priv->pixmap->width();
+ *h=image_priv->pixmap->height();
+// dbg(lvl_debug, "Got (%d,%d)\n", *w,*h);
+ if (hot) {
+ hot->x=*w/2;
+ hot->y=*h/2;
+ }
+
+ return image_priv;
+}
+
+static void
+draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
+{
+ int i;
+ QPolygon polygon;
+// dbg(lvl_debug,"enter gr=%p, gc=%p, (%d, %d)\n", gr, gc, p->x, p->y);
+ if(gr->painter == NULL)
+ return;
+
+ for (i = 0 ; i < count ; i++)
+ polygon.putPoints(i, 1, p[i].x, p[i].y);
+ gr->painter->setPen(*gc->pen);
+ gr->painter->drawPolyline(polygon);
+
+}
+
+static void
+draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
+{
+ int i;
+ QPolygon polygon;
+// dbg(lvl_debug,"enter gr=%p, gc=%p, (%d, %d)\n", gr, gc, p->x, p->y);
+ if(gr->painter == NULL)
+ return;
+
+ for (i = 0 ; i < count ; i++)
+ polygon.putPoints(i, 1, p[i].x, p[i].y);
+ gr->painter->setPen(*gc->pen);
+ gr->painter->setBrush(*gc->brush);
+ /* if the polygon is transparent, we need to clear it first */
+ if(!gc->brush->isOpaque())
+ {
+ QPainter::CompositionMode mode = gr->painter->compositionMode();
+ gr->painter->setCompositionMode(QPainter::CompositionMode_Clear);
+ gr->painter->drawPolygon(polygon);
+ gr->painter->setCompositionMode(mode);
+ }
+ gr->painter->drawPolygon(polygon);
+}
+
+static void
+draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
+{
+// dbg(lvl_debug,"gr=%p gc=%p %d,%d,%d,%d\n", gr, gc, p->x, p->y, w, h);
+ if(gr->painter == NULL)
+ return;
+ /* if the rectangle is transparent, we need to clear it first */
+ if(!gc->brush->isOpaque())
+ {
+ QPainter::CompositionMode mode = gr->painter->compositionMode();
+ gr->painter->setCompositionMode(QPainter::CompositionMode_Clear);
+ gr->painter->fillRect(p->x,p->y, w, h, *gc->brush);
+ gr->painter->setCompositionMode(mode);
+ }
+ gr->painter->fillRect(p->x,p->y, w, h, *gc->brush);
+}
+
+static void
+draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
+{
+// dbg(lvl_debug,"enter gr=%p, gc=%p, (%d,%d) r=%d\n", gr, gc, p->x, p->y, r);
+ if(gr->painter == NULL)
+ return;
+ gr->painter->setPen(*gc->pen);
+ gr->painter->drawArc(p->x-r/2, p->y-r/2, r, r, 0, 360*16);
+}
+
+
+static void
+draw_text(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy)
+{
+// dbg(lvl_debug,"enter gc=%p, fg=%p, bg=%p pos(%d,%d) %s\n", gr, fg, bg, p->x, p->y, text);
+ QPainter *painter=gr->painter;
+ if(painter == NULL)
+ return;
+#ifdef QT_QPAINTER_USE_FREETYPE
+ struct font_freetype_text *t;
+ struct font_freetype_glyph *g, **gp;
+ struct color transparent = {0x0000, 0x0000, 0x0000, 0x0000};
+ struct color fgc;
+ struct color bgc;
+ QColor temp;
+
+ int i,x,y;
+
+ if (! font)
+ return;
+ /* extract colors */
+ fgc.r = fg->pen->color().red() << 8;
+ fgc.g = fg->pen->color().green() << 8;
+ fgc.b = fg->pen->color().blue() << 8;
+ fgc.a = fg->pen->color().alpha() << 8;
+ if(bg != NULL)
+ {
+ bgc.r = bg->pen->color().red() << 8;
+ bgc.g = bg->pen->color().green() << 8;
+ bgc.b = bg->pen->color().blue() << 8;
+ bgc.a = bg->pen->color().alpha() << 8;
+ }
+ else
+ {
+ bgc = transparent;
+ }
+
+ t=gr->freetype_methods.text_new(text, (struct font_freetype_font *)font, dx, dy);
+ x=p->x << 6;
+ y=p->y << 6;
+ gp=t->glyph;
+ i=t->glyph_count;
+ if (bg) {
+ while (i-- > 0) {
+ g=*gp++;
+ if (g->w && g->h) {
+ unsigned char *data;
+ QImage img(g->w+2, g->h+2, QImage::Format_ARGB32_Premultiplied);
+ data=img.bits();
+ gr->freetype_methods.get_shadow(g,(unsigned char *)data,img.bytesPerLine(),&bgc,&transparent);
+
+ painter->drawImage(((x+g->x)>>6)-1, ((y+g->y)>>6)-1, img);
+ }
+ x+=g->dx;
+ y+=g->dy;
+ }
+ }
+ x=p->x << 6;
+ y=p->y << 6;
+ gp=t->glyph;
+ i=t->glyph_count;
+ while (i-- > 0) {
+ g=*gp++;
+ if (g->w && g->h) {
+ unsigned char *data;
+ QImage img(g->w, g->h, QImage::Format_ARGB32_Premultiplied);
+ data=img.bits();
+ gr->freetype_methods.get_glyph(g,(unsigned char *)data,img.bytesPerLine(),&fgc,&bgc,&transparent);
+ painter->drawImage((x+g->x)>>6, (y+g->y)>>6, img);
+ }
+ x+=g->dx;
+ y+=g->dy;
+ }
+ gr->freetype_methods.text_destroy(t);
+#else
+ QString tmp=QString::fromUtf8(text);
+ QMatrix sav=gr->painter->worldMatrix();
+ QMatrix m(dx/65535.0,dy/65535.0,-dy/65535.0,dx/65535.0,p->x,p->y);
+ painter->setWorldMatrix(m,TRUE);
+ painter->setPen(*fg->pen);
+ painter->setFont(*font->font);
+ painter->drawText(0, 0, tmp);
+ painter->setWorldMatrix(sav);
+#endif
+}
+
+static void
+draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img)
+{
+// dbg(lvl_debug,"enter\n");
+ if(gr->painter != NULL)
+ gr->painter->drawPixmap(p->x, p->y, *img->pixmap);
+ else
+ dbg(lvl_debug, "Try to draw image, but no painter\n");
+}
+
+static void draw_drag(struct graphics_priv *gr, struct point *p)
+{
+ if(p != NULL)
+ {
+// dbg(lvl_debug,"enter %p (%d,%d)\n", gr, p->x, p->y);
+ gr->widget->move(p->x, p->y);
+ }
+ else
+ {
+// dbg(lvl_debug,"enter %p (NULL)\n", gr);
+ }
+}
+
+static void
+background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
+{
+// dbg(lvl_debug,"register context %p on %p\n", gc, gr);
+ gr->background_graphics_gc_priv = gc;
+}
+
+static void
+draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
+{
+ switch (mode)
+ {
+ case draw_mode_begin:
+ dbg(lvl_debug,"Begin drawing on context %p (use == %d)\n", gr, gr->use_count);
+ gr->use_count ++;
+ if(gr->painter == NULL)
+ gr->painter = new QPainter(gr->pixmap);
+ else
+ dbg(lvl_debug, "drawing on %p already active\n", gr);
+ break;
+ case draw_mode_end:
+ dbg(lvl_debug,"End drawing on context %p (use == %d)\n", gr, gr->use_count);
+ gr->use_count --;
+ if(gr->use_count > 0)
+ {
+ dbg(lvl_debug, "drawing on %p still in use\n", gr);
+ }
+ else if(gr->painter != NULL)
+ {
+ gr->painter->end();
+ delete(gr->painter);
+ gr->painter = NULL;
+ /* call repaint on widget */
+ gr->widget->repaint();
+ }
+ else
+ dbg(lvl_debug, "Context %p not active!\n", gr)
+
+ break;
+ default:
+ dbg(lvl_debug,"Unknown drawing %d on context %p\n", mode, gr);
+ break;
+ }
+}
+
+static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound);
+
+void
+resize_callback(int w, int h)
+{
+// dbg(lvl_debug,"enter (%d, %d)\n", w, h);
+ callback_list_call_attr_2(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(on)
+ gr->widget->setWindowState(Qt::WindowFullScreen);
+ else
+ gr->widget->setWindowState(Qt::WindowMaximized);
+ 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->widget->width(),this_priv->widget->height());
+ return win;
+ }
+ return NULL;
+}
+
+static void image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
+{
+// dbg(lvl_debug,"enter\n");
+ delete(priv->pixmap);
+ g_free(priv);
+}
+
+static void get_text_bbox(struct graphics_priv *gr, struct graphics_font_priv *font, char *text, int dx, int dy, struct point *ret, int estimate)
+{
+// dbg(lvl_debug,"enter %s %d %d\n", text, dx, dy);
+ QPainter *painter=gr->painter;
+ QString tmp=QString::fromUtf8(text);
+ if(gr->painter != NULL)
+ {
+ gr->painter->setFont(*font->font);
+ QRect r=painter->boundingRect(0,0,gr->pixmap->width(),gr->pixmap->height(),0,tmp);
+// dbg (lvl_debug, "Text bbox: %d %d (%d,%d),(%d,%d)\n",dx, dy, r.left(), r.top(), r.right(), r.bottom());
+ /* low left */
+ ret[0].x = r.left();
+ ret[0].y = r.bottom();
+ /* top left */
+ ret[1].x = r.left();
+ ret[1].y = r.top();
+ /* top right */
+ ret[2].x = r.right();
+ ret[2].y = r.top();
+ /* low right */
+ ret[3].x = r.right();
+ ret[3].y = r.bottom();
+ }
+}
+
+static void overlay_disable(struct graphics_priv *gr, int disable)
+{
+ GHashTableIter iter;
+ struct graphics_priv * key, * value;
+// dbg(lvl_debug,"enter gr=%p, %d\n", gr, disable);
+
+ g_hash_table_iter_init (&iter, gr->overlays);
+ while (g_hash_table_iter_next (&iter, (void **)&key, (void **)&value))
+ {
+ /* disable or enable all overlays of this pane */
+ value->widget->setVisible(!disable);
+ }
+}
+
+static void overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound)
+{
+// dbg(lvl_debug,"enter\n");
+ gr->widget->move(p->x, p->y);
+ gr->widget->resize(w, h);
+ if(gr->painter != NULL)
+ {
+ delete(gr->painter);
+ }
+ delete(gr->pixmap);
+ gr->pixmap = new QPixmap(gr->widget->size());
+ if(gr->painter != NULL)
+ gr->painter = new QPainter (gr->pixmap);
+}
+
+static struct graphics_methods graphics_methods = {
+ graphics_destroy,
+ draw_mode,
+ draw_lines,
+ draw_polygon,
+ draw_rectangle,
+ draw_circle,
+ draw_text,
+ draw_image,
+ NULL,
+ draw_drag,
+ font_new,
+ gc_new,
+ background_gc,
+ overlay_new,
+ image_new,
+ get_data,
+ image_free,
+ get_text_bbox,
+ overlay_disable,
+ overlay_resize,
+};
+
+/* create new graphics context on given context */
+static struct graphics_priv *
+overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound)
+{
+ struct graphics_priv * graphics_priv = NULL;
+ graphics_priv = g_new0(struct graphics_priv, 1);
+ *meth=graphics_methods;
+#ifdef QT_QPAINTER_USE_FREETYPE
+ if (gr->font_freetype_new) {
+ graphics_priv->font_freetype_new=gr->font_freetype_new;
+ gr->font_freetype_new(&graphics_priv->freetype_methods);
+ meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))graphics_priv->freetype_methods.font_new;
+ meth->get_text_bbox=(void (*)(struct graphics_priv*, struct graphics_font_priv*, char*, int, int, struct point*, int))graphics_priv->freetype_methods.get_text_bbox;
+ }
+#endif
+ graphics_priv->widget = new QNavitWidget(graphics_priv, gr->widget, Qt::Widget);
+ graphics_priv->widget->move(p->x, p->y);
+ graphics_priv->widget->resize(w, h);
+ graphics_priv->widget->setVisible(true);
+ graphics_priv->pixmap = new QPixmap(graphics_priv->widget->size());
+ graphics_priv->painter = NULL;
+ graphics_priv->use_count = 0;
+ graphics_priv->parent = gr;
+ graphics_priv->overlays=g_hash_table_new(NULL, NULL);
+ graphics_priv->root = false;
+ graphics_priv->argc = 0;
+ graphics_priv->argv[0] = NULL;
+ /* register on parent */
+ g_hash_table_insert(gr->overlays, graphics_priv, graphics_priv);
+// dbg(lvl_debug,"New overlay: %p\n", graphics_priv);
+
+ return graphics_priv;
+}
+
+/* create application and initial graphics context */
+static struct graphics_priv *
+graphics_qt5_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
+{
+ struct graphics_priv * graphics_priv = NULL;
+ struct attr * event_loop_system = NULL;
+ struct attr * platform = NULL;
+ struct attr * fullscreen = NULL;
+ //dbg(lvl_debug,"enter\n");
+
+ /*register graphic methods by copying in our predefined ones */
+ *meth=graphics_methods;
+
+ /* get event loop from config and request event loop*/
+ event_loop_system = attr_search(attrs, NULL, attr_event_loop_system);
+ if (event_loop_system && event_loop_system->u.str) {
+ //dbg(lvl_debug, "event_system is %s\n", event_loop_system->u.str);
+ if (!event_request_system(event_loop_system->u.str, "graphics_qt5"))
+ return NULL;
+ } else {
+ /* no event system requested by config. Default to our own */
+ if (!event_request_system("qt5", "graphics_qt5"))
+ return NULL;
+ }
+
+#ifdef QT_QPAINTER_USE_FREETYPE
+ struct font_priv * (*font_freetype_new)(void *meth);
+ /* get font plugin if present */
+ font_freetype_new=(struct font_priv *(*)(void *))plugin_get_category_font("freetype");
+ if (!font_freetype_new) {
+ dbg(lvl_error,"no freetype\n");
+ return NULL;
+ }
+#endif
+
+ /* create root graphics layer */
+ graphics_priv = g_new0(struct graphics_priv, 1);
+ /* Prepare argc and argv to call Qt application*/
+ graphics_priv->root = true;
+ graphics_priv->argc = 0;
+ graphics_priv->argv[graphics_priv->argc] = g_strdup("navit");
+ graphics_priv->argc ++;
+ /* Get qt platform from config */
+ if ((platform=attr_search(attrs, NULL, attr_qt5_platform)))
+ {
+ graphics_priv->argv[graphics_priv->argc] = g_strdup("-platform");
+ graphics_priv->argc ++;
+ graphics_priv->argv[graphics_priv->argc] = g_strdup(platform->u.str);
+ graphics_priv->argc ++;
+ }
+ /* create surrounding application */
+ navit_app = new QApplication(graphics_priv->argc, graphics_priv->argv);
+
+#ifdef QT_QPAINTER_USE_FREETYPE
+ graphics_priv->font_freetype_new=font_freetype_new;
+ font_freetype_new(&graphics_priv->freetype_methods);
+ meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))graphics_priv->freetype_methods.font_new;
+ meth->get_text_bbox=(void (*)(struct graphics_priv*, struct graphics_font_priv*, char*, int, int, struct point*, int))graphics_priv->freetype_methods.get_text_bbox;
+#endif
+ 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->widget = new QNavitWidget(graphics_priv,NULL,Qt::Window);
+ if ((fullscreen=attr_search(attrs, NULL, attr_fullscreen)) && (fullscreen->u.num)) {
+ /* show this maximized */
+ graphics_priv->widget->setWindowState(Qt::WindowFullScreen);
+ }
+ 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 = navit_app->desktop()->screenGeometry(graphics_priv->widget);
+ /* 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);
+ graphics_priv->widget->resize(geomet.width(), geomet.height());
+ //graphics_priv->widget->setFixedSize(geomet.width(), geomet.height());
+ }
+ /* generate initial pixmap same size as window */
+ if(graphics_priv->pixmap == NULL)
+ graphics_priv->pixmap = new QPixmap(graphics_priv->widget->size());
+
+ /* tell Navit our geometry */
+ resize_callback(graphics_priv->widget->width(),graphics_priv->widget->height());
+
+ /* show our window */
+ graphics_priv->widget->show();
+ return graphics_priv;
+}
+
+void
+plugin_init(void)
+{
+// dbg(lvl_debug,"enter\n");
+ plugin_register_category_graphics("qt5", graphics_qt5_new);
+ qt5_event_init();
+}
diff --git a/navit/graphics/qt5/graphics_qt5.h b/navit/graphics/qt5/graphics_qt5.h
new file mode 100644
index 000000000..2f19390c4
--- /dev/null
+++ b/navit/graphics/qt5/graphics_qt5.h
@@ -0,0 +1,63 @@
+#ifndef __graphics_qt_h
+#define __graphics_qt_h
+#include <glib.h>
+#include <QApplication>
+#include <QPixmap>
+#include <QPainter>
+#include <QPen>
+#include <QBrush>
+#include "QNavitWidget.h"
+
+#ifndef QT_QPAINTER_USE_FREETYPE
+#define QT_QPAINTER_USE_FREETYPE 1
+#endif
+
+#ifndef SAILFISH_OS
+#define SAILFISH_OS 1
+#endif
+
+
+#ifdef QT_QPAINTER_USE_FREETYPE
+#include "navit/font/freetype/font_freetype.h"
+#endif
+
+struct graphics_gc_priv;
+struct graphics_priv;
+
+struct graphics_priv {
+ QNavitWidget * widget;
+ QPixmap * pixmap;
+ QPainter * painter;
+ int use_count;
+ struct graphics_gc_priv * background_graphics_gc_priv;
+#ifdef QT_QPAINTER_USE_FREETYPE
+ struct font_priv * (*font_freetype_new)(void *meth);
+ struct font_freetype_methods freetype_methods;
+#endif
+#ifdef SAILFISH_OS
+ struct callback *display_on_cb;
+ struct event_timeout *display_on_ev;
+#endif
+ 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 QApplication * navit_app;
+
+/* navit callback list */
+extern struct callback_list* callbacks;
+
+void
+resize_callback(int w, int h);
+
+#endif
+
diff --git a/navit/graphics/qt_qpainter/Makefile.am b/navit/graphics/qt_qpainter/Makefile.am
deleted file mode 100644
index 8c55917c7..000000000
--- a/navit/graphics/qt_qpainter/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @QT_GUI_CFLAGS@ @QT_SVG_CFLAGS@ @NAVIT_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -I$(top_srcdir)/navit/graphics/qt_qpainter -DMODULE=graphics_qt_qpainter
-modulegraphics_LTLIBRARIES = libgraphics_qt_qpainter.la
-libgraphics_qt_qpainter_la_SOURCES = graphics_qt_qpainter.cpp graphics_qt_qpainter.h RenderArea.cpp RenderArea.h RenderArea.moc
-libgraphics_qt_qpainter_la_LDFLAGS = @QT_GUI_LIBS@ @QT_SVG_LIBS@ -module -avoid-version
-if GRAPHICS_QT_QPAINTER
-BUILT_SOURCES = RenderArea.moc
-RenderArea.moc:
- @MOC@ $(srcdir)/RenderArea.h >RenderArea.moc || touch RenderArea.moc
-
-distclean-local:
- $(RM) RenderArea.moc
-endif
diff --git a/navit/graphics/sdl/Makefile.am b/navit/graphics/sdl/Makefile.am
deleted file mode 100644
index 1c9b4056d..000000000
--- a/navit/graphics/sdl/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @SDL_CFLAGS@ @FREETYPE2_CFLAGS@ @LIBPDL_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_sdl
-modulegraphics_LTLIBRARIES = libgraphics_sdl.la
-libgraphics_sdl_la_SOURCES = graphics_sdl.c raster.c raster.h
-libgraphics_sdl_la_LDFLAGS = @SDL_LIBS@ @SDL_IMAGE_LIBS@ @FREETYPE2_LIBS@ @LIBPDL_LIBS@ -module -avoid-version
diff --git a/navit/graphics/win32/Makefile.am b/navit/graphics/win32/Makefile.am
deleted file mode 100644
index 15ec2441c..000000000
--- a/navit/graphics/win32/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @ZLIB_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_win32
-libgraphics_win32_la_SOURCES = graphics_win32.c xpm2bmp.c
-libgraphics_win32_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-if !SUPPORT_WIN32CE
-libgraphics_win32_la_LDFLAGS += -Wl,-lgdi32
-endif
-if PLUGINS
-modulegraphics_LTLIBRARIES = libgraphics_win32.la
-else
-noinst_LTLIBRARIES = libgraphics_win32.la
-endif
diff --git a/navit/gui/Makefile.am b/navit/gui/Makefile.am
deleted file mode 100644
index 10086b5a1..000000000
--- a/navit/gui/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-SUBDIRS=
-if GUI_INTERNAL
- SUBDIRS += internal
-endif
-if GUI_GTK
- SUBDIRS += gtk
-endif
-if GUI_WIN32
- SUBDIRS += win32
-endif
-if GUI_QML
- SUBDIRS += qml
-endif \ No newline at end of file
diff --git a/navit/gui/gtk/Makefile.am b/navit/gui/gtk/Makefile.am
deleted file mode 100644
index ddcfc2ae3..000000000
--- a/navit/gui/gtk/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = -I$(top_srcdir)/navit @NAVIT_CFLAGS@ @HILDON_CFLAGS@ @GTK2_CFLAGS@ -DMODULE=gui_gtk
-modulegui_LTLIBRARIES = libgui_gtk.la
-libgui_gtk_la_SOURCES = datawindow.c destination.c gui_gtk_statusbar.c gui_gtk_action.c gui_gtk_window.c gui_gtk_poi.c gui_gtk.h gui_gtk_poi.h
-libgui_gtk_la_LIBADD = @GTK2_LIBS@
-libgui_gtk_la_LDFLAGS = -module -avoid-version
diff --git a/navit/gui/internal/Makefile.am b/navit/gui/internal/Makefile.am
deleted file mode 100644
index ed819ce4e..000000000
--- a/navit/gui/internal/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/navit -I$(top_srcdir)/navit/fib-1.1 @NAVIT_CFLAGS@ -DMODULE=gui_internal
-if PLUGINS
-modulegui_LTLIBRARIES = libgui_internal.la
-else
-noinst_LTLIBRARIES = libgui_internal.la
-endif
-libgui_internal_la_SOURCES = gui_internal_bookmark.c gui_internal.c gui_internal_command.c gui_internal_gesture.c gui_internal_html.c gui_internal_keyboard.c gui_internal_menu.c gui_internal_poi.c gui_internal_search.c gui_internal_widget.c gui_internal_bookmark.h gui_internal_command.h gui_internal_gesture.h gui_internal.h gui_internal_html.h gui_internal_keyboard.h gui_internal_menu.h gui_internal_poi.h gui_internal_priv.h gui_internal_search.h gui_internal_widget.h
-libgui_internal_la_LIBADD =
-libgui_internal_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/gui/qml/Makefile.am b/navit/gui/qml/Makefile.am
deleted file mode 100644
index a52b399b2..000000000
--- a/navit/gui/qml/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @QT_DECLARATIVE_CFLAGS@ @QT_GUI_CFLAGS@ @QT_XML_CFLAGS@ @NAVIT_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=gui_qml
-modulegui_LTLIBRARIES = libgui_qml.la
-libgui_qml_la_SOURCES = proxy.moc proxy.h ngqpoint.moc ngqpoint.h searchProxy.moc routeProxy.h searchProxy.h bookmarksProxy.moc bookmarksProxy.h vehicleProxy.moc vehicleProxy.h navitProxy.moc navitProxy.h guiProxy.moc guiProxy.h gui_qml.moc gui_qml.cpp
-libgui_qml_la_LDFLAGS = @QT_DECLARATIVE_LIBS@ @QT_GUI_LIBS@ @QT_XML_LIBS@ -module -avoid-version
-BUILT_SOURCES = gui_qml.moc proxy.moc ngqpoint.moc routeProxy.moc searchProxy.moc bookmarksProxy.moc vehicleProxy.moc navitProxy.moc guiProxy.moc
-%.moc: %.h
- @MOC@ $(srcdir)/$< > $@ || touch $@
-%.moc: %.cpp
- @MOC@ $(srcdir)/$< > $@ || touch $@
-distclean-local:
- -$(RM) *.moc
-
-SUBDIRS=skins
diff --git a/navit/gui/qml/skins/Makefile.am b/navit/gui/qml/skins/Makefile.am
deleted file mode 100644
index e0f29a206..000000000
--- a/navit/gui/qml/skins/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS=navit \ No newline at end of file
diff --git a/navit/gui/qml/skins/navit/Makefile.am b/navit/gui/qml/skins/navit/Makefile.am
deleted file mode 100644
index 0842a330c..000000000
--- a/navit/gui/qml/skins/navit/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-
-SKIN = navit
-
-qmldir=$(skinsdir)/$(SKIN)
-
-qml_DATA = ButtonIcon.qml ToggleSwitch.qml ToggleButton.qml ListSelector.qml Slider.qml CommonHighlight.qml Cellar.qml main.qml PageMain.qml PageNavigate.qml PageAbout.qml PageBookmarksAdd.qml PageBookmarks.qml PageRoute.qml PageSearch.qml PageSearchSelector.qml PageSettingsDisplay.qml PageSettingsLocale.qml PageSettings.qml PageSettingsRules.qml PageSettingsTools.qml PageSettingsVehicle.qml PagePoi.qml PagePointInfo.qml
-qml_DATA += background.svg knob.svg
-qml_DATA += command.js pagenavigation.js
diff --git a/navit/gui/win32/Makefile.am b/navit/gui/win32/Makefile.am
deleted file mode 100644
index 06d91fac6..000000000
--- a/navit/gui/win32/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = -I$(top_srcdir)/navit -I$(top_srcdir)/navit/graphics/win32 @NAVIT_CFLAGS@ -DMODULE=gui_win32
-if PLUGINS
-modulegui_LTLIBRARIES = libgui_win32.la
-else
-noinst_LTLIBRARIES = libgui_win32.la
-endif
-libgui_win32_la_SOURCES = gui_win32.c win32_gui_destination.c win32_gui_notify.c ceglue.h ceglue.c
-libgui_win32_la_LIBADD =
-libgui_win32_la_LDFLAGS = -module -avoid-version
diff --git a/navit/map/Makefile.am b/navit/map/Makefile.am
deleted file mode 100644
index d2b6efdc5..000000000
--- a/navit/map/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-SUBDIRS=
-if MAP_BINFILE
- SUBDIRS+=binfile
-endif
-if MAP_FILTER
- SUBDIRS+=filter
-endif
-if HAVELIBGARMIN
- SUBDIRS+=garmin
-endif
-if MAP_MG
- SUBDIRS+=mg
-endif
-if MAP_SHAPEFILE
- SUBDIRS+=shapefile
-endif
-if MAP_TEXTFILE
- SUBDIRS+=textfile
-endif
-if MAP_CSV
- SUBDIRS+=csv
-endif
-
-DIST_SUBDIRS=mg textfile csv binfile garmin shapefile filter
diff --git a/navit/map/binfile/Makefile.am b/navit/map/binfile/Makefile.am
deleted file mode 100644
index 6bf671175..000000000
--- a/navit/map/binfile/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_binfile
-if PLUGINS
- modulemap_LTLIBRARIES = libmap_binfile.la
-else
- noinst_LTLIBRARIES = libmap_binfile.la
-endif
-libmap_binfile_la_SOURCES = binfile.c
-libmap_binfile_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/map/csv/Makefile.am b/navit/map/csv/Makefile.am
deleted file mode 100644
index d8670ea2c..000000000
--- a/navit/map/csv/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_csv
-if PLUGINS
- modulemap_LTLIBRARIES = libmap_csv.la
-else
- noinst_LTLIBRARIES = libmap_csv.la
-endif
-libmap_csv_la_SOURCES = csv.c csv.h quadtree.c quadtree.h
-libmap_csv_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/map/filter/Makefile.am b/navit/map/filter/Makefile.am
deleted file mode 100644
index 3bd14e8bf..000000000
--- a/navit/map/filter/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_filter
-if PLUGINS
- modulemap_LTLIBRARIES = libmap_filter.la
-else
- noinst_LTLIBRARIES = libmap_filter.la
-endif
-libmap_filter_la_SOURCES = filter.c
-libmap_filter_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/map/garmin/Makefile.am b/navit/map/garmin/Makefile.am
deleted file mode 100644
index 8fa224fc1..000000000
--- a/navit/map/garmin/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_garmin
-AM_CPPFLAGS+= @LIBGARMIN_CFLAGS@
-INCLUDES=-I$(top_srcdir)/navit/map/garmin/libgarmin
-AM_CPPFLAGS+=-I$(top_srcdir)/navit/map/garmin/libgarmin
-AM_CPPFLAGS+=-I$(srcdir)
-
-modulemap_LTLIBRARIES = libmap_garmin.la
-libmap_garmin_la_SOURCES = garmin.c garmin.h gar2navit.c gar2navit.h
-libmap_garmin_la_LIBADD = @LIBGARMIN_LIBS@
-libmap_garmin_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-nodist_libmap_garmin_la_SOURCES = g2nbuiltin.h
-builddir = @builddir@
-
-gar2navit.l$(OBJEXT): g2nbuiltin.h
-
-CLEANFILES = g2nbuiltin.h
-
-noinst_PROGRAMS=gentypes$(EXEEXT)
-gentypes_SOURCES=gentypes.c
-
-gentypes.$(OBJEXT): gentypes.c
- $(CC_FOR_BUILD) -I$(top_srcdir)/navit -I$(top_srcdir) -c -o $@ $<
-
-gentypes$(EXEEXT): $(gentypes_OBJECTS) $(gentypes_DEPENDENCIES)
- @rm -f gentypes$(EXEEXT)
- $(CCLD_FOR_BUILD) -o $@ $(gentypes_OBJECTS)
-
-g2nbuiltin.h: gentypes$(EXEEXT) garmintypes.txt
- ./gentypes$(EXEEXT) $(top_srcdir)/navit/map/garmin/garmintypes.txt $@
-
-EXTRA_DIST = garmintypes.txt
-
diff --git a/navit/map/garmin_img/Makefile.am b/navit/map/garmin_img/Makefile.am
deleted file mode 100644
index dbbcd9b55..000000000
--- a/navit/map/garmin_img/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_garmin_img
-modulemap_LTLIBRARIES = libmap_garmin_img.la
-libmap_garmin_img_la_SOURCES = garmin_img.c
-libmap_garmin_img_la_LDFLAGS = -module -avoid-version
diff --git a/navit/map/mg/Makefile.am b/navit/map/mg/Makefile.am
deleted file mode 100644
index ee05be835..000000000
--- a/navit/map/mg/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_mg
-if PLUGINS
- modulemap_LTLIBRARIES = libmap_mg.la
-else
- noinst_LTLIBRARIES = libmap_mg.la
-endif
-libmap_mg_la_SOURCES = map.c block.c town.c tree.c poly.c street.c mg.h
-libmap_mg_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/map/shapefile/Makefile.am b/navit/map/shapefile/Makefile.am
deleted file mode 100644
index f23fb8278..000000000
--- a/navit/map/shapefile/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @SHAPEFILE_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_shapefile
-if PLUGINS
- modulemap_LTLIBRARIES = libmap_shapefile.la
-else
- noinst_LTLIBRARIES = libmap_shapefile.la
-endif
-libmap_shapefile_la_SOURCES = shapefile.c
-libmap_shapefile_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-if HAVE_SYSTEM_SHAPEFILELIB
-libmap_shapefile_la_LIBADD = @SHAPEFILE_LIBS@
-else
-libmap_shapefile_la_LIBADD = $(top_builddir)/navit/support/shapefile/libsupport_shapefile.la
-endif
diff --git a/navit/map/textfile/Makefile.am b/navit/map/textfile/Makefile.am
deleted file mode 100644
index b3190e7f7..000000000
--- a/navit/map/textfile/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_textfile
-if PLUGINS
- modulemap_LTLIBRARIES = libmap_textfile.la
-else
- noinst_LTLIBRARIES = libmap_textfile.la
-endif
-libmap_textfile_la_SOURCES = textfile.c textfile.h
-libmap_textfile_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/maps/Makefile.am b/navit/maps/Makefile.am
deleted file mode 100644
index 798ca6d5c..000000000
--- a/navit/maps/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-
-.SECONDARY:
-
-SAMPLE_MAP=osm_bbox_11.3,47.9,11.7,48.2
-
-maptool_args=--attr-debug-level=5
-maptool=$(top_builddir)/navit/maptool/maptool
-
-maps_DATA = $(SAMPLE_MAP).bin $(SAMPLE_MAP).xml
-
-SUFFIXES=.osm.bz2 .osm.pbf .txt .shp .osm
-
-samplemap: $(SAMPLE_MAP).bin
-
-.osm.bin:
- echo "Converting osm map"
- $(maptool) $(maptool_args) $@.tmp <$<
- mv $@.tmp $@
-
-.txt.bin:
- $(maptool) $(maptool_args) $@.tmp -p $(top_builddir)/navit/map/textfile/libmap_textfile.la -m "type=textfile data="$<
- mv $@.tmp $@
-
-.shp.bin:
- $(maptool) $(maptool_args) $@.tmp -p $(top_builddir)/navit/map/shapefile/libmap_shapefile.la -m "type=shapefile data=$(subst .shp,,$<) $(SHAPEFILE_ATTRIBUTES)"
- mv $@.tmp $@
-
-.osm.bz2.bin:
- echo "Converting osm map"
- bzcat $< | $(maptool) $(maptool_args) $@.tmp
- mv $@.tmp $@
-
-.osm.pbf.bin:
- echo "Converting osm map"
- $(maptool) --protobuf $(maptool_args) $@.tmp <$<
- mv $@.tmp $@
-
-.bin.xml:
- echo '<map type="binfile" enabled="yes" data="$$NAVIT_SHAREDIR/maps/$<"/>' >$@
-
-
-$(SAMPLE_MAP).osm.bz2:
- echo "Downloading osm sample map"
- wget -O $(SAMPLE_MAP).osm.bz2.tmp http://www.navit-project.org/maps/$(SAMPLE_MAP).osm.bz2
- mv $(SAMPLE_MAP).osm.bz2.tmp $(SAMPLE_MAP).osm.bz2
-
-distclean-local:
- rm -f $(SAMPLE_MAP).osm.bz2 $(SAMPLE_MAP).bin $(SAMPLE_MAP).xml
-
-all:
diff --git a/navit/maptool/Makefile.am b/navit/maptool/Makefile.am
deleted file mode 100644
index 95454a058..000000000
--- a/navit/maptool/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-if !SUPPORT_ANDROID
- bin_PROGRAMS = maptool
- noinst_LTLIBRARIES = libmaptool.la
-endif
-
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit @ZLIB_CFLAGS@ @POSTGRESQL_CFLAGS@ -DMODULE=maptool
-libmaptool_la_SOURCES = boundaries.c buffer.c ch.c coastline.c itembin.c itembin_buffer.c misc.c osm.c osm_o5m.c osm_psql.c osm_protobuf.c osm_protobufdb.c osm_relations.c osm_xml.c sourcesink.c tempfile.c tile.c zip.c maptool.h generated-code/fileformat.pb-c.c generated-code/fileformat.pb-c.h generated-code/osmformat.pb-c.c generated-code/osmformat.pb-c.h google/protobuf-c/protobuf-c.c google/protobuf-c/protobuf-c.h google/protobuf-c/protobuf-c-private.h
-maptool_SOURCES = maptool.c
-maptool_LDADD = libmaptool.la ../libnavit.la @NAVIT_LIBS@ @WORDEXP_LIBS@ @ZLIB_LIBS@ @POSTGRESQL_LIBS@ @CRYPTO_LIBS@ @INTLLIBS@ @LIBC_LIBS@
diff --git a/navit/navit.c b/navit/navit.c
index 9e4ea421b..3f4678032 100644
--- a/navit/navit.c
+++ b/navit/navit.c
@@ -3403,61 +3403,59 @@ navit_layout_switch(struct navit *n)
if (l->dayname || l->nightname) {
//Ok, we know that we have profile to switch
- //Check that we aren't calculating too fast
- if (vehicle_get_attr(n->vehicle->vehicle, attr_position_time_iso8601,&iso8601_attr,NULL)==1) {
- currTs=iso8601_to_secs(iso8601_attr.u.str);
- dbg(lvl_debug,"currTs: %u:%u\n",currTs%86400/3600,((currTs%86400)%3600)/60);
- }
- dbg(lvl_debug,"prevTs: %u:%u\n",n->prevTs%86400/3600,((n->prevTs%86400)%3600)/60);
- if (currTs-(n->prevTs)<60) {
- //We've have to wait a little
- return;
- }
- if (n->auto_switch == FALSE)
- return;
- if (sscanf(iso8601_attr.u.str,"%d-%02d-%02dT",&year,&month,&day) != 3)
- return;
- if (vehicle_get_attr(n->vehicle->vehicle, attr_position_valid, &valid_attr,NULL) && valid_attr.u.num==attr_position_valid_invalid) {
- return; //No valid fix yet
- }
- if (vehicle_get_attr(n->vehicle->vehicle, attr_position_coord_geo,&geo_attr,NULL)!=1) {
+ //Check that we aren't calculating too fast
+ if (vehicle_get_attr(n->vehicle->vehicle, attr_position_time_iso8601,&iso8601_attr,NULL)==1) {
+ currTs=iso8601_to_secs(iso8601_attr.u.str);
+ dbg(lvl_debug,"currTs: %u:%u\n",currTs%86400/3600,((currTs%86400)%3600)/60);
+ }
+ dbg(lvl_debug,"prevTs: %u:%u\n",n->prevTs%86400/3600,((n->prevTs%86400)%3600)/60);
+
+ if (n->auto_switch == FALSE)
+ return;
+
+ if (currTs-(n->prevTs)<60) {
+ //We've have to wait a little
+ return;
+ }
+
+ if (sscanf(iso8601_attr.u.str,"%d-%02d-%02dT",&year,&month,&day) != 3)
+ return;
+ if (vehicle_get_attr(n->vehicle->vehicle, attr_position_valid, &valid_attr,NULL) && valid_attr.u.num==attr_position_valid_invalid) {
+ return; //No valid fix yet
+ }
+ if (vehicle_get_attr(n->vehicle->vehicle, attr_position_coord_geo,&geo_attr,NULL)!=1) {
//No position - no sun
return;
- }
- //We calculate sunrise anyway, cause it is needed both for day and for night
- if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) {
- //near the pole sun never rises/sets, so we should never switch profiles
- dbg(lvl_debug,"trise: %u:%u, sun never visible, never switch profile\n",HOURS(trise),MINUTES(trise));
- n->prevTs=currTs;
- return;
}
- trise_actual=trise;
- dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise));
- dbg(lvl_debug,"dayname = %s, name =%s \n",l->dayname, l->name);
- if (HOURS(trise)*60+MINUTES(trise)<(currTs%86400)/60) {
- after_sunrise = TRUE;
- }
- dbg(lvl_debug,"nightname = %s, name = %s \n",l->nightname, l->name);
- if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) {
- //near the pole sun never rises/sets, so we should never switch profiles
- dbg(lvl_debug,"tset: %u:%u, sun always visible, never switch profile\n",HOURS(tset),MINUTES(tset));
- n->prevTs=currTs;
- return;
- }
- dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset));
- if (((HOURS(tset)*60+MINUTES(tset)<(currTs%86400)/60)) ||
- ((HOURS(trise_actual)*60+MINUTES(trise_actual)>(currTs%86400)/60))) {
- after_sunset = TRUE;
- }
- if (after_sunrise && !after_sunset && l->dayname) {
- navit_set_layout_by_name(n,l->dayname);
+ //We calculate sunrise anyway, cause it is needed both for day and for night
+ if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) {
+ dbg(lvl_debug,"near the pole sun never rises/sets, so we should never switch profiles\n");
+ dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise));
+ dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset));
+ n->prevTs=currTs;
+ return;
+ }
+ trise_actual=trise;
+ dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise));
+ dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset));
+ dbg(lvl_debug,"dayname = %s, name =%s \n",l->dayname, l->name);
+ dbg(lvl_debug,"nightname = %s, name = %s \n",l->nightname, l->name);
+ if (HOURS(trise)*60+MINUTES(trise)<(currTs%86400)/60) {
+ after_sunrise = TRUE;
+ }
+
+ if (((HOURS(tset)*60+MINUTES(tset)<(currTs%86400)/60)) ||
+ ((HOURS(trise_actual)*60+MINUTES(trise_actual)>(currTs%86400)/60))) {
+ after_sunset = TRUE;
+ }
+ if (after_sunrise && !after_sunset && l->dayname) {
+ navit_set_layout_by_name(n,l->dayname);
dbg(lvl_debug,"layout set to day\n");
- }
- else if (after_sunset && l->nightname) {
- navit_set_layout_by_name(n,l->nightname);
- dbg(lvl_debug,"layout set to night\n");
- }
- n->prevTs=currTs;
+ }else if (after_sunset && l->nightname) {
+ navit_set_layout_by_name(n,l->nightname);
+ dbg(lvl_debug,"layout set to night\n");
+ }
+ n->prevTs=currTs;
}
}
diff --git a/navit/osd/Makefile.am b/navit/osd/Makefile.am
deleted file mode 100644
index f14eff62d..000000000
--- a/navit/osd/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-SUBDIRS=
-DIST_SUBDIRS=core
-
-if OSD_CORE
- SUBDIRS+=core
-endif
diff --git a/navit/osd/core/Makefile.am b/navit/osd/core/Makefile.am
deleted file mode 100644
index 10f17f8d2..000000000
--- a/navit/osd/core/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=osd_core
-if PLUGINS
- moduleosd_LTLIBRARIES = libosd_core.la
-else
- noinst_LTLIBRARIES = libosd_core.la
-endif
-libosd_core_la_SOURCES = osd_core.c
-libosd_core_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-
diff --git a/navit/plugin/Makefile.am b/navit/plugin/Makefile.am
deleted file mode 100644
index da51c76af..000000000
--- a/navit/plugin/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-SUBDIRS=
-if PLUGIN_PEDESTRIAN
- SUBDIRS += pedestrian
-endif
-
-DIST_SUBDIRS=pedestrian
diff --git a/navit/plugin/pedestrian/Makefile.am b/navit/plugin/pedestrian/Makefile.am
deleted file mode 100644
index 9427f44d5..000000000
--- a/navit/plugin/pedestrian/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=plugin_pedestrian
-moduleplugin_LTLIBRARIES = libplugin_pedestrian.la
-libplugin_pedestrian_la_LDFLAGS=-module -avoid-version @NAVIT_MODULE_LDFLAGS@ #-Wl,--no-undefined
-
-libplugin_pedestrian_la_SOURCES = pedestrian.c
-
-android: libplugin_pedestrian.la
- cp .libs/libplugin_pedestrian.so ../../android/libs/armeabi
-xslt:
- cp *.xslt ../../xslt
diff --git a/navit/speech/Makefile.am b/navit/speech/Makefile.am
deleted file mode 100644
index 3c232db0b..000000000
--- a/navit/speech/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-SUBDIRS=
-if SPEECH_ANDROID
- SUBDIRS += android
-endif
-if SPEECH_CMDLINE
- SUBDIRS += cmdline
-endif
-if SPEECH_DBUS
- SUBDIRS += dbus
-endif
-if SPEECH_ESPEAK
- SUBDIRS += espeak
-endif
-if SPEECH_SPEECH_DISPATCHER
- SUBDIRS += speech_dispatcher
-endif
diff --git a/navit/speech/android/Makefile.am b/navit/speech/android/Makefile.am
deleted file mode 100644
index c2a0dc350..000000000
--- a/navit/speech/android/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_android
-if PLUGINS
-modulespeech_LTLIBRARIES = libspeech_android.la
-else
-noinst_LTLIBRARIES = libspeech_android.la
-endif
-libspeech_android_la_SOURCES = speech_android.c
-libspeech_android_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-
-
-android: libspeech_android.la
- mkdir -p ../../android/libs/armeabi/navit/speech
- cp .libs/libspeech_android.so ../../android/libs/armeabi
-
-push: libspeech_android.la
- adb push .libs/libspeech_android.so /data/data/org.navitproject.navit/lib
diff --git a/navit/speech/cmdline/Makefile.am b/navit/speech/cmdline/Makefile.am
deleted file mode 100644
index 4597bd934..000000000
--- a/navit/speech/cmdline/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_cmdline
-if PLUGINS
-modulespeech_LTLIBRARIES = libspeech_cmdline.la
-else
-noinst_LTLIBRARIES = libspeech_cmdline.la
-endif
-libspeech_cmdline_la_SOURCES = speech_cmdline.c
-libspeech_cmdline_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/speech/dbus/Makefile.am b/navit/speech/dbus/Makefile.am
deleted file mode 100644
index abe285b15..000000000
--- a/navit/speech/dbus/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_dbus
-modulespeech_LTLIBRARIES = libspeech_dbus.la
-libspeech_dbus_la_SOURCES = speech_dbus.c
-libspeech_dbus_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/speech/espeak/Makefile.am b/navit/speech/espeak/Makefile.am
deleted file mode 100644
index ecdb50324..000000000
--- a/navit/speech/espeak/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_espeak
-if PLUGINS
-modulespeech_LTLIBRARIES = libspeech_espeak.la
-else
-noinst_LTLIBRARIES = libspeech_espeak.la
-endif
-libspeech_espeak_la_SOURCES = speak.c
-libspeech_espeak_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -L$(top_builddir)/navit/support/espeak -lsupport_espeak
-if !SUPPORT_WIN32CE
-libspeech_espeak_la_LDFLAGS += -Wl,-lwinmm
-endif
-
diff --git a/navit/speech/speech_dispatcher/Makefile.am b/navit/speech/speech_dispatcher/Makefile.am
deleted file mode 100644
index a040740ef..000000000
--- a/navit/speech/speech_dispatcher/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_speech_dispatcher
-modulespeech_LTLIBRARIES = libspeech_speech_dispatcher.la
-libspeech_speech_dispatcher_la_SOURCES = speech_speech_dispatcher.c
-libspeech_speech_dispatcher_la_LIBADD = @SPEECHD_LIBS@
-libspeech_speech_dispatcher_la_LDFLAGS = -module -avoid-version
diff --git a/navit/support/Makefile.am b/navit/support/Makefile.am
deleted file mode 100644
index 9f63840a1..000000000
--- a/navit/support/Makefile.am
+++ /dev/null
@@ -1,32 +0,0 @@
-SUBDIRS=
-if SUPPORT_ESPEAK
- SUBDIRS+=espeak
-endif
-if SUPPORT_EZXML
- SUBDIRS+=ezxml
-endif
-if SUPPORT_GLIB
- SUBDIRS+=glib
-endif
-if SUPPORT_WORDEXP
- SUBDIRS+=wordexp
-endif
-if SUPPORT_WIN32
- SUBDIRS+=win32
-endif
-if SUPPORT_ZLIB
- SUBDIRS+=zlib
-endif
-if SUPPORT_LIBC
- SUBDIRS+=libc
-endif
-if SUPPORT_LIBPNG
- SUBDIRS+=libpng
-endif
-if SPEECH_ESPEAK
- SUBDIRS+=espeak
-endif
-if !HAVE_SYSTEM_SHAPEFILELIB
- SUBDIRS+=shapefile
-endif
-DIST_SUBDIRS=espeak ezxml glib wordexp win32 zlib libc libpng shapefile
diff --git a/navit/support/espeak/Makefile.am b/navit/support/espeak/Makefile.am
deleted file mode 100755
index 3de91b41f..000000000
--- a/navit/support/espeak/Makefile.am
+++ /dev/null
@@ -1,67 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -DMODULE=support_espeak
-noinst_LTLIBRARIES = libsupport_espeak.la
-libsupport_espeak_la_SOURCES = compiledict.c dictionary.c intonation.c \
- readclause.c setlengths.c numbers.c synth_mbrola.c \
- synthdata.c synthesize.c translate.c \
- tr_languages.c voices.c wavegen.c phonemelist.c klatt.c speak_init.c
-libsupport_espeak_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-
-#bin_PROGRAMS = speak
-
-#speak_SOURCES = speak.c $(libsupport_espeak_la_SOURCES)
-
-nobase_pkgdata_DATA = espeak-data/af_dict espeak-data/ca_dict espeak-data/config espeak-data/cs_dict espeak-data/cy_dict
-nobase_pkgdata_DATA += espeak-data/da_dict espeak-data/de_dict espeak-data/el_dict espeak-data/en_dict espeak-data/eo_dict
-nobase_pkgdata_DATA += espeak-data/es_dict espeak-data/fi_dict espeak-data/fr_dict espeak-data/grc_dict espeak-data/hbs_dict
-nobase_pkgdata_DATA += espeak-data/hi_dict espeak-data/hu_dict espeak-data/hy_dict espeak-data/id_dict espeak-data/is_dict
-nobase_pkgdata_DATA += espeak-data/it_dict espeak-data/jbo_dict espeak-data/ku_dict espeak-data/la_dict espeak-data/lv_dict
-nobase_pkgdata_DATA += espeak-data/mk_dict espeak-data/nl_dict espeak-data/no_dict
-nobase_pkgdata_DATA += espeak-data/pap_dict espeak-data/phondata espeak-data/phondata-manifest espeak-data/phonindex
-nobase_pkgdata_DATA += espeak-data/phontab espeak-data/pl_dict espeak-data/pt_dict espeak-data/ro_dict espeak-data/ru_dict
-nobase_pkgdata_DATA += espeak-data/sk_dict espeak-data/sq_dict espeak-data/sv_dict espeak-data/sw_dict espeak-data/ta_dict
-nobase_pkgdata_DATA += espeak-data/tr_dict espeak-data/vi_dict espeak-data/voices/!v/croak espeak-data/voices/!v/f1
-nobase_pkgdata_DATA += espeak-data/voices/!v/f2 espeak-data/voices/!v/f3 espeak-data/voices/!v/f4 espeak-data/voices/!v/fast
-nobase_pkgdata_DATA += espeak-data/voices/!v/m1 espeak-data/voices/!v/m2 espeak-data/voices/!v/m3 espeak-data/voices/!v/m4
-nobase_pkgdata_DATA += espeak-data/voices/!v/m5 espeak-data/voices/!v/m6 espeak-data/voices/!v/m7 espeak-data/voices/!v/whisper
-nobase_pkgdata_DATA += espeak-data/voices/af espeak-data/voices/bs espeak-data/voices/ca espeak-data/voices/cs
-nobase_pkgdata_DATA += espeak-data/voices/cy espeak-data/voices/da espeak-data/voices/de espeak-data/voices/default
-nobase_pkgdata_DATA += espeak-data/voices/el espeak-data/voices/en/en espeak-data/voices/en/en-n espeak-data/voices/en/en-rp
-nobase_pkgdata_DATA += espeak-data/voices/en/en-sc espeak-data/voices/en/en-us espeak-data/voices/en/en-wi
-nobase_pkgdata_DATA += espeak-data/voices/en/en-wm espeak-data/voices/eo espeak-data/voices/es espeak-data/voices/es-la
-nobase_pkgdata_DATA += espeak-data/voices/fi espeak-data/voices/fr espeak-data/voices/fr-be espeak-data/voices/hi
-nobase_pkgdata_DATA += espeak-data/voices/hr espeak-data/voices/hu espeak-data/voices/hy espeak-data/voices/hy-west
-nobase_pkgdata_DATA += espeak-data/voices/id espeak-data/voices/is espeak-data/voices/it espeak-data/voices/ku
-nobase_pkgdata_DATA += espeak-data/voices/la espeak-data/voices/lv
-nobase_pkgdata_DATA += espeak-data/voices/mk espeak-data/voices/nl espeak-data/voices/no espeak-data/voices/pl
-nobase_pkgdata_DATA += espeak-data/voices/pt espeak-data/voices/pt-pt espeak-data/voices/ro espeak-data/voices/ru
-nobase_pkgdata_DATA += espeak-data/voices/sk espeak-data/voices/sq espeak-data/voices/sr espeak-data/voices/sv
-nobase_pkgdata_DATA += espeak-data/voices/sw espeak-data/voices/ta espeak-data/voices/test/grc espeak-data/voices/test/jbo
-nobase_pkgdata_DATA += espeak-data/voices/test/pap espeak-data/voices/tr espeak-data/voices/vi espeak-data/voices/zh
-nobase_pkgdata_DATA += espeak-data/voices/zh-yue espeak-data/zh_dict espeak-data/zhy_dict
-
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/af1_phtrans espeak-data/mbrola_ph/ca1_phtrans espeak-data/mbrola_ph/cr1_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/cs_phtrans espeak-data/mbrola_ph/de2_phtrans espeak-data/mbrola_ph/de4_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/de6_phtrans espeak-data/mbrola_ph/en1_phtrans espeak-data/mbrola_ph/es_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/fr1_phtrans espeak-data/mbrola_ph/gr2_phtrans espeak-data/mbrola_ph/grc-de6_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/hu1_phtrans espeak-data/mbrola_ph/id1_phtrans espeak-data/mbrola_ph/in1_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/it3_phtrans espeak-data/mbrola_ph/la1_phtrans espeak-data/mbrola_ph/nl_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/pl1_phtrans espeak-data/mbrola_ph/pt1_phtrans espeak-data/mbrola_ph/pt_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/ptbr4_phtrans espeak-data/mbrola_ph/ptbr_phtrans espeak-data/mbrola_ph/ro1_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/sv2_phtrans espeak-data/mbrola_ph/sv_phtrans espeak-data/mbrola_ph/us3_phtrans
-#nobase_pkgdata_DATA += espeak-data/mbrola_ph/us_phtrans
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-af1 espeak-data/voices/mb/mb-af1-en
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-br1 espeak-data/voices/mb/mb-br3 espeak-data/voices/mb/mb-br4
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-cr1 espeak-data/voices/mb/mb-cz2 espeak-data/voices/mb/mb-de2
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-de4 espeak-data/voices/mb/mb-de4-en espeak-data/voices/mb/mb-de5
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-de5-en espeak-data/voices/mb/mb-de6 espeak-data/voices/mb/mb-de6-grc
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-de7 espeak-data/voices/mb/mb-en1 espeak-data/voices/mb/mb-es1
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-es2 espeak-data/voices/mb/mb-fr1 espeak-data/voices/mb/mb-fr1-en
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-fr4 espeak-data/voices/mb/mb-fr4-en espeak-data/voices/mb/mb-gr2
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-gr2-en espeak-data/voices/mb/mb-hu1 espeak-data/voices/mb/mb-hu1-en
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-id1 espeak-data/voices/mb/mb-it3 espeak-data/voices/mb/mb-it4
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-la1 espeak-data/voices/mb/mb-nl2 espeak-data/voices/mb/mb-nl2-en
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-pl1 espeak-data/voices/mb/mb-pl1-en espeak-data/voices/mb/mb-pt1
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-ro1 espeak-data/voices/mb/mb-ro1-en espeak-data/voices/mb/mb-sw1
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-sw1-en espeak-data/voices/mb/mb-sw2 espeak-data/voices/mb/mb-sw2-en
-#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-us1 espeak-data/voices/mb/mb-us2 espeak-data/voices/mb/mb-us3
diff --git a/navit/support/ezxml/Makefile.am b/navit/support/ezxml/Makefile.am
deleted file mode 100644
index 1b091a397..000000000
--- a/navit/support/ezxml/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_ezxml -DEZXML_NOMMAP
-noinst_LTLIBRARIES = libsupport_ezxml.la
-libsupport_ezxml_la_SOURCES = ezxml.c ezxml_init.c ezxml.h
diff --git a/navit/support/gettext_intl/Makefile.in b/navit/support/gettext_intl/Makefile.in
deleted file mode 100644
index 05f15329e..000000000
--- a/navit/support/gettext_intl/Makefile.in
+++ /dev/null
@@ -1,493 +0,0 @@
-# Makefile for directory with message catalog handling library of GNU gettext
-# Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-top_builddir = ..
-VPATH = $(srcdir)
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-transform = @program_transform_name@
-libdir = @libdir@
-includedir = @includedir@
-datadir = @datadir@
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/intl
-aliaspath = $(localedir)
-subdir = intl
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
-
-l = @INTL_LIBTOOL_SUFFIX_PREFIX@
-
-AR = ar
-CC = @CC@
-LIBTOOL = @LIBTOOL@
-RANLIB = @RANLIB@
-YACC = @INTLBISON@ -y -d
-YFLAGS = --name-prefix=__gettext
-
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
--DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \
--DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
--Dset_relocation_prefix=libintl_set_relocation_prefix \
--Drelocate=libintl_relocate \
--DDEPENDS_ON_LIBICONV=1 @DEFS@
-CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-HEADERS = \
- gmo.h \
- gettextP.h \
- hash-string.h \
- loadinfo.h \
- plural-exp.h \
- eval-plural.h \
- localcharset.h \
- relocatable.h \
- xsize.h \
- printf-args.h printf-args.c \
- printf-parse.h wprintf-parse.h printf-parse.c \
- vasnprintf.h vasnwprintf.h vasnprintf.c \
- os2compat.h \
- libgnuintl.h.in
-SOURCES = \
- bindtextdom.c \
- dcgettext.c \
- dgettext.c \
- gettext.c \
- finddomain.c \
- loadmsgcat.c \
- localealias.c \
- textdomain.c \
- l10nflist.c \
- explodename.c \
- dcigettext.c \
- dcngettext.c \
- dngettext.c \
- ngettext.c \
- plural.y \
- plural-exp.c \
- localcharset.c \
- relocatable.c \
- localename.c \
- log.c \
- printf.c \
- osdep.c \
- os2compat.c \
- intl-compat.c
-OBJECTS = \
- bindtextdom.$lo \
- dcgettext.$lo \
- dgettext.$lo \
- gettext.$lo \
- finddomain.$lo \
- loadmsgcat.$lo \
- localealias.$lo \
- textdomain.$lo \
- l10nflist.$lo \
- explodename.$lo \
- dcigettext.$lo \
- dcngettext.$lo \
- dngettext.$lo \
- ngettext.$lo \
- plural.$lo \
- plural-exp.$lo \
- localcharset.$lo \
- relocatable.$lo \
- localename.$lo \
- log.$lo \
- printf.$lo \
- osdep.$lo \
- intl-compat.$lo
-DISTFILES.common = Makefile.in \
-config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
-DISTFILES.generated = plural.c
-DISTFILES.normal = VERSION
-DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \
-libgnuintl.h_vms Makefile.vms \
-libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
-DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
-COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
-
-all: all-@USE_INCLUDED_LIBINTL@
-all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
-all-no: all-no-@BUILD_INCLUDED_LIBINTL@
-all-no-yes: libgnuintl.$la
-all-no-no:
-
-libintl.a libgnuintl.a: $(OBJECTS)
- rm -f $@
- $(AR) cru $@ $(OBJECTS)
- $(RANLIB) $@
-
-libintl.la libgnuintl.la: $(OBJECTS)
- $(LIBTOOL) --mode=link \
- $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
- $(OBJECTS) @LTLIBICONV@ $(LIBS) -lc \
- -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
- -rpath $(libdir) \
- -no-undefined
-
-# Libtool's library version information for libintl.
-# Before making a gettext release, the gettext maintainer must change this
-# according to the libtool documentation, section "Library interface versions".
-# Maintainers of other packages that include the intl directory must *not*
-# change these values.
-LTV_CURRENT=7
-LTV_REVISION=0
-LTV_AGE=4
-
-.SUFFIXES:
-.SUFFIXES: .c .y .o .lo .sin .sed
-
-.c.o:
- $(COMPILE) $<
-
-.y.c:
- $(YACC) $(YFLAGS) --output $@ $<
- rm -f $*.h
-
-bindtextdom.lo: $(srcdir)/bindtextdom.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
-dcgettext.lo: $(srcdir)/dcgettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
-dgettext.lo: $(srcdir)/dgettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
-gettext.lo: $(srcdir)/gettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
-finddomain.lo: $(srcdir)/finddomain.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
-loadmsgcat.lo: $(srcdir)/loadmsgcat.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
-localealias.lo: $(srcdir)/localealias.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
-textdomain.lo: $(srcdir)/textdomain.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
-l10nflist.lo: $(srcdir)/l10nflist.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
-explodename.lo: $(srcdir)/explodename.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
-dcigettext.lo: $(srcdir)/dcigettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
-dcngettext.lo: $(srcdir)/dcngettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
-dngettext.lo: $(srcdir)/dngettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
-ngettext.lo: $(srcdir)/ngettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
-plural.lo: $(srcdir)/plural.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
-plural-exp.lo: $(srcdir)/plural-exp.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
-localcharset.lo: $(srcdir)/localcharset.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
-relocatable.lo: $(srcdir)/relocatable.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
-localename.lo: $(srcdir)/localename.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
-log.lo: $(srcdir)/log.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
-printf.lo: $(srcdir)/printf.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
-osdep.lo: $(srcdir)/osdep.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
-intl-compat.lo: $(srcdir)/intl-compat.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
-
-ref-add.sed: $(srcdir)/ref-add.sin
- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
- mv t-ref-add.sed ref-add.sed
-ref-del.sed: $(srcdir)/ref-del.sin
- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
- mv t-ref-del.sed ref-del.sed
-
-INCLUDES = -I. -I$(srcdir) -I..
-
-libgnuintl.h: $(srcdir)/libgnuintl.h.in
- sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
- -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
- -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
- -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
- < $(srcdir)/libgnuintl.h.in > libgnuintl.h
-
-libintl.h: libgnuintl.h
- cp libgnuintl.h libintl.h
-
-charset.alias: $(srcdir)/config.charset
- $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
- mv t-$@ $@
-
-check: all
-
-# We must not install the libintl.h/libintl.a files if we are on a
-# system which has the GNU gettext() function in its C library or in a
-# separate library.
-# If you want to use the one which comes with this version of the
-# package, you have to use `configure --with-included-gettext'.
-install: install-exec install-data
-install-exec: all
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
- $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
- $(LIBTOOL) --mode=install \
- $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
- if test "@RELOCATABLE@" = yes; then \
- dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
- if test -n "$$dependencies"; then \
- rm -f $(DESTDIR)$(libdir)/libintl.la; \
- fi; \
- fi; \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir); \
- $(LIBTOOL) --mode=install \
- $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
- $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
- $(LIBTOOL) --mode=uninstall \
- rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
- else \
- : ; \
- fi
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
- test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
- temp=$(DESTDIR)$(libdir)/t-charset.alias; \
- dest=$(DESTDIR)$(libdir)/charset.alias; \
- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
- orig=$(DESTDIR)$(libdir)/charset.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- else \
- if test @GLIBC21@ = no; then \
- orig=charset.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- fi; \
- fi; \
- $(mkinstalldirs) $(DESTDIR)$(localedir); \
- test -f $(DESTDIR)$(localedir)/locale.alias \
- && orig=$(DESTDIR)$(localedir)/locale.alias \
- || orig=$(srcdir)/locale.alias; \
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
- dest=$(DESTDIR)$(localedir)/locale.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- else \
- : ; \
- fi
-install-data: all
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
- $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
- dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
- for file in $$dists; do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
- dists="$(DISTFILES.generated)"; \
- for file in $$dists; do \
- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
- $(INSTALL_DATA) $$dir/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- dists="$(DISTFILES.obsolete)"; \
- for file in $$dists; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-
-install-strip: install
-
-installdirs:
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir); \
- else \
- : ; \
- fi
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
- test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
- $(mkinstalldirs) $(DESTDIR)$(localedir); \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall:
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
- rm -f $(DESTDIR)$(includedir)/libintl.h; \
- $(LIBTOOL) --mode=uninstall \
- rm -f $(DESTDIR)$(libdir)/libintl.$la; \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
- else \
- : ; \
- fi
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
- temp=$(DESTDIR)$(libdir)/t-charset.alias; \
- dest=$(DESTDIR)$(libdir)/charset.alias; \
- sed -f ref-del.sed $$dest > $$temp; \
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
- rm -f $$dest; \
- else \
- $(INSTALL_DATA) $$temp $$dest; \
- fi; \
- rm -f $$temp; \
- fi; \
- if test -f $(DESTDIR)$(localedir)/locale.alias; then \
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
- dest=$(DESTDIR)$(localedir)/locale.alias; \
- sed -f ref-del.sed $$dest > $$temp; \
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
- rm -f $$dest; \
- else \
- $(INSTALL_DATA) $$temp $$dest; \
- fi; \
- rm -f $$temp; \
- fi; \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools"; then \
- for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-
-info dvi ps pdf html:
-
-$(OBJECTS): ../config.h libgnuintl.h
-bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
-dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
-explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
-dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
-dcigettext.$lo: $(srcdir)/eval-plural.h
-localcharset.$lo: $(srcdir)/localcharset.h
-localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
-printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
-
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
-
-ctags: CTAGS
-
-CTAGS: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
-
-id: ID
-
-ID: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
-
-
-mostlyclean:
- rm -f *.a *.la *.o *.obj *.lo core core.*
- rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
- rm -f -r .libs _libs
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile ID TAGS
- if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
- rm -f ChangeLog.inst $(DISTFILES.normal); \
- else \
- : ; \
- fi
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-
-# GNU gettext needs not contain the file `VERSION' but contains some
-# other files which should not be distributed in other packages.
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: Makefile
- if test "$(PACKAGE)" = "gettext-tools"; then \
- : ; \
- else \
- if test "$(PACKAGE)" = "gettext-runtime"; then \
- additional="$(DISTFILES.gettext)"; \
- else \
- additional="$(DISTFILES.normal)"; \
- fi; \
- $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
- for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
- cp -p $$dir/$$file $(distdir); \
- done; \
- fi
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status
-# This would be more efficient, but doesn't work any more with autoconf-2.57,
-# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
-# cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/navit/support/glib/Makefile.am b/navit/support/glib/Makefile.am
deleted file mode 100644
index c268053f1..000000000
--- a/navit/support/glib/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -I$(top_srcdir)/navit/support -DMODULE=support_glib
-noinst_LTLIBRARIES = libsupport_glib.la
-libsupport_glib_la_SOURCES = fake.c galiasdef.c gatomic.c gerror.c \
- ghash.c glib_init.c glist.c gmem.c gmessages.c gprimes.c gprintf.c gslice.c \
- gslist.c gstrfuncs.c gstring.c gutils.c gutf8.c \
- fake.h galias.h gerror.h ghash.h glib.h glibconfig.h glibintl.h glist.h \
- gmacros.h gmem.h gmessages.h gprintf.h gprintfint.h gquark.h gslice.h \
- gslist.h gstrfuncs.h gthreadprivate.h gtypes.h
diff --git a/navit/support/libc/Makefile.am b/navit/support/libc/Makefile.am
deleted file mode 100644
index fae600f8f..000000000
--- a/navit/support/libc/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_libc
-noinst_LTLIBRARIES = libsupport_libc.la
-libsupport_libc_la_SOURCES = libc.c libc_init.c
-if SUPPORT_WIN32CE
-noinst_LIBRARIES = libc.a
-libc_a_SOURCES =
-endif
diff --git a/navit/support/libpng/Makefile.am b/navit/support/libpng/Makefile.am
deleted file mode 100644
index e8ed41c1e..000000000
--- a/navit/support/libpng/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit @ZLIB_CFLAGS@ -DMODULE=support_libpng
-noinst_LTLIBRARIES = libsupport_libpng.la
-libsupport_libpng_la_SOURCES = png.c pngerror.c pngget.c pngmem.c pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c libpng_init.c
-
-#bin_PROGRAMS = pngm2pnm
-#pngm2pnm_LDADD=libsupport_libpng.la @ZLIB_LIBS@
-
diff --git a/navit/support/shapefile/Makefile.am b/navit/support/shapefile/Makefile.am
deleted file mode 100644
index 3f5115ca1..000000000
--- a/navit/support/shapefile/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_shapefile
-noinst_LTLIBRARIES = libsupport_shapefile.la
-libsupport_shapefile_la_SOURCES = dbfopen.c shpopen.c shptree.c shapefil.h
diff --git a/navit/support/win32/Makefile.am b/navit/support/win32/Makefile.am
deleted file mode 100644
index aee4350cb..000000000
--- a/navit/support/win32/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_win32
-noinst_LTLIBRARIES = libsupport_win32.la
-libsupport_win32_la_SOURCES = mmap.c win32_init.c sys/mman.h ConvertUTF.c ConvertUTF.h serial_io.c addwinsock.c
-
diff --git a/navit/support/wordexp/Makefile.am b/navit/support/wordexp/Makefile.am
deleted file mode 100644
index 44d5ad272..000000000
--- a/navit/support/wordexp/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_wordexp
-noinst_LTLIBRARIES = libsupport_wordexp.la
-libsupport_wordexp_la_SOURCES = wordexp.c wordexp_init.c wordexp.h glob.c glob.h
diff --git a/navit/support/zlib/Makefile.am b/navit/support/zlib/Makefile.am
deleted file mode 100644
index a49fe3ca7..000000000
--- a/navit/support/zlib/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_zlib
-noinst_LTLIBRARIES = libsupport_zlib.la
-libsupport_zlib_la_SOURCES = adler32.c crc32.c crc32.h infback.c inffast.c inffast.h inffixed.h inflate.c inflate.h inftrees.c inftrees.h zconf.h zlib.h zutil.c zutil.h zlib_init.c
diff --git a/navit/tools/gpx2navit_txt/Makefile.am b/navit/tools/gpx2navit_txt/Makefile.am
deleted file mode 100644
index 05f1ce1a0..000000000
--- a/navit/tools/gpx2navit_txt/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-SUBDIRS = src man
-
-EXTRA_DIST = gps2shp pinatest2.gpx debian develop
-
-debian-dist:
- dpkg-buildpackage -rfakeroot -d -tc -us -uc
-
-CLEANFILES = \
- pinatest2_wpt.shx \
- pinatest2_wpt.shp \
- pinatest2_wpt.dbf \
- pinatest2_trk.shx \
- pinatest2_trk.shp \
- pinatest2_trk.dbf \
- pinatest2_rte.shx \
- pinatest2_rte.shp \
- pinatest2_rte.dbf \
- pinatest2_meta.txt
-
-GPX2SHP=src/gpx2shp
-check: $(GPX2SHP)
- $(GPX2SHP) || true
- $(GPX2SHP) --version
- $(GPX2SHP) -s pinatest2.gpx
- $(GPX2SHP) -e pinatest2.gpx
- $(GPX2SHP) -p pinatest2.gpx
- $(GPX2SHP) -v pinatest2.gpx > /dev/null
diff --git a/navit/tools/gpx2navit_txt/man/Makefile.am b/navit/tools/gpx2navit_txt/man/Makefile.am
deleted file mode 100644
index 71f0f055d..000000000
--- a/navit/tools/gpx2navit_txt/man/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-man_MANS = gpx2navit_txt.1
-EXTRA_DIST = $(man_MANS)
diff --git a/navit/tools/gpx2navit_txt/src/Makefile.am b/navit/tools/gpx2navit_txt/src/Makefile.am
deleted file mode 100644
index 5cce6fa3c..000000000
--- a/navit/tools/gpx2navit_txt/src/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-bin_PROGRAMS = gpx2navit_txt
-
-gpx2navit_txt_SOURCES = \
- emess.h \
- geod_for.c \
- geod_inv.c \
- geod_set.c \
- geodesic.h \
- gpx2navit_txt.h \
- main.c \
- misc.c \
- utils.c \
- parser.c \
- elementControl.c\
- setwpt.c \
- setpath.c \
- setmeta.c \
- errorcode.h
-
-INCLUDES= -I$(srcdir)
-
-AM_CFLAGS = -g
-
-debian-dist:
- dpkg-buildpackage -rfakeroot -d -tc -us -uc
-
diff --git a/navit/vehicle/Makefile.am b/navit/vehicle/Makefile.am
deleted file mode 100644
index 80fc84db7..000000000
--- a/navit/vehicle/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-SUBDIRS=
-if VEHICLE_MAEMO
- SUBDIRS += maemo
-endif
-if VEHICLE_ANDROID
- SUBDIRS += android
-endif
-if VEHICLE_IPHONE
- SUBDIRS += iphone
-endif
-if VEHICLE_DEMO
- SUBDIRS += demo
-endif
-if VEHICLE_FILE
- SUBDIRS += file
-endif
-if VEHICLE_GPSD
- SUBDIRS += gpsd
-endif
-if VEHICLE_GPSD_DBUS
- SUBDIRS += gpsd_dbus
-endif
-if VEHICLE_GYPSY
- SUBDIRS += gypsy
-endif
-if VEHICLE_NULL
- SUBDIRS += null
-endif
-if VEHICLE_WINCE
- SUBDIRS += wince
-endif
-if VEHICLE_WEBOS
- SUBDIRS += webos
-endif
diff --git a/navit/vehicle/android/Makefile.am b/navit/vehicle/android/Makefile.am
deleted file mode 100644
index 7f7799acb..000000000
--- a/navit/vehicle/android/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_android
-modulevehicle_LTLIBRARIES = libvehicle_android.la
-libvehicle_android_la_SOURCES = vehicle_android.c
-libvehicle_android_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/vehicle/demo/Makefile.am b/navit/vehicle/demo/Makefile.am
deleted file mode 100644
index 5662119d4..000000000
--- a/navit/vehicle/demo/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_demo
-if PLUGINS
-modulevehicle_LTLIBRARIES = libvehicle_demo.la
-else
-noinst_LTLIBRARIES = libvehicle_demo.la
-endif
-libvehicle_demo_la_SOURCES = vehicle_demo.c
-libvehicle_demo_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/vehicle/file/Makefile.am b/navit/vehicle/file/Makefile.am
deleted file mode 100644
index ce3a45b65..000000000
--- a/navit/vehicle/file/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit
-modulevehicle_LTLIBRARIES = libvehicle_file.la libvehicle_pipe.la libvehicle_socket.la libvehicle_serial.la
-libvehicle_file_la_CFLAGS=-DMODULE=vehicle_file
-libvehicle_file_la_SOURCES = vehicle_file.c
-libvehicle_file_la_LDFLAGS = -module -avoid-version @NAVIT_SOCKET_LDFLAGS@ @NAVIT_MODULE_LDFLAGS@
-libvehicle_pipe_la_CFLAGS=-DMODULE=vehicle_pipe
-libvehicle_pipe_la_SOURCES = vehicle_pipe.c
-libvehicle_pipe_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-libvehicle_socket_la_CFLAGS=-DMODULE=vehicle_socket
-libvehicle_socket_la_SOURCES = vehicle_socket.c
-libvehicle_socket_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
-libvehicle_serial_la_CFLAGS=-DMODULE=vehicle_serial
-libvehicle_serial_la_SOURCES = vehicle_serial.c
-libvehicle_serial_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/vehicle/gpsd/Makefile.am b/navit/vehicle/gpsd/Makefile.am
deleted file mode 100644
index 1c47ccc56..000000000
--- a/navit/vehicle/gpsd/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @GPSBT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_gpsd
-modulevehicle_LTLIBRARIES = libvehicle_gpsd.la
-libvehicle_gpsd_la_SOURCES = vehicle_gpsd.c
-libvehicle_gpsd_la_LIBADD = @GPSD_LIBS@ @GPSBT_LIBS@
-libvehicle_gpsd_la_LDFLAGS = -module -avoid-version
diff --git a/navit/vehicle/gpsd_dbus/Makefile.am b/navit/vehicle/gpsd_dbus/Makefile.am
deleted file mode 100644
index 4685d2ea8..000000000
--- a/navit/vehicle/gpsd_dbus/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @DBUS_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_gpsd_dbus
-modulevehicle_LTLIBRARIES = libvehicle_gpsd_dbus.la
-libvehicle_gpsd_dbus_la_SOURCES = vehicle_gpsd_dbus.c
-libvehicle_gpsd_dbus_la_LIBADD = @DBUS_LIBS@
-libvehicle_gpsd_dbus_la_LDFLAGS = -module -avoid-version
diff --git a/navit/vehicle/gypsy/Makefile.am b/navit/vehicle/gypsy/Makefile.am
deleted file mode 100644
index 1e997f23c..000000000
--- a/navit/vehicle/gypsy/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @DBUS_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_gypsy
-modulevehicle_LTLIBRARIES = libvehicle_gypsy.la
-libvehicle_gypsy_la_SOURCES = vehicle_gypsy.c
-libvehicle_gypsy_la_LIBADD = @GYPSY_LIBS@
-libvehicle_gypsy_la_LDFLAGS = -module -avoid-version
diff --git a/navit/vehicle/iphone/Makefile.am b/navit/vehicle/iphone/Makefile.am
deleted file mode 100644
index 7abb872f4..000000000
--- a/navit/vehicle/iphone/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_iphone
-modulevehicle_LTLIBRARIES = libvehicle_iphone.la
-libvehicle_iphone_la_SOURCES = vehicle_iphone.c corelocation.m
-libvehicle_iphone_la_LDFLAGS = -module -Wl,-framework,CoreLocation
-libvehicle_iphone_la_LIBADD = @IPHONE_LIBS@
diff --git a/navit/vehicle/maemo/Makefile.am b/navit/vehicle/maemo/Makefile.am
deleted file mode 100644
index d82bdb699..000000000
--- a/navit/vehicle/maemo/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @LIBLOCATION_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_maemo
-modulevehicle_LTLIBRARIES = libvehicle_maemo.la
-libvehicle_maemo_la_SOURCES = vehicle_maemo.c
-libvehicle_maemo_la_LIBADD = @LIBLOCATION_LIBS@
-libvehicle_maemo_la_LDFLAGS = -module -avoid-version
diff --git a/navit/vehicle/null/Makefile.am b/navit/vehicle/null/Makefile.am
deleted file mode 100644
index 83387eb27..000000000
--- a/navit/vehicle/null/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_null
-if PLUGINS
- modulevehicle_LTLIBRARIES = libvehicle_null.la
-else
- noinst_LTLIBRARIES = libvehicle_null.la
-endif
-libvehicle_null_la_SOURCES = vehicle_null.c
-libvehicle_null_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@
diff --git a/navit/vehicle/qt5/CMakeLists.txt b/navit/vehicle/qt5/CMakeLists.txt
new file mode 100644
index 000000000..411d9d6ee
--- /dev/null
+++ b/navit/vehicle/qt5/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Find includes in corresponding build directories
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+# Instruct CMake to run moc automatically when needed.
+set(CMAKE_AUTOMOC ON)
+
+module_add_library(vehicle_qt5 vehicle_qt5.cpp)
diff --git a/navit/vehicle/qt5/vehicle_qt5.cpp b/navit/vehicle/qt5/vehicle_qt5.cpp
new file mode 100644
index 000000000..d6d33d7ab
--- /dev/null
+++ b/navit/vehicle/qt5/vehicle_qt5.cpp
@@ -0,0 +1,300 @@
+/** @file vehicle_null.c
+ * @brief null uses dbus signals
+ *
+ * Navit, a modular navigation system.
+ * Copyright (C) 2005-2008 Navit Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * @Author Tim Niemeyer <reddog@mastersword.de>
+ * @date 2008-2009
+ */
+
+#include "vehicle_qt5.h"
+#include "vehicle_qt5.moc"
+#include <QDateTime>
+QNavitGeoReceiver::QNavitGeoReceiver (QObject * parent, struct vehicle_priv * c):QObject(parent)
+{
+ priv = c;
+ if(priv->source != NULL)
+ {
+ connect(priv->source, SIGNAL(positionUpdated(QGeoPositionInfo)),this, SLOT(positionUpdated(QGeoPositionInfo)));
+ }
+ if(priv->satellites != NULL)
+ {
+ connect(priv->satellites, SIGNAL(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &)), this, SLOT(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &)));
+ connect(priv->satellites, SIGNAL(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &)), this, SLOT(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &)));
+ }
+}
+void QNavitGeoReceiver::satellitesInUseUpdated(const QList<QGeoSatelliteInfo> & sats)
+{
+ dbg(lvl_debug, "Sats in use: %d\n", sats.count());
+ priv->sats_used = sats.count();
+ callback_list_call_attr_0(priv->cbl, attr_position_sats_used);
+}
+
+void QNavitGeoReceiver::satellitesInViewUpdated(const QList<QGeoSatelliteInfo> & sats)
+{
+ dbg(lvl_debug, "Sats in view: %d\n", sats.count());
+ priv->sats = sats.count();
+ callback_list_call_attr_0(priv->cbl, attr_position_qual);
+}
+
+void QNavitGeoReceiver::positionUpdated(const QGeoPositionInfo &info)
+{
+
+ /* ignore stale view */
+ if(info.coordinate().isValid())
+ {
+ if(info.timestamp().toUTC().secsTo(QDateTime::currentDateTimeUtc()) > 20)
+ {
+ dbg(lvl_debug,"Ignoring old FIX\n");
+ return;
+ }
+ }
+
+ if(info.hasAttribute(QGeoPositionInfo::HorizontalAccuracy))
+ {
+ dbg(lvl_debug,"Horizontal acc (%f)\n",info.attribute(QGeoPositionInfo::HorizontalAccuracy));
+ priv->radius = info.attribute(QGeoPositionInfo::HorizontalAccuracy);
+ callback_list_call_attr_0(priv->cbl, attr_position_radius);
+ }
+ if(info.hasAttribute(QGeoPositionInfo::GroundSpeed))
+ {
+ dbg(lvl_debug,"Got ground speed (%f)\n",info.attribute(QGeoPositionInfo::GroundSpeed));
+ priv->speed = info.attribute(QGeoPositionInfo::GroundSpeed) * 3.6;
+ callback_list_call_attr_0(priv->cbl, attr_position_speed);
+ }
+ if(info.hasAttribute(QGeoPositionInfo::Direction))
+ {
+ dbg(lvl_debug,"Direction (%f)\n",info.attribute(QGeoPositionInfo::Direction));
+ priv->direction = info.attribute(QGeoPositionInfo::Direction);
+ callback_list_call_attr_0(priv->cbl, attr_position_direction);
+ }
+
+ switch(info.coordinate().type())
+ {
+ case QGeoCoordinate::Coordinate3D:
+ priv->fix_type = 2;
+ break;
+ case QGeoCoordinate::Coordinate2D:
+ priv->fix_type = 1;
+ break;
+ case QGeoCoordinate::InvalidCoordinate:
+ priv->fix_type = 0;
+ break;
+ }
+
+
+ if(info.coordinate().isValid())
+ {
+ dbg(lvl_debug, "Got valid coordinate (lat %f, lon %f)\n", info.coordinate().latitude(), info.coordinate().longitude());
+ priv->geo.lat = info.coordinate().latitude();
+ priv->geo.lng = info.coordinate().longitude();
+ priv->have_coords = 1;
+ if(info.coordinate().type() == QGeoCoordinate::Coordinate3D)
+ {
+ dbg(lvl_debug,"Got valid altitude (alt %f)\n", info.coordinate().altitude());
+ priv->height = info.coordinate().altitude();
+ }
+ //dbg(lvl_debug, "Time %s\n", info.timestamp().toUTC().toString().toLatin1().data());
+ priv->fix_time = info.timestamp().toUTC().toTime_t();
+ callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
+ }
+ else
+ {
+ dbg(lvl_debug, "Got invalid coordinate\n");
+ priv->have_coords = 0;
+ callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
+ }
+}
+
+
+/**
+ * @brief Free the null_vehicle
+ *
+ * @param priv
+ * @returns nothing
+ */
+static void
+vehicle_qt5_destroy(struct vehicle_priv *priv)
+{
+ dbg(lvl_debug,"enter\n");
+ if(priv->receiver != NULL)
+ delete priv->receiver;
+ if(priv->source != NULL)
+ delete priv->source;
+ g_free(priv);
+}
+
+/**
+ * @brief Provide the outside with information
+ *
+ * @param priv
+ * @param type TODO: What can this be?
+ * @param attr
+ * @returns true/false
+ */
+static int
+vehicle_qt5_position_attr_get(struct vehicle_priv *priv,
+ enum attr_type type, struct attr *attr)
+{
+ struct attr * active=NULL;
+ dbg(lvl_debug,"enter %s\n",attr_to_name(type));
+ switch (type) {
+ case attr_position_valid:
+ attr->u.num = priv->have_coords;
+ break;
+ case attr_position_fix_type:
+ attr->u.num = priv->fix_type;
+ break;
+ case attr_position_height:
+ attr->u.numd = &priv->height;
+ break;
+ case attr_position_speed:
+ attr->u.numd = &priv->speed;
+ break;
+ case attr_position_direction:
+ attr->u.numd = &priv->direction;
+ break;
+ case attr_position_radius:
+ attr->u.numd = &priv->radius;
+ break;
+ case attr_position_qual:
+ attr->u.num = priv->sats;
+ break;
+ case attr_position_sats_used:
+ attr->u.num = priv->sats_used;
+ break;
+ case attr_position_coord_geo:
+ attr->u.coord_geo = &priv->geo;
+ if (!priv->have_coords)
+ return 0;
+ break;
+ case attr_position_time_iso8601:
+ if (priv->fix_time) {
+ struct tm tm;
+ if (gmtime_r(&priv->fix_time, &tm)) {
+ strftime(priv->fixiso8601, sizeof(priv->fixiso8601),
+ "%Y-%m-%dT%TZ", &tm);
+ attr->u.str=priv->fixiso8601;
+ }
+ else {
+ priv->fix_time = 0;
+ return 0;
+ }
+ //dbg(lvl_debug,"Fix Time: %s\n", priv->fixiso8601);
+ }
+ else {
+ //dbg(lvl_debug,"Fix Time: 0\n");
+ return 0;
+ }
+ break;
+
+ case attr_active:
+ active = attr_search(priv->attrs,NULL,attr_active);
+ if(active != NULL) {
+ attr->u.num=active->u.num;
+ return 1;
+ } else
+ return 0;
+ break;
+
+ default:
+ return 0;
+ }
+ dbg(lvl_debug,"ok\n");
+ attr->type = type;
+ return 1;
+}
+
+static int
+vehicle_qt5_set_attr(struct vehicle_priv *priv, struct attr *attr)
+{
+ switch (attr->type) {
+ case attr_position_speed:
+ priv->speed=*attr->u.numd;
+ break;
+ case attr_position_direction:
+ priv->direction=*attr->u.numd;
+ break;
+ case attr_position_coord_geo:
+ priv->geo=*attr->u.coord_geo;
+ priv->have_coords=1;
+ break;
+ default:
+ break;
+ }
+ callback_list_call_attr_0(priv->cbl, attr->type);
+ return 1;
+}
+
+
+struct vehicle_methods vehicle_null_methods = {
+ vehicle_qt5_destroy,
+ vehicle_qt5_position_attr_get,
+ vehicle_qt5_set_attr,
+};
+
+/**
+ * @brief Create null_vehicle
+ *
+ * @param meth
+ * @param cbl
+ * @param attrs
+ * @returns vehicle_priv
+ */
+static struct vehicle_priv *
+vehicle_qt5_new_qt5(struct vehicle_methods *meth,
+ struct callback_list *cbl,
+ struct attr **attrs)
+{
+ struct vehicle_priv *ret;
+
+ dbg(lvl_debug, "enter\n");
+ ret = g_new0(struct vehicle_priv, 1);
+ ret->cbl = cbl;
+ *meth = vehicle_null_methods;
+ ret->attrs = attrs;
+ ret->source = QGeoPositionInfoSource::createDefaultSource(NULL);
+ ret->satellites = QGeoSatelliteInfoSource::createDefaultSource(NULL);
+ if(ret->source == NULL)
+ {
+ dbg(lvl_error, "Got NO QGeoPositionInfoSource\n");
+ }
+ else
+ {
+ dbg(lvl_debug, "Using %s\n", ret->source->sourceName().toLatin1().data());
+ ret->receiver = new QNavitGeoReceiver(NULL,ret);
+ ret->satellites->setUpdateInterval(1000);
+ ret->satellites->startUpdates();
+ ret->source->setUpdateInterval(500);
+ ret->source->startUpdates();
+ }
+ dbg(lvl_debug, "return\n");
+ return ret;
+}
+
+/**
+ * @brief register vehicle_null
+ *
+ * @returns nothing
+ */
+void
+plugin_init(void)
+{
+ dbg(lvl_debug, "enter\n");
+ plugin_register_category_vehicle("qt5", vehicle_qt5_new_qt5);
+}
diff --git a/navit/vehicle/qt5/vehicle_qt5.h b/navit/vehicle/qt5/vehicle_qt5.h
new file mode 100644
index 000000000..c38c45284
--- /dev/null
+++ b/navit/vehicle/qt5/vehicle_qt5.h
@@ -0,0 +1,58 @@
+#ifndef __vehicle_qt5_h
+#define __vehicle_qt5_h
+
+#include <config.h>
+#include <string.h>
+#include <glib.h>
+#include <math.h>
+#include <time.h>
+#include "debug.h"
+#include "plugin.h"
+#include "coord.h"
+#include "item.h"
+#include "vehicle.h"
+
+#include <QObject>
+#include <QStringList>
+#include <QGeoPositionInfoSource>
+#include <QGeoSatelliteInfoSource>
+
+#include "callback.h"
+
+#include <QObject>
+
+class QNavitGeoReceiver;
+struct vehicle_priv {
+ struct callback_list *cbl;
+ struct coord_geo geo;
+ double speed;
+ double direction;
+ double height;
+ double radius;
+ int fix_type;
+ time_t fix_time;
+ char fixiso8601[128];
+ int sats;
+ int sats_used;
+ int have_coords;
+ struct attr ** attrs;
+
+ QGeoPositionInfoSource *source;
+ QGeoSatelliteInfoSource *satellites;
+ QNavitGeoReceiver * receiver;
+};
+
+class QNavitGeoReceiver : public QObject
+{
+ Q_OBJECT
+public:
+ QNavitGeoReceiver (QObject * parent, struct vehicle_priv * c);
+public slots:
+ void positionUpdated(const QGeoPositionInfo &info);
+ void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> & satellites);
+ void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> & satellites);
+
+private:
+ struct vehicle_priv * priv;
+};
+#endif \ No newline at end of file
diff --git a/navit/vehicle/webos/Makefile.am b/navit/vehicle/webos/Makefile.am
deleted file mode 100644
index 15f8767fc..000000000
--- a/navit/vehicle/webos/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ @SDL_CFLAGS@ @LIBPDL_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_webos
-modulevehicle_LTLIBRARIES = libvehicle_webos.la
-libvehicle_webos_la_SOURCES = vehicle_webos.c bluetooth.c cJSON.c
-libvehicle_webos_la_LDFLAGS = @SDL_LIBS@ @LIBPDL_LIBS@ -module -avoid-version
diff --git a/navit/vehicle/wince/Makefile.am b/navit/vehicle/wince/Makefile.am
deleted file mode 100644
index af6fcb19d..000000000
--- a/navit/vehicle/wince/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_wince
-if PLUGINS
-modulevehicle_LTLIBRARIES = libvehicle_wince.la
-else
-noinst_LTLIBRARIES = libvehicle_wince.la
-endif
-libvehicle_wince_la_SOURCES = vehicle_wince.c
-libvehicle_wince_la_LDFLAGS = -module -avoid-version
diff --git a/navit/xpm/Makefile.am b/navit/xpm/Makefile.am
deleted file mode 100644
index 40b7cc851..000000000
--- a/navit/xpm/Makefile.am
+++ /dev/null
@@ -1,341 +0,0 @@
-include $(top_srcdir)/Makefile.inc
-
-image_DATA = cemetery.xpm
-image_DATA += dumping_station.xpm
-image_DATA += highway_exit.xpm
-image_DATA += hunting_stand.xpm
-image_DATA += level_crossing.xpm
-image_DATA += tower.xpm
-image_DATA += trailerpark.xpm
-image_DATA += public_office.xpm
-
-
-## Obsolete. Should be removed eventually...
-
-image_DATA += biergarten.xpm
-image_DATA += bus_halt.xpm
-image_DATA += car_dealer.xpm
-image_DATA += castle.xpm
-image_DATA += library.xpm
-image_DATA += memorial.xpm
-image_DATA += picnic.xpm
-image_DATA += potable_water.xpm
-image_DATA += restroom.xpm
-image_DATA += sport.xpm
-image_DATA += menu.xpm
-image_DATA += toggle_fullscreen.xpm
-
-## Obsolete end
-
-
-image_DATA += flag_bk_tr.xpm
-image_DATA += flag_bk_wh.xpm
-image_DATA += flag_bl_wh.xpm
-image_DATA += flag_wh_bk.xpm
-
-image_DATA += gc_tradi.xpm
-image_DATA += gc_multi.xpm
-image_DATA += gc_mystery.xpm
-image_DATA += gc_event.xpm
-image_DATA += gc_reference.xpm
-image_DATA += gc_webcam.xpm
-image_DATA += gc_question.xpm
-image_DATA += gc_stages.xpm
-
-image_DATA += nav_left_1.xpm
-image_DATA += nav_left_2.xpm
-image_DATA += nav_right_1.xpm
-image_DATA += nav_right_2.xpm
-image_DATA += nav_straight.xpm
-image_DATA += nav_straight_32.xpm
-image_DATA += nav_left_1_32.xpm
-image_DATA += nav_left_2_32.xpm
-image_DATA += nav_right_1_32.xpm
-image_DATA += nav_right_2_32.xpm
-
-svgs = gui_about.svg
-svgs += gui_actions.svg
-svgs += gui_active.svg
-svgs += gui_android_menu.svg
-svgs += gui_bookmark.svg
-svgs += gui_formerdests.svg
-svgs += gui_display.svg
-svgs += gui_help.svg
-svgs += gui_home.svg
-svgs += gui_inactive.svg
-svgs += gui_map.svg
-svgs += gui_maps.svg
-svgs += gui_rules.svg
-svgs += gui_settings.svg
-svgs += gui_sound.svg
-svgs += gui_sound_off.svg
-svgs += gui_tools.svg
-svgs += gui_fullscreen.svg
-svgs += gui_leave_fullscreen.svg
-svgs += gui_quit.svg
-svgs += gui_stop.svg
-svgs += gui_town.svg
-svgs += gui_vehicle.svg
-svgs += gui_vehicle_pedestrian.svg
-svgs += gui_zoom_in.svg
-svgs += gui_zoom_out.svg
-svgs += zoom_in.svg
-svgs += zoom_out.svg
-svgs += gui_select_street.svg
-svgs += gui_select_town.svg
-svgs += gui_select_country.svg
-svgs += gui_arrow_left.svg
-svgs += gui_arrow_right.svg
-svgs += gui_arrow_up.svg
-svgs += gui_arrow_down.svg
-svgs += gui_menu.svg
-svgs += gui_strength_0.svg
-svgs += gui_strength_1.svg
-svgs += gui_strength_2.svg
-svgs += gui_strength_3.svg
-svgs += gui_strength_4.svg
-svgs += gui_strength_5.svg
-svgs += gui_minus.svg
-svgs += gui_plus.svg
-svgs += gui_log.svg
-svgs += gui_search.svg
-svgs += menu.svg
-svgs += toggle_fullscreen.svg
-
-svgs += airport.svg
-svgs += atm.svg
-svgs += attraction.svg
-svgs += bahai.svg
-svgs += bank.svg
-svgs += bar.svg
-svgs += beer.svg
-svgs += bench.svg
-svgs += bicycle_parking.svg
-svgs += bicycle_rental.svg
-svgs += bicycle_shop.svg
-svgs += biergarten.svg
-svgs += boat_ramp.svg
-svgs += boundary_stone.svg
-svgs += buddhist.svg
-svgs += bus.svg
-svgs += bus_stop.svg
-svgs += cafe.svg
-svgs += camping.svg
-svgs += car_dealer.svg
-svgs += car_rent.svg
-svgs += car_sharing.svg
-svgs += casino.svg
-svgs += castle.svg
-svgs += church.svg
-svgs += cinema.svg
-svgs += cursor.svg
-svgs += cursor225.svg
-svgs += cursor450.svg
-svgs += cursor675.svg
-svgs += cursor_still.svg
-svgs += dam.svg
-svgs += danger.svg
-svgs += daymark.svg
-svgs += drinking_water.svg
-svgs += emergency.svg
-svgs += exit.svg
-svgs += fastfood.svg
-svgs += firebrigade.svg
-svgs += fountain.svg
-svgs += fuel.svg
-svgs += golf.svg
-svgs += heliport.svg
-svgs += hindu.svg
-svgs += hospital.svg
-svgs += hotel.svg
-svgs += information.svg
-svgs += islamic.svg
-svgs += jain.svg
-svgs += jewish.svg
-svgs += justice.svg
-svgs += library.svg
-svgs += mark.svg
-svgs += memorial.svg
-svgs += menu.svg
-svgs += military.svg
-svgs += mini_roundabout.svg
-svgs += museum.svg
-svgs += pagan.svg
-svgs += parking.svg
-svgs += pastafarian.svg
-svgs += peak.svg
-svgs += pharmacy.svg
-svgs += picnic.svg
-svgs += police.svg
-svgs += post.svg
-svgs += rail_station.svg
-svgs += repair_service.svg
-svgs += resort.svg
-svgs += restaurant.svg
-svgs += ruins.svg
-svgs += school.svg
-svgs += shelter.svg
-svgs += shinto.svg
-svgs += shop_apparel.svg
-svgs += shop_computer.svg
-svgs += shop_department.svg
-svgs += shop_grocery.svg
-svgs += shopping.svg
-svgs += sikh.svg
-svgs += skiing.svg
-svgs += sport.svg
-svgs += stadium.svg
-svgs += status_calculating_bk.svg
-svgs += status_calculating_wh.svg
-svgs += status_no_destination_bk.svg
-svgs += status_no_destination_wh.svg
-svgs += status_no_route_bk.svg
-svgs += status_no_route_wh.svg
-svgs += status_position_wait_bk.svg
-svgs += status_position_wait_wh.svg
-svgs += status_recalculating_bk.svg
-svgs += status_recalculating_wh.svg
-svgs += status_routing_bk.svg
-svgs += status_routing_wh.svg
-svgs += swimming.svg
-svgs += taoist.svg
-svgs += taxi.svg
-svgs += tec_common.svg
-svgs += telephone.svg
-svgs += theater.svg
-svgs += toggle_fullscreen.svg
-svgs += toilets.svg
-svgs += townhall.svg
-svgs += traffic_signals.svg
-svgs += unknown.svg
-svgs += viewpoint.svg
-svgs += wifi.svg
-svgs += worship.svg
-svgs += zoo.svg
-svgs += zoom_in.svg
-svgs += zoom_out.svg
-
-
-nav_svgs = nav_left_1_bk.svg nav_left_1_wh.svg nav_left_2_bk.svg nav_left_2_wh.svg nav_left_3_bk.svg nav_left_3_wh.svg
-nav_svgs += nav_right_1_bk.svg nav_right_1_wh.svg nav_right_2_bk.svg nav_right_2_wh.svg nav_right_3_bk.svg nav_right_3_wh.svg
-nav_svgs += nav_roundabout_l1_bk.svg nav_roundabout_l1_wh.svg nav_roundabout_l2_bk.svg nav_roundabout_l2_wh.svg
-nav_svgs += nav_roundabout_l3_bk.svg nav_roundabout_l3_wh.svg nav_roundabout_l4_bk.svg nav_roundabout_l4_wh.svg
-nav_svgs += nav_roundabout_l5_bk.svg nav_roundabout_l5_wh.svg nav_roundabout_l6_bk.svg nav_roundabout_l6_wh.svg
-nav_svgs += nav_roundabout_l7_bk.svg nav_roundabout_l7_wh.svg nav_roundabout_l8_bk.svg nav_roundabout_l8_wh.svg
-nav_svgs += nav_roundabout_r1_bk.svg nav_roundabout_r1_wh.svg nav_roundabout_r2_bk.svg nav_roundabout_r2_wh.svg
-nav_svgs += nav_roundabout_r3_bk.svg nav_roundabout_r3_wh.svg nav_roundabout_r4_bk.svg nav_roundabout_r4_wh.svg
-nav_svgs += nav_roundabout_r5_bk.svg nav_roundabout_r5_wh.svg nav_roundabout_r6_bk.svg nav_roundabout_r6_wh.svg
-nav_svgs += nav_roundabout_r7_bk.svg nav_roundabout_r7_wh.svg nav_roundabout_r8_bk.svg nav_roundabout_r8_wh.svg
-nav_svgs += nav_straight_bk.svg nav_straight_wh.svg nav_turnaround_left_bk.svg nav_turnaround_left_wh.svg
-nav_svgs += nav_turnaround_right_bk.svg nav_turnaround_right_wh.svg nav_destination_bk.svg nav_destination_wh.svg
-
-flag_svgs = country_.svgz country_AD.svgz country_AE.svgz country_AF.svgz country_AG.svgz country_AI.svgz country_AL.svgz country_AM.svgz
-flag_svgs += country_AN.svgz country_AO.svgz country_AQ.svgz country_AR.svgz country_AS.svgz country_AT.svgz country_AU.svgz country_AW.svgz
-flag_svgs += country_AX.svgz country_AZ.svgz country_BA.svgz country_BB.svgz country_BD.svgz country_BE.svgz country_BF.svgz
-flag_svgs += country_BG.svgz country_BH.svgz country_BI.svgz country_BJ.svgz country_BL.svgz country_BM.svgz country_BN.svgz
-flag_svgs += country_BO.svgz country_BR.svgz country_BS.svgz country_BT.svgz country_BV.svgz country_BW.svgz country_BY.svgz
-flag_svgs += country_BZ.svgz country_CA.svgz country_CC.svgz country_CD.svgz country_CF.svgz country_CG.svgz country_CH.svgz
-flag_svgs += country_CI.svgz country_CK.svgz country_CL.svgz country_CM.svgz country_CN.svgz country_CO.svgz country_CR.svgz
-flag_svgs += country_CU.svgz country_CV.svgz country_CX.svgz country_CY.svgz country_CZ.svgz country_DE.svgz country_DJ.svgz
-flag_svgs += country_DK.svgz country_DM.svgz country_DO.svgz country_DZ.svgz country_EC.svgz country_EE.svgz country_EG.svgz
-flag_svgs += country_EH.svgz country_ER.svgz country_ES.svgz country_ET.svgz country_FI.svgz country_FJ.svgz country_FK.svgz
-flag_svgs += country_FM.svgz country_FO.svgz country_FR.svgz country_GA.svgz country_GB.svgz country_GD.svgz country_GE.svgz
-flag_svgs += country_GF.svgz country_GG.svgz country_GH.svgz country_GI.svgz country_GL.svgz country_GM.svgz country_GN.svgz
-flag_svgs += country_GP.svgz country_GQ.svgz country_GR.svgz country_GS.svgz country_GT.svgz country_GU.svgz country_GW.svgz
-flag_svgs += country_GY.svgz country_HK.svgz country_HM.svgz country_HN.svgz country_HR.svgz country_HT.svgz country_HU.svgz
-flag_svgs += country_ID.svgz country_IE.svgz country_IL.svgz country_IM.svgz country_IN.svgz country_IO.svgz country_IQ.svgz
-flag_svgs += country_IR.svgz country_IS.svgz country_IT.svgz country_JE.svgz country_JM.svgz country_JO.svgz country_JP.svgz
-flag_svgs += country_KE.svgz country_KG.svgz country_KH.svgz country_KI.svgz country_KM.svgz country_KN.svgz country_KP.svgz
-flag_svgs += country_KR.svgz country_KW.svgz country_KY.svgz country_KZ.svgz country_LA.svgz country_LB.svgz country_LC.svgz
-flag_svgs += country_LI.svgz country_LK.svgz country_LR.svgz country_LS.svgz country_LT.svgz country_LU.svgz country_LV.svgz
-flag_svgs += country_LY.svgz country_MA.svgz country_MC.svgz country_MD.svgz country_ME.svgz country_MF.svgz country_MG.svgz
-flag_svgs += country_MH.svgz country_MK.svgz country_ML.svgz country_MM.svgz country_MN.svgz country_MO.svgz country_MP.svgz
-flag_svgs += country_MQ.svgz country_MR.svgz country_MS.svgz country_MT.svgz country_MU.svgz country_MV.svgz country_MW.svgz
-flag_svgs += country_MX.svgz country_MY.svgz country_MZ.svgz country_NA.svgz country_NC.svgz country_NE.svgz country_NF.svgz
-flag_svgs += country_NG.svgz country_NI.svgz country_NL.svgz country_NO.svgz country_NP.svgz country_NR.svgz country_NU.svgz
-flag_svgs += country_NZ.svgz country_OM.svgz country_PA.svgz country_PE.svgz country_PF.svgz country_PG.svgz country_PH.svgz
-flag_svgs += country_PK.svgz country_PL.svgz country_PM.svgz country_PN.svgz country_PR.svgz country_PS.svgz country_PT.svgz
-flag_svgs += country_PW.svgz country_PY.svgz country_QA.svgz country_RE.svgz country_RO.svgz country_RS.svgz country_RU.svgz
-flag_svgs += country_RW.svgz country_SA.svgz country_SB.svgz country_SC.svgz country_SD.svgz country_SE.svgz country_SG.svgz
-flag_svgs += country_SH.svgz country_SI.svgz country_SJ.svgz country_SK.svgz country_SL.svgz country_SM.svgz country_SN.svgz
-flag_svgs += country_SO.svgz country_SR.svgz country_ST.svgz country_SV.svgz country_SY.svgz country_SZ.svgz country_TC.svgz
-flag_svgs += country_TD.svgz country_TF.svgz country_TG.svgz country_TH.svgz country_TJ.svgz country_TK.svgz country_TL.svgz
-flag_svgs += country_TM.svgz country_TN.svgz country_TO.svgz country_TR.svgz country_TT.svgz country_TV.svgz country_TW.svgz
-flag_svgs += country_TZ.svgz country_UA.svgz country_UG.svgz country_UM.svgz country_US.svgz country_UY.svgz country_UZ.svgz
-flag_svgs += country_VA.svgz country_VC.svgz country_VE.svgz country_VG.svgz country_VI.svgz country_VN.svgz country_VU.svgz
-flag_svgs += country_WF.svgz country_WS.svgz country_YE.svgz country_YT.svgz country_ZA.svgz country_ZM.svgz country_ZW.svgz
-
-if USE_SVG
- image_DATA += $(svgs) $(nav_svgs) $(flag_svgs)
-endif
-
-if USE_SVG2PNG
-# Implicit rules for generating the PNG files. This only generates the
-# standard size; for additional sizes see below.
-%.png: $(srcdir)/%.svg
- SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$@"
-%.png: $(srcdir)/%.svgz
- SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$@"
-
-pngs = $(addsuffix .png,$(basename $(svgs)))
-xsize = $(word 1,$(subst x, ,$(scale)))
-ysize = $(word $(words $(scale)),$(subst x, ,$(scale)))
-comma =,
-
-# template to generate scaling rules for the various PNG sizes
-define scaling_rule_template
-%_$(1)_$(1).png: $(srcdir)/%.$(2)
- SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$$@"
-endef
-
-# template to generate scaling rules for the default PNG size
-define scaling_rule_template_def
-$(basename $(1)).png: $(srcdir)/$(1)
- SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$$@" "$(2)" "$(2)"
-endef
-
-
-# png images of the user interface and other, sizes e.g. "8,16,32,48,96"
-if USE_SVG2PNG_SCALES
-pngs += $(foreach scale, $(subst $(comma), ,@SVG2PNG_SCALES@), $(addsuffix _$(xsize)_$(ysize).png,$(basename $(svgs))))
-# create rules from template
-$(foreach extension,svg svgz, $(foreach size, $(subst $(comma), ,@SVG2PNG_SCALES@),$(eval $(call scaling_rule_template,$(size),$(extension)))))
-endif
-
-# png state flags
-if USE_SVG2PNG_SCALES_FLAG
-svg2png_scales_flag = $(subst $(comma), ,@SVG2PNG_SCALES_FLAG@)
-pngs += $(addsuffix .png,$(basename $(flag_svgs)))
-pngs += $(foreach scale, $(wordlist 2,100,$(svg2png_scales_flag)), $(addsuffix _$(xsize)_$(ysize).png,$(basename $(flag_svgs))))
-# create rules from templates
-$(foreach extension,svg svgz, $(foreach size, $(wordlist 2,100,$(svg2png_scales_flag)),$(eval $(call scaling_rule_template,$(size),$(extension)))))
-$(foreach img,$(flag_svgs), $(foreach size, $(firstword $(svg2png_scales_flag)),$(eval $(call scaling_rule_template_def,$(img),$(size)))))
-endif
-
-# png symbols for navigation
-if USE_SVG2PNG_SCALES_NAV
-pngs += $(foreach scale, $(subst $(comma), ,@SVG2PNG_SCALES_NAV@), $(addsuffix _$(xsize)_$(ysize).png,$(basename $(nav_svgs))))
-# create rules from template
-$(foreach extension,svg svgz, $(foreach size, $(subst $(comma), ,@SVG2PNG_SCALES_NAV@),$(eval $(call scaling_rule_template,$(size),$(extension)))))
-endif
-
-image_DATA += $(pngs)
-endif
-
-if !SUPPORT_WIN32
- DESKTOPFILEdir=$(datadir)/applications
- DESKTOPFILE_DATA = desktop_icons/navit.desktop
-
- ICON128dir=$(datadir)/icons/hicolor/128x128/apps
- ICON128_DATA = desktop_icons/128x128/navit.png
-
- ICON22dir=$(datadir)/icons/hicolor/22x22/apps
- ICON22_DATA = desktop_icons/22x22/navit.png
-endif
-
-EXTRA_DIST = $(image_DATA) $(DESKTOPFILE_DATA) $(ICON128_DATA) $(ICON22_DATA) navit_svg2png
-
-if USE_SVG2PNG
-clean:
- rm -f $(pngs)
-endif
diff --git a/po/Makefile.am b/po/Makefile.am
deleted file mode 100644
index 15d8b7b93..000000000
--- a/po/Makefile.am
+++ /dev/null
@@ -1,112 +0,0 @@
-CATALOGS = @MOFILES@
-
-CLEANFILES = $(CATALOGS) navit.pot
-
-# keep this sorted
-EXTRA_DIST = @POIFILES@ \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDialogs.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitGraphics.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/Navit.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitMapDownloader.java \
- $(top_srcdir)/navit/android/res/values/strings.xml
-
-POTFILES = \
- $(top_srcdir)/navit/main.c \
- $(top_srcdir)/navit/navigation.c \
- $(top_srcdir)/navit/navit.c \
- $(top_srcdir)/navit/popup.c \
- $(top_srcdir)/navit/country.c \
- $(top_srcdir)/navit/gui/gtk/destination.c \
- $(top_srcdir)/navit/gui/gtk/gui_gtk_action.c \
- $(top_srcdir)/navit/gui/gtk/gui_gtk_poi.c \
- $(top_srcdir)/navit/gui/gtk/gui_gtk_statusbar.c \
- $(top_srcdir)/navit/gui/internal/gui_internal.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_bookmark.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_command.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_html.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_menu.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_poi.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_search.c \
- $(top_srcdir)/navit/gui/internal/gui_internal_widget.c \
- $(top_srcdir)/navit/osd/core/osd_core.c \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDialogs.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitGraphics.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/Navit.java \
- $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitMapDownloader.java \
- $(top_builddir)/navit/navit_shipped.c \
- $(top_builddir)/navit/strings.c
-
-if XGETTEXT_GLADE
-POTFILES += $(top_builddir)/navit/navit_shipped.glade
-endif
-
-
-SUFFIXES = .po .mo
-
-.po.mo:
- dir=`basename $@ .mo` ;\
- $(MSGFMT) --check --verbose --statistics --output-file=$@ $< && \
- mkdir -p ../locale/$$dir/LC_MESSAGES && \
- cp $@ ../locale/$$dir/LC_MESSAGES/navit.mo
-
-all: @MOFILES@
-
-# Trick gettext to get translateable strings out of navit_shipped.xml
-
-$(top_builddir)/navit/navit_shipped.glade: $(top_srcdir)/navit/navit_shipped.xml
- sed -e "s/vehicleprofile/atkaction/" -e "s/name=/description=/" -e 's/<!\[CDATA\[//' -e 's/\]\]//' <$(top_srcdir)/navit/navit_shipped.xml >$(top_builddir)/navit/navit_shipped.glade
-
-$(top_builddir)/navit/navit_shipped.c: $(top_srcdir)/navit/navit_shipped.xml
- sed -e 's/|//g' -e 's/^/|/' -e 's/$$/|/' -e 's/\(_("[^"]*")\)/| \1; |/g' -e 's/|[^|]*|//g' <$(top_srcdir)/navit/navit_shipped.xml >$(top_builddir)/navit/navit_shipped.c
-
-# Trick gettext to get translateable strings out of android/strings.xml
-
-$(top_builddir)/navit/strings.c: $(top_srcdir)/navit/android/res/values/strings.xml
- sed -e "s/\\\\'/'/g" -e 's%.*<string[^>]*name="\(.*\)">\(.*\)</string>%// Android resource: @strings/\1\n_("\2")%g' -e '\%^//%!d'<$(top_srcdir)/navit/android/res/values/strings.xml >$(top_builddir)/navit/strings.c
-
-@POFILES@: navit.pot
- sed 's/^"Project-Id-Version:.*/"Project-Id-Version: $(PACKAGE_STRING)\\n"/' < $(top_srcdir)/po/$@.in | $(MSGMERGE) --no-fuzzy-matching --verbose -o $(top_builddir)/po/$@ - navit.pot
-
-navit.pot: $(POTFILES)
- $(XGETTEXT) --no-location --default-domain=navit \
- --add-comments --keyword=_ --keyword=_n --keyword=navit_nls_gettext --keyword=navit_nls_ngettext:1,2 $(POTFILES)
- if cmp -s navit.po navit.pot; then \
- rm -f navit.po; \
- else \
- mv -f navit.po navit.pot; \
- fi
-
-install-data-local: $(CATALOGS)
- $(mkinstalldirs) $(DESTDIR)$(datadir)/locale
- chmod 755 $(DESTDIR)$(datadir)/locale
- for n in $(CATALOGS) __DuMmY ; do \
- if test "$$n" -a "$$n" != "__DuMmY" ; then \
- l=`basename $$n .mo`; \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES; \
- chmod 755 $(DESTDIR)$(datadir)/locale/$$l; \
- chmod 755 $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES; \
- $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES/navit.mo; \
- fi; \
- done
-
-uninstall-local:
- for n in $(CATALOGS) __DuMmY ; do \
- if test "$$n" -a "$$n" != "__DuMmY" ; then \
- l=`basename $$n .mo`; \
- rm -f $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES/navit.mo; \
- fi; \
- done
-
-distclean-local:
- rm -f $(top_builddir)/navit/navit_shipped.glade $(top_builddir)/navit/navit_shipped.c $(top_builddir)/navit/strings.c
- for n in $(CATALOGS) __DuMmY ; do \
- if test "$$n" -a "$$n" != "__DuMmY" ; then \
- l=`basename $$n .mo`; \
- rm -f ../locale/$$l/LC_MESSAGES/navit.mo; \
- rm -f $$l.po; \
- fi; \
- done
diff --git a/po/de.po.in b/po/de.po.in
index 3ff969ec8..aba5a314f 100644
--- a/po/de.po.in
+++ b/po/de.po.in
@@ -1,5 +1,5 @@
# German translations for navit
-# Copyright (C) 2006-2016 The Navit Team
+# Copyright (C) 2006-2017 The Navit Team
# This file is distributed under the same license as the navit package.
# Many thanks to the contributors of this translation:
# Achim Behrens https://launchpad.net/~k1l
@@ -26,6 +26,7 @@
# Roschkor https://launchpad.net/~bound-one2000
# S.E. https://launchpad.net/~stephan-evert
# Stefan Sordon https://launchpad.net/~stefan-sordon
+# Steffen https://launchpad.net/~zintor
# Thuttle https://launchpad.net/~archibald-thuttle
# Tobias Bannert https://launchpad.net/~toba
# Usul https://launchpad.net/~usul1
diff --git a/po/uk.po.in b/po/uk.po.in
index 45c8c0875..787e71327 100644
--- a/po/uk.po.in
+++ b/po/uk.po.in
@@ -2,6 +2,7 @@
# 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
@@ -12,8 +13,8 @@ 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"
+"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"
@@ -2703,41 +2704,43 @@ msgstr ""
#. Android resource: @strings/no_backup_found
msgid "No backup found"
-msgstr ""
+msgstr "Резервної копії не знайдено"
#. Android resource: @strings/failed_to_restore
msgid "Failed to restore"
-msgstr ""
+msgstr "Помилка відновлення"
#. Android resource: @strings/backup_successful
msgid "Backup successful"
-msgstr ""
+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 ""
+msgstr "Резервної копії не знайдено"
#. Android resource: @strings/restore_failed
msgid "Restore failed"
-msgstr ""
+msgstr "Відновлення невдале"
#. Android resource: @strings/select_backup
msgid "Select backup"
-msgstr ""
+msgstr "Оберіть резервну копію"
#. Android resource: @strings/backup
msgid "Backup"
-msgstr ""
+msgstr "Резервна копія"
#. Android resource: @strings/restore
msgid "Restore"
-msgstr ""
+msgstr "Відновлення"
#. Android resource: @strings/TTS_title_data_missing
msgid "System text to speech engine data is missing"