1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-07-08 08:14:28 +02:00

Compare commits

...

72 Commits
7.19 ... 7.20

Author SHA1 Message Date
cb03c8a903 Always run the redistributables installer and let it decide what to do
(instead of an own and broken registry check with magic numbers)
2020-01-26 15:58:20 +01:00
eef6360643 Fixed MSVC redist checks 2020-01-26 14:07:49 +01:00
ac73c04445 MSVC redistributables names have changed 2020-01-26 13:23:45 +01:00
3299b41ec7 There is no Qt 5.14/VS2017 on appveyor... 2020-01-26 13:13:34 +01:00
58fd5022ca paths? 2020-01-26 13:07:55 +01:00
ebe1851abb ... 2020-01-26 13:02:29 +01:00
b3ddbd7b63 Removed duplicit configuration 2020-01-26 12:57:27 +01:00
e5042b11d7 Maybe there is a completely different error... 2020-01-26 12:55:46 +01:00
2e0eadd0e7 Try another path 2020-01-26 12:51:19 +01:00
42e917efab Reduced test 2020-01-26 12:49:47 +01:00
07761ea335 Try it using conditions... 2020-01-26 12:39:38 +01:00
f17e5c2ea1 try it without call 2020-01-26 12:33:15 +01:00
21bcaf9562 Some more try... 2020-01-26 12:17:15 +01:00
a160cb4eb3 Maybe this way... 2020-01-26 12:08:02 +01:00
f5ec18a13a Surrender 2020-01-26 12:02:30 +01:00
f6b15e1acc Yet another try... 2020-01-26 11:59:12 +01:00
652471ac90 ?! 2020-01-26 11:52:16 +01:00
2da1f8bc70 @#$%^! windows shell 2020-01-26 11:49:42 +01:00
2d4d2721bf Added missing quotes 2020-01-26 11:43:17 +01:00
d74816883a AppVeyor build fix 2020-01-26 11:40:38 +01:00
81b5631de4 Updated Windows build environment
(Qt 5.14, MSVC 2017, OpenSSL 1.1.1)
2020-01-26 11:27:48 +01:00
2e84901e43 Merge branch 'origin/master' into Weblate. 2020-01-24 19:45:01 +01:00
f61fb5657c Translated using Weblate (Spanish)
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/es/
2020-01-24 19:45:01 +01:00
24e216cdfc Translated using Weblate (French)
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/fr/
2020-01-24 19:45:00 +01:00
09d6de00a6 Some more style/layout fiddeling
+ code cleanup
2020-01-24 19:44:19 +01:00
f7990ee2e6 Merge branch 'origin/master' into Weblate. 2020-01-23 23:22:56 +01:00
cb01c0b590 Cleanup the remaining parser that stores temporary data 2020-01-23 23:22:04 +01:00
21cf5ddaec Merge branch 'origin/master' into Weblate. 2020-01-23 23:21:01 +01:00
48d4686dd4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/pt_BR/
2020-01-23 23:21:01 +01:00
d035a307d8 Variables with underscores followed by a capital letter are prohibited by the C++ standard
Fixes #266
2020-01-23 23:19:32 +01:00
89e04f3678 Translated using Weblate (Swedish)
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/sv/
2020-01-23 08:04:58 +01:00
e664fc188c Translated using Weblate (German)
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/de/
2020-01-23 08:04:58 +01:00
3597a07ed7 Translated using Weblate (Czech)
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/cs/
2020-01-23 08:04:58 +01:00
0472cc03f3 Translated using Weblate (Norwegian Bokmål)
Currently translated at 92.0% (323 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/nb_NO/
2020-01-23 08:04:57 +01:00
d169a9f710 Translated using Weblate (Turkish)
Currently translated at 100.0% (351 of 351 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/tr/
2020-01-23 08:04:57 +01:00
2ff2195116 Localization update 2020-01-22 22:42:26 +01:00
cdbf2db5fe Version++ 2020-01-22 22:39:14 +01:00
2bb635a120 Log coordinates in a better usable way 2020-01-22 22:36:58 +01:00
465b146001 Do not duplicate the area descriptions where (most) maps have POIs 2020-01-22 22:18:29 +01:00
ce6d6298bb Use the polygons labels for displaying rather than discarding them 2020-01-22 21:01:05 +01:00
ae2ff99be8 Do not fetch polygon labels as they are unused anyway 2020-01-22 07:46:58 +01:00
5b6cd24839 Merge branch 'master' of https://github.com/tumic0/GPXSee 2020-01-21 21:53:07 +01:00
cd22e6207a Added support for Huffman compressed RGN data 2020-01-21 21:50:13 +01:00
b826e497f3 Some more cosmetics 2020-01-19 21:00:11 +01:00
7cc39f25e1 Code cleanup 2020-01-19 18:08:03 +01:00
f61d9fcd55 Fixed crash on error introduced with the latest error handling changes
(+ ignore broken tiles rather than terminate parsing)
2020-01-19 17:40:14 +01:00
67a1f7e108 Includes cleanup 2020-01-19 17:05:26 +01:00
040de56a54 Fixed error handling + code cleanup 2020-01-19 13:23:20 +01:00
a486abb159 Added workaround for broken GPS IFD entries produced by NOKIA phones
Closes #260
2020-01-16 22:54:12 +01:00
37215959b8 Merge branch 'origin/master' into Weblate. 2020-01-16 19:32:17 +01:00
1ccce095a9 Updated appdata info 2020-01-16 19:31:40 +01:00
057180e431 Added OS X SML integration 2020-01-16 19:31:14 +01:00
60e62da6a2 Merge branch 'origin/master' into Weblate. 2020-01-15 23:24:58 +01:00
a3eafea60a Added missing icon file 2020-01-15 23:24:20 +01:00
962f8de160 Merge branch 'origin/master' into Weblate. 2020-01-15 23:11:01 +01:00
6525d34e08 Added SML desktop integration (Windows + Linux) 2020-01-15 23:10:14 +01:00
3c661ddf65 Merge branch 'origin/master' into Weblate. 2020-01-15 21:56:45 +01:00
42b4216d9c Added support for sensors data 2020-01-15 21:56:04 +01:00
4e7418111d Merge branch 'origin/master' into Weblate. 2020-01-14 23:21:58 +01:00
a89ef11d73 Added basic support for Suunto SML files 2020-01-14 23:21:05 +01:00
293046590e Merge branch 'origin/master' into Weblate. 2020-01-12 16:08:19 +01:00
ea2f67fc09 Merge branch 'origin/master' into Weblate. 2020-01-12 16:01:50 +01:00
eb744df9cc Merge branch 'origin/master' into Weblate. 2020-01-11 23:40:49 +01:00
6c6d297a3c Merge branch 'origin/master' into Weblate. 2020-01-05 00:49:34 +01:00
669715aa32 Merge branch 'origin/master' into Weblate. 2019-12-23 17:05:27 +01:00
fdc172ab38 Merge branch 'origin/master' into Weblate. 2019-12-23 16:16:26 +01:00
b9d5fa8772 Merge branch 'origin/master' into Weblate. 2019-12-23 15:48:57 +01:00
d4de0edca6 Merge branch 'origin/master' into Weblate. 2019-12-20 23:39:29 +01:00
7f650f9d6a Merge branch 'origin/master' into Weblate. 2019-12-11 16:02:28 +01:00
52c6bb569e Merge branch 'origin/master' into Weblate. 2019-12-04 22:19:59 +01:00
dba46b09a8 Merge branch 'origin/master' into Weblate. 2019-12-03 08:19:20 +01:00
b8cf3872ce Translated using Weblate (Norwegian Bokmål)
Currently translated at 92.0% (322 of 350 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/nb_NO/
2019-12-02 10:32:40 +01:00
69 changed files with 2564 additions and 1598 deletions

View File

@ -1,22 +1,33 @@
version: 7.19.{build}
configuration: Release
platform: Any CPU
version: 7.20.{build}
configuration:
- Release
image:
- Visual Studio 2017
environment:
NSISDIR: C:\Program Files (x86)\NSIS
matrix:
- QTDIR: C:\Qt\5.11\msvc2015
PLATFORM: x86
- QTDIR: C:\Qt\5.13\msvc2017
NSI: gpxsee.nsi
OPENSSLDIR: C:\OpenSSL-Win32\bin
- QTDIR: C:\Qt\5.11\msvc2015_64
PLATFORM: x86_amd64
VCVARS: vcvars32.bat
OPENSSLDIR: C:\OpenSSL-v111-Win32\bin
LIBCRYPTO: libssl-1_1.dll
LIBSSL: libcrypto-1_1.dll
- QTDIR: C:\Qt\5.13\msvc2017_64
NSI: gpxsee64.nsi
OPENSSLDIR: C:\OpenSSL-Win64\bin
VCVARS: vcvars64.bat"
OPENSSLDIR: C:\OpenSSL-v111-Win64\bin
LIBCRYPTO: libssl-1_1-x64.dll
LIBSSL: libcrypto-1_1-x64.dll
install:
- cmd: >-
set PATH=%QTDIR%\bin;%NSISDIR%;%PATH%
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %PLATFORM%
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\"%VCVARS%
build_script:
- cmd: >-
lrelease gpxsee.pro
@ -44,9 +55,9 @@ build_script:
copy licence.txt installer
copy %OPENSSLDIR%\libeay32.dll installer
copy %OPENSSLDIR%\%LIBCRYPTO% installer
copy %OPENSSLDIR%\ssleay32.dll installer
copy %OPENSSLDIR%\%LIBSSL% installer
makensis.exe installer\%NSI%

View File

@ -3,7 +3,7 @@ unix:!macx {
} else {
TARGET = GPXSee
}
VERSION = 7.19
VERSION = 7.20
QT += core \
gui \
@ -89,6 +89,10 @@ HEADERS += src/common/config.h \
src/GUI/areaitem.h \
src/data/link.h \
src/map/IMG/bitmapline.h \
src/map/IMG/bitstream.h \
src/map/IMG/deltastream.h \
src/map/IMG/huffmanstream.h \
src/map/IMG/huffmantable.h \
src/map/IMG/textpathitem.h \
src/map/IMG/textpointitem.h \
src/map/projection.h \
@ -188,7 +192,8 @@ HEADERS += src/common/config.h \
src/data/csv.h \
src/data/cupparser.h \
src/data/gpiparser.h \
src/data/address.h
src/data/address.h \
src/data/smlparser.h
SOURCES += src/main.cpp \
src/GUI/popup.cpp \
src/common/coordinates.cpp \
@ -242,6 +247,10 @@ SOURCES += src/main.cpp \
src/GUI/mapview.cpp \
src/GUI/areaitem.cpp \
src/map/IMG/bitmapline.cpp \
src/map/IMG/bitstream.cpp \
src/map/IMG/deltastream.cpp \
src/map/IMG/huffmanstream.cpp \
src/map/IMG/huffmantable.cpp \
src/map/IMG/textpathitem.cpp \
src/map/IMG/textpointitem.cpp \
src/map/maplist.cpp \
@ -324,7 +333,8 @@ SOURCES += src/main.cpp \
src/data/csv.cpp \
src/data/cupparser.cpp \
src/GUI/graphicsscene.cpp \
src/data/gpiparser.cpp
src/data/gpiparser.cpp \
src/data/smlparser.cpp
greaterThan(QT_MAJOR_VERSION, 4) {
HEADERS += src/data/geojsonparser.h
@ -387,7 +397,8 @@ macx {
icons/formats/slf.icns \
icons/formats/json.icns \
icons/formats/cup.icns \
icons/formats/gpi.icns
icons/formats/gpi.icns \
icons/formats/sml.icns
QMAKE_BUNDLE_DATA += locale maps icons csv
}
@ -406,7 +417,8 @@ win32 {
icons/formats/slf.ico \
icons/formats/json.ico \
icons/formats/cup.ico \
icons/formats/gpi.ico
icons/formats/gpi.ico \
icons/formats/sml.ico
DEFINES += _USE_MATH_DEFINES \
NOGDI
}

BIN
icons/formats/sml.icns Normal file

Binary file not shown.

BIN
icons/formats/sml.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

View File

@ -12,3 +12,4 @@ loc:#556677
slf:#881199
cup:#20a810
gpi:#fca314
sml:#6434eb

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Podporované soubory</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>Soubory CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>Soubory CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>Soubory FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>Soubory GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>Soubory GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>Soubory GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>Soubory IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>Obrázky JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>Soubory KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>Soubory LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>Soubory NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>Soubory OziExploreru</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>Soubory SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>Soubory TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>Soubory SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Všechny soubory</translation>
</message>
@ -1131,7 +1136,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Grafy</translation>
</message>
@ -1233,14 +1238,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Výška:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Rychlost:</translation>
</message>
@ -1296,69 +1301,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Minimální rychlost:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minimální doba trvání:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Vypočítaná ze vzdálenosti/času</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Zaznamenaná zařízením</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Výška</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrování</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Zdroje</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Detekce přestávek</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Radius:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Rychlost</translation>
</message>
@ -1403,144 +1408,144 @@
<translation>Vlastní</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Vysoké rozlišení</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Oblast tisku přibližně odpovídá zobrazované oblasti. Přiblížení mapy se nemění.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Přiblížení mapy bude upraveno tak, aby se celý obsah (trasy/body) vešel do oblasti tisku a rozlišení mapy bylo co nejblíže rozlišení tisku.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Název</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Vzdálenost</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Čistý čas</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Počet objektů (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Samostatná stránka s grafy</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Režim tisku</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Záhlaví</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Používat OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Povolit HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Mezipaměť obrázků:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Časový limit připojení:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Systém</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Vzhled</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Mapy</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Tisk a export</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Nastavení</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Understøttede filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Alle filer</translation>
</message>
@ -1251,7 +1256,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Grafer</translation>
</message>
@ -1267,14 +1272,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Højde:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Hastighed:</translation>
</message>
@ -1330,69 +1335,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Mindste hastighed:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minidste varighed:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Beregnet ud fra afstanden/tiden</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Indspillet af enhed</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation type="unfinished">Højde</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrering</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation type="unfinished">Pause genkendelse</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Hastighed</translation>
</message>
@ -1402,144 +1407,144 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mil</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>sømil</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>IP</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation type="unfinished">WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Højopløsning</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation type="unfinished">Det udskrevne område er ca. det samme som visningsområdet. Kortes zoomniveau ændres ikke.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation type="unfinished">Zoom-niveauet vil blive ændret, således at hele indholdet (spor/rutepunkter) passer til udskriftsområdet og kortopløsning er tæt som muligt udskriftsopløsningen.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Navn</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Dato</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Afstand</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Tid</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Tid i bevægelse</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation type="unfinished">Elementantal (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Separat grafside</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation type="unfinished">Udskrivningstilstand</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation type="unfinished">Toptekst</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Brug OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Aktiver HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation type="unfinished">Billed cachestørrelse:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Timeout for forbindelse:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Udseende</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Kort</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Udskriv &amp; eksport</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Indstillinger</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Unterstützte Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG-Bilder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>SML-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Alle Dateien</translation>
</message>
@ -1130,7 +1135,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Graphen</translation>
</message>
@ -1232,14 +1237,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Höhe:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Geschwindigkeit:</translation>
</message>
@ -1295,69 +1300,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>sek</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Minimale Geschwindigkeit:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minimale Dauer:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Berechnet aus Entfernung/Zeit</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Aufgezeichnet von Gerät</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS-Daten</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM-Daten</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Höhe</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Datenfilterung</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Datenquellen</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Pausenerkennung</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Radius:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Geschwindigkeit</translation>
</message>
@ -1402,144 +1407,144 @@
<translation>Benutzerdefiniert</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Hohe Auflösung</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Der Druckbereich entspricht ungefähr dem Anzeigebereich. Das Karten-Zoom ändert sich nicht.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Das Karten-Zoom ändert sich so, dass der ganze Inhalt (Strecken/Wegpunkte) in den Druckbereich passen und die Kartenauflösung so nah wie möglich an der Druckauflösung ist.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Distanz</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Zeit</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Bewegungszeit</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Elementanzahl (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Separate Seite für Graphen</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Druckmodus</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Kopfzeile</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>OpenGL verwenden</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>HTTP/2 verwenden</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Bild-Cachegröße:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Verbindungs-Timeout:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Erscheinungsbild</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Karten</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Daten</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Druck / Export</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Einstellungen</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Formatos soportados</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>Archivos CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation type="unfinished"></translation>
<translation>Archivos CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>Archivos FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>Archivos GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation type="unfinished"></translation>
<translation>Archivos GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>Archivos GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>Archivos IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>Imagen JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>Archivos KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>Archivos LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>Archivos NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>Archivos OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>Archivos SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>Archivos SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>Archivos TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Todos los archivos</translation>
</message>
@ -480,7 +485,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="352"/>
<source>km/mi markers</source>
<translation type="unfinished"></translation>
<translation>Hitos kilométricos o cada milla</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="359"/>
@ -762,7 +767,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="733"/>
<source>Styles directory:</source>
<translation type="unfinished"></translation>
<translation>Directorio de estilos:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="735"/>
@ -1027,7 +1032,7 @@
<message>
<location filename="../src/map/maplist.cpp" line="123"/>
<source>Garmin IMG maps</source>
<translation type="unfinished"></translation>
<translation>Mapas Garmin IMG</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="125"/>
@ -1100,12 +1105,12 @@
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="80"/>
<source>Projection:</source>
<translation type="unfinished"></translation>
<translation>Proyección:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="102"/>
<source>Vector maps</source>
<translation type="unfinished"></translation>
<translation>Mapas vectoriales</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="121"/>
@ -1251,7 +1256,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Gráficas</translation>
</message>
@ -1267,14 +1272,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Altitud:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Velocidad:</translation>
</message>
@ -1311,7 +1316,7 @@
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="352"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
<translation>Automática</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="366"/>
@ -1330,216 +1335,216 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Velocidad mínima:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Duración mínima:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Calculado con distancia/tiempo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Grabado por el dispositivo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>Datos GPS</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>Datos del MDT</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Altitud</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrado</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Fuentes</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Detectar paradas</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Radio:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Velocidad</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="353"/>
<source>Custom</source>
<translation type="unfinished"></translation>
<translation>Personalizada</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Alta resolución</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>El área que se imprime es la que muestra la pantalla. El zoom del mapa no cambiará.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>El zoom del mapa se cambia para que el area impresa se ajuste a todos los elementos( tracks, waypoints...) y la resolución sea lo mas próxima posible a la de impresión.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Nombre</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Fecha</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Distancia</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Tiempo en movimiento</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Recuento de elementos (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Pagina de gráficas separada</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Modo de impresión</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Titulo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Usar OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Habilitar HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>Mo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Tamaño del cache de imágenes:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Caducidad de la conexión:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Sistema</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Apariencia</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Mapas</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Fecha</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Imprimir y exportar</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Opciones</translation>
</message>
@ -1620,7 +1625,7 @@
<message>
<location filename="../src/GUI/routeitem.cpp" line="29"/>
<source>Links</source>
<translation type="unfinished"></translation>
<translation>Enlaces</translation>
</message>
</context>
<context>
@ -1851,7 +1856,7 @@
<message>
<location filename="../src/GUI/trackitem.cpp" line="33"/>
<source>Links</source>
<translation type="unfinished"></translation>
<translation>Enlaces</translation>
</message>
</context>
<context>
@ -1884,12 +1889,12 @@
<message>
<location filename="../src/GUI/waypointitem.cpp" line="44"/>
<source>Address</source>
<translation type="unfinished"></translation>
<translation>Dirección</translation>
</message>
<message>
<location filename="../src/GUI/waypointitem.cpp" line="55"/>
<source>Links</source>
<translation type="unfinished"></translation>
<translation>Enlaces</translation>
</message>
</context>
</TS>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Tuetut tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG-kuvat</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Kaikki tiedostot</translation>
</message>
@ -1130,7 +1135,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Kaaviokuvat</translation>
</message>
@ -1232,14 +1237,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Korkeus:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Vauhti:</translation>
</message>
@ -1295,69 +1300,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Minimivauhti:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minimikesto:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Laskettu etäisyydestä/ajasta</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Tallennettu laitteella</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS-tiedot</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM-tiedot</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Korkeus</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Suodatus</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Lähteet</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Pysähdysten havaitseminen</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Säde:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Vauhti</translation>
</message>
@ -1402,144 +1407,144 @@
<translation>Käyttäjän määrittämä</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>mpk</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Korkea resoluutio</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Painettu alue on suunnilleen näyttöalue. Kartan zoomaustaso ei muutu.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Zoomaustasoa muutetaan niin, että koko sisältö (jäljet/reittipisteet) sopii painettuun alueeseen ja kartan resoluutio on mahdollisimman lähellä tulostusresoluutiota.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Nimi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Päivämäärä</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Etäisyys</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Aika</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Liikkumisaika</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Kohteiden määrä (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Erillinen sivu kaaviokuvalle</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Tulostustila</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Otsikko</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Käytä OpenGL:ää</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Ota HTTP/2 käyttöön</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>Mt</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Kuvavälimuistin koko:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Yhteyden aikakatkaisu:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Järjestelmä</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Ulkoasu</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Kartat</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Tiedot</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Tulostus &amp; vienti</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Valinnat</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Formats pris en charge</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>Données CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>Données CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>Données FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>Données GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>Données GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>Données GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>Données IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>Images JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>Données KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>Données LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>Données NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>Données OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>Données SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>Données TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>Données SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Tous les fichiers</translation>
</message>
@ -1130,7 +1135,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Graphe</translation>
</message>
@ -1232,14 +1237,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Altitude :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Vitesse :</translation>
</message>
@ -1295,69 +1300,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Vitesse minimale :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Durée minimale :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Calculée comme distance/temps</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Enregistrée par l&apos;appareil</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>Données GPS</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>Données MNT</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Altitude</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrage</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Sources</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Détection des arrêts</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Rayon :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Vitesse</translation>
</message>
@ -1402,144 +1407,144 @@
<translation>Personnalisé</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Résolution élevée</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>La zone d&apos;impression est presque celle affichée. L&apos;échelle reste la même.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>L&apos;échelle est ajustée pour que tout le contenu (traces et points de jalonnement) rentre dans la zone d&apos;impression tout en gardant proches les résolutions d&apos;impression et de carte.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Nom</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Date</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Distance</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Durée</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Durée en déplacement</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Nombre d&apos;éléments (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Sauter une page pour les graphes</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Mode d&apos;impression</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Entête</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Utiliser OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Activer l&apos;HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>Mo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Volume du cache à images :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Délai d&apos;attente de connexion :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Système</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Apparence</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Cartes</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Données</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Imprimer et exporter</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Options</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Støttede filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG-bilder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>SML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Alle filer</translation>
</message>
@ -1251,7 +1256,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Diagrammer</translation>
</message>
@ -1267,14 +1272,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Høyde:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Hastighet:</translation>
</message>
@ -1311,7 +1316,7 @@
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="352"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
<translation>Automatisk</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="366"/>
@ -1330,216 +1335,216 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Minimumshastighet:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minimumsvarighet:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Utregnet fra avstand/tid</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Tatt opp av enhet</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS-data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM-data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation type="unfinished">Høyde</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrering</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Kilder</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Sett oppdagelse pause</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Radius:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Hastighet</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="353"/>
<source>Custom</source>
<translation type="unfinished"></translation>
<translation>Egendefinert</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Høyoppløsning</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Det utskrevne området er omentrent det samme som visningsområdet. Kartforstørrelsesnivået endrer seg ikke.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Forstørrelsesnivået vil endres slik at hele innholdet (spor/veipunkter) passer med utskrevet område, og kartoppløsningen er lik utskriftsoppløsningen som mulig.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Navn</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Dato</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Avstand</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Tid</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Tid i bevegelse</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Elementantall (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Separat diagramside</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Utskriftsmodus</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Topptekst</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Bruk OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Skru HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Bildehurtiglagringstørrelse:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Tilkoblingstidsavbrudd:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Utseende</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Kart</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Utskrift og ekport</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Valg</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Obsługiwane pliki</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>Pliki CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>Pliki FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>Pliki GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>Pliki GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>Pliki IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>Pliki JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>Pliki KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>Pliki LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>Pliki NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>Pliki OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>Pliki TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>Pliki SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Wszystkie pliki</translation>
</message>
@ -1131,7 +1136,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Wykresy</translation>
</message>
@ -1233,14 +1238,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Wysokość:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Prędkość:</translation>
</message>
@ -1296,69 +1301,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Minimalna prędkość:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minimalny czas trwania:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Obliczona na postawie odległości/czasu</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Zapisana przez urządzenie</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>Dane GPS</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>Dane DEM</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Wysokość</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrowanie</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Źródła</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Wykrywanie postoju</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Promień:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Prędkość</translation>
</message>
@ -1403,144 +1408,144 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Wysoka rozdzielczość</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Wydrukowany obszar jest w przybliżeniu obszarem wyświetlania. Poziom powiększenia mapy nie zmienia się.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Poziom powiększenia mapy zostanie dostosowany w taki sposób, aby cała zawartość (ścieżki/punkty) wchodziła do drukowanego obszaru, a rozdzielczość mapy była jak najbliższa rozdzielczości wydruku.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Nazwa</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Dystans</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Czas</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Czas ruchu</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Liczba elementów (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Oddzielna strona wykresu</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Tryb wydruku</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Nagłówek</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Używaj OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Włącz HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Rozmiar pamięci podręcznej obrazu:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Limit czasu połączenia:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Wygląd</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Mapy</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Dane</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Drukowanie i eksport</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Opcje</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Formatos suportados</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>Arquivos CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>Arquivos CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>Arquivos FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>Arquivos GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>Arquivos GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>Arquivos GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>Arquivos IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>Imagens JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>Arquivos KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>Arquivos LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>Arquivos NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>Arquivos OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>Arquivos SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>Arquivos SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>Arquivos TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Todos os arquivos</translation>
</message>
@ -1251,7 +1256,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Gráficos</translation>
</message>
@ -1267,14 +1272,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Altitude:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Velocidade:</translation>
</message>
@ -1335,211 +1340,211 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Velocidade Mínima:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Duração mínima:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Calculada a partir da distância/tempo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Gravada através de dispositivo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>Dados de GPS</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>Dados de DEM</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Velocidade</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Altitude</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtragem</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Fontes</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Detecção de pausa</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Raio:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Alta resolução</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>A área de impressão é aproximadamente a área de tela. O nível de zoom do mapa não é alterado.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>O nível de zoom será alterado de modo que todo o conteúdo (trilhas/waypoints) caiba na área de impressão e a resolução seja tão próxima quanto possível da resolução de impressão.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Nome</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Distância</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Tempo em movimento</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Número de itens (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Separar página de gráficos</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Modo de impressão</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Cabeçalho</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Usar OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Habilitar HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Tamanho do cache de imagens:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Tempo de espera de conexão:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Sistema</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Aparência</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Mapas</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Dados</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Imprimir e Exportar</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Preferências</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Все поддерживаемые файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG изображения</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Все файлы</translation>
</message>
@ -1131,7 +1136,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Графики</translation>
</message>
@ -1233,14 +1238,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Высота:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Скорость:</translation>
</message>
@ -1296,69 +1301,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>с</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Минимальная скорость:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Минимальная продолжительность:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Вычисленная из расстояния/времени</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Записанная устройством</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS данные</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM данные</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Высота</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Фильтрация</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Источники</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Обнаружение остановок</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Радиус:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Скорость</translation>
</message>
@ -1403,144 +1408,144 @@
<translation>Пользовательскoe</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>мл</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>мор. мл</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>км</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>Точки POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Высокое разрешение</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Печатная область примерно совпадает с областью отображения. Уровень приближения карты не изменяется.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Уровень приближения будет изменен так, чтобы всё содержимое (треки/точки) уместились в печатную область и разрешение карты было бы как можно ближе к разрешению печати.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Расстояние</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Время</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Время движения</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Количество объектов (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Отдельная страница с графиком</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Режим печати</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Заголовок</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Использовать OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Включить HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>МБ</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Размер кэша изображений:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Таймаут соединения:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Система</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Внешний вид</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Карты</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Данные</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Печать и экспорт</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Параметры</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Filer som stöds</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG-bilder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>SML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Alla filer</translation>
</message>
@ -1130,7 +1135,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Diagram</translation>
</message>
@ -1232,14 +1237,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Höjd:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Hastighet:</translation>
</message>
@ -1295,69 +1300,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>sek</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Minsta hastighet:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Kortast varaktighet:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Beräknad från distans/tid</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Inspelad av enhet</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS-data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM-data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Stigning</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtrering</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Källor</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Pausa identifiering</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Radie:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Hastighet</translation>
</message>
@ -1402,144 +1407,144 @@
<translation>Anpassat</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Högupplösning</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Det utskrivna området är ungefär detsamma som synligt område skärmen. Kartans zoomnivå ändras inte.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Zoomnivån kommer att ändras att hela innehållet (spår/vägpunkter) passar utskriftsområdet och kartresolutionen är nära som möjligt till utskriftsupplösningen.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Namn</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Avstånd</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Tid</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Förflyttningstid</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Objektantal (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Separat diagramsida</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Utskriftsläge</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Rubrik</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Använd OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Aktivera HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Cashe-storlek för bilder:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Anslutningens tidsgräns:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Utseende</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Kartor</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Utskrift &amp; Export</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Alternativ</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Desteklenen dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG resimler</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation>SML dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Tüm dosyalar</translation>
</message>
@ -858,7 +863,6 @@
<source>%n files</source>
<translation>
<numerusform>%n dosya</numerusform>
<numerusform>%n dosya</numerusform>
</translation>
</message>
</context>
@ -1251,7 +1255,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Grafikler</translation>
</message>
@ -1267,14 +1271,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Rakım:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Hız:</translation>
</message>
@ -1330,69 +1334,69 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Asgari hız:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Minimum süre:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Mesafe/zamandan hesaplandı</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Cihazdan kaydedilen</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS verisi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM verisi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Rakım</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Filtreleme</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Kaynaklar</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Duraklama algılama</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Yarıçap:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Hız</translation>
</message>
@ -1402,144 +1406,144 @@
<translation>Özel</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>Km</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Yüksek çözünürlük</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Yazdırılan alan yaklaşık olarak görüntü alanıdır. Harita zum seviyesi değişmez.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Yakınlaştırma seviyesi, tüm içeriğin (izler/yer işaretleri) yazdırılan alana sığması ve harita çözünürlüğünün baskı çözünürlüğüne olabildiğince yakın olacak şekilde değiştirilecektir.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Adı</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Tarih</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Mesafe</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Zaman</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Hareket süresi</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Öğe sayısı (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Ayrı grafik sayfası</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Yazdırma modu</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Başlık</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>OpenGL Kullan</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>HTTP/2 etkinleştir</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Görüntü önbellek boyutu:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Bağlantı zaman ımı:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Sistem</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Görünüm</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Haritalar</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Veri</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Yazdır &amp; Dışa ver</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Seçenekler</translation>
</message>

View File

@ -47,82 +47,87 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="176"/>
<location filename="../src/data/data.cpp" line="179"/>
<source>Supported files</source>
<translation>Всі підтримувані формати</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="177"/>
<location filename="../src/data/data.cpp" line="180"/>
<source>CSV files</source>
<translation>CSV файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="178"/>
<location filename="../src/data/data.cpp" line="181"/>
<source>CUP files</source>
<translation>CUP файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="179"/>
<location filename="../src/data/data.cpp" line="182"/>
<source>FIT files</source>
<translation>FIT файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="181"/>
<location filename="../src/data/data.cpp" line="184"/>
<source>GeoJSON files</source>
<translation>GeoJSON файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="183"/>
<location filename="../src/data/data.cpp" line="186"/>
<source>GPI files</source>
<translation>GPI файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="184"/>
<location filename="../src/data/data.cpp" line="187"/>
<source>GPX files</source>
<translation>GPX файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="185"/>
<location filename="../src/data/data.cpp" line="188"/>
<source>IGC files</source>
<translation>IGC файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="186"/>
<location filename="../src/data/data.cpp" line="189"/>
<source>JPEG images</source>
<translation>JPEG зображення</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="187"/>
<location filename="../src/data/data.cpp" line="190"/>
<source>KML files</source>
<translation>KML файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="188"/>
<location filename="../src/data/data.cpp" line="191"/>
<source>LOC files</source>
<translation>LOC файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="189"/>
<location filename="../src/data/data.cpp" line="192"/>
<source>NMEA files</source>
<translation>NMEA файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="190"/>
<location filename="../src/data/data.cpp" line="193"/>
<source>OziExplorer files</source>
<translation>OziExplorer файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="191"/>
<location filename="../src/data/data.cpp" line="194"/>
<source>SLF files</source>
<translation>SLF файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="192"/>
<location filename="../src/data/data.cpp" line="195"/>
<source>SML files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="196"/>
<source>TCX files</source>
<translation>TCX файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="193"/>
<location filename="../src/data/data.cpp" line="197"/>
<source>All files</source>
<translation>Всі файли</translation>
</message>
@ -1252,7 +1257,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="295"/>
<location filename="../src/GUI/optionsdialog.cpp" line="572"/>
<location filename="../src/GUI/optionsdialog.cpp" line="575"/>
<source>Graphs</source>
<translation>Графіки</translation>
</message>
@ -1268,14 +1273,14 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="322"/>
<location filename="../src/GUI/optionsdialog.cpp" line="429"/>
<location filename="../src/GUI/optionsdialog.cpp" line="492"/>
<location filename="../src/GUI/optionsdialog.cpp" line="432"/>
<location filename="../src/GUI/optionsdialog.cpp" line="495"/>
<source>Elevation:</source>
<translation>Висота:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="323"/>
<location filename="../src/GUI/optionsdialog.cpp" line="428"/>
<location filename="../src/GUI/optionsdialog.cpp" line="431"/>
<source>Speed:</source>
<translation>Швидкість:</translation>
</message>
@ -1336,211 +1341,211 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="376"/>
<location filename="../src/GUI/optionsdialog.cpp" line="595"/>
<location filename="../src/GUI/optionsdialog.cpp" line="598"/>
<source>s</source>
<translation>с</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="389"/>
<location filename="../src/GUI/optionsdialog.cpp" line="392"/>
<source>Minimal speed:</source>
<translation>Мінімальна швидкість:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="390"/>
<location filename="../src/GUI/optionsdialog.cpp" line="393"/>
<source>Minimal duration:</source>
<translation>Мінімальна тривалість:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="400"/>
<location filename="../src/GUI/optionsdialog.cpp" line="403"/>
<source>Computed from distance/time</source>
<translation>Обчислено з відстань/час</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="401"/>
<location filename="../src/GUI/optionsdialog.cpp" line="404"/>
<source>Recorded by device</source>
<translation>Записано пристроєм</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="407"/>
<location filename="../src/GUI/optionsdialog.cpp" line="465"/>
<location filename="../src/GUI/optionsdialog.cpp" line="410"/>
<location filename="../src/GUI/optionsdialog.cpp" line="468"/>
<source>GPS data</source>
<translation>GPS дані</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="408"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="411"/>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<source>DEM data</source>
<translation>DEM дані</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="439"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Speed</source>
<translation>Швидкість</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="445"/>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<source>Elevation</source>
<translation>Висота</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="456"/>
<location filename="../src/GUI/optionsdialog.cpp" line="459"/>
<source>Filtering</source>
<translation>Фільтрування</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="457"/>
<location filename="../src/GUI/optionsdialog.cpp" line="460"/>
<source>Sources</source>
<translation>Джерела</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="458"/>
<location filename="../src/GUI/optionsdialog.cpp" line="461"/>
<source>Pause detection</source>
<translation>Виявлення пауз</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>mi</source>
<translation>миля</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<source>nmi</source>
<translation>мор.миля</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="483"/>
<location filename="../src/GUI/optionsdialog.cpp" line="486"/>
<source>km</source>
<translation>км</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="491"/>
<location filename="../src/GUI/optionsdialog.cpp" line="494"/>
<source>Radius:</source>
<translation>Радіус:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="498"/>
<location filename="../src/GUI/optionsdialog.cpp" line="638"/>
<location filename="../src/GUI/optionsdialog.cpp" line="501"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<source>POI</source>
<translation>Точки POI</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="505"/>
<location filename="../src/GUI/optionsdialog.cpp" line="508"/>
<source>WYSIWYG</source>
<translation>WYSIWYG (Візуальний редактор)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="506"/>
<location filename="../src/GUI/optionsdialog.cpp" line="509"/>
<source>High-Resolution</source>
<translation>Висока роздільна здатність</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="511"/>
<location filename="../src/GUI/optionsdialog.cpp" line="514"/>
<source>The printed area is approximately the display area. The map zoom level does not change.</source>
<translation>Область друку є приблизною областю відображення. Рівень масштабування мапи не змінюється.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="513"/>
<location filename="../src/GUI/optionsdialog.cpp" line="516"/>
<source>The zoom level will be changed so that the whole content (tracks/waypoints) fits to the printed area and the map resolution is as close as possible to the print resolution.</source>
<translation>Масштаб буде змінено так, щоби весь зміст (треки/маршрутні точки) вмістився на друковану область, а роздільна здатність мапи була якомога наближеною до роздільної здатності друку.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="535"/>
<location filename="../src/GUI/optionsdialog.cpp" line="538"/>
<source>Name</source>
<translation>Імя</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<location filename="../src/GUI/optionsdialog.cpp" line="540"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="539"/>
<location filename="../src/GUI/optionsdialog.cpp" line="542"/>
<source>Distance</source>
<translation>Відстань</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="541"/>
<location filename="../src/GUI/optionsdialog.cpp" line="544"/>
<source>Time</source>
<translation>Час</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="543"/>
<location filename="../src/GUI/optionsdialog.cpp" line="546"/>
<source>Moving time</source>
<translation>Час руху</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="545"/>
<location filename="../src/GUI/optionsdialog.cpp" line="548"/>
<source>Item count (&gt;1)</source>
<translation>Кількість обєктів (&gt;1)</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="560"/>
<location filename="../src/GUI/optionsdialog.cpp" line="563"/>
<source>Separate graph page</source>
<translation>Окрема сторінка із графіком</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="570"/>
<location filename="../src/GUI/optionsdialog.cpp" line="573"/>
<source>Print mode</source>
<translation>Режим друку</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="571"/>
<location filename="../src/GUI/optionsdialog.cpp" line="574"/>
<source>Header</source>
<translation>Заголовок</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="579"/>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<source>Use OpenGL</source>
<translation>Використовувати OpenGL</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="582"/>
<location filename="../src/GUI/optionsdialog.cpp" line="585"/>
<source>Enable HTTP/2</source>
<translation>Дозволити HTTP/2</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="589"/>
<location filename="../src/GUI/optionsdialog.cpp" line="592"/>
<source>MB</source>
<translation>МБ</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="599"/>
<location filename="../src/GUI/optionsdialog.cpp" line="602"/>
<source>Image cache size:</source>
<translation>Розмір кешу зображень:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="600"/>
<location filename="../src/GUI/optionsdialog.cpp" line="603"/>
<source>Connection timeout:</source>
<translation>Час зєднання вичерпаний:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="616"/>
<location filename="../src/GUI/optionsdialog.cpp" line="641"/>
<location filename="../src/GUI/optionsdialog.cpp" line="619"/>
<location filename="../src/GUI/optionsdialog.cpp" line="644"/>
<source>System</source>
<translation>Система</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="634"/>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<source>Appearance</source>
<translation>Зовнішній вигляд</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="636"/>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<source>Maps</source>
<translation>Мапи</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="637"/>
<location filename="../src/GUI/optionsdialog.cpp" line="640"/>
<source>Data</source>
<translation>Дані</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="639"/>
<location filename="../src/GUI/optionsdialog.cpp" line="642"/>
<source>Print &amp; Export</source>
<translation>Друк та експорт</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="668"/>
<location filename="../src/GUI/optionsdialog.cpp" line="671"/>
<source>Options</source>
<translation>Налаштування</translation>
</message>

View File

@ -243,6 +243,22 @@
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>sml</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/sml+xml</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>icons/sml.icns</string>
<key>CFBundleTypeName</key>
<string>Suunto Markup Language</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
<key>UTImportedTypeDeclarations</key>
@ -541,6 +557,27 @@
<string>application/vnd.garmin.gpi</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.suunto.sml</string>
<key>UTTypeReferenceURL</key>
<string>https://www.suunto.com</string>
<key>UTTypeDescription</key>
<string>Suunto Markup Language</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.xml</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>sml</string>
</array>
<key>public.mime-type</key>
<string>application/sml+xml</string>
</dict>
</dict>
</array>
</dict>
</plist>

View File

@ -12,17 +12,18 @@
<p>Features:</p>
<ul>
<li>Opens GPX, TCX, FIT, KML, IGC, NMEA, SLF, LOC, OziExplorer (PLT,
WPT, RTE), GeoJSON, SeeYou CUP, Garmin GPI &amp; CSV and
geotagged JPEG files.</li>
<li>Opens GPX, TCX, FIT, KML, IGC, NMEA, SIGMA SLF, Suunto SML, LOC,
OziExplorer (PLT, WPT, RTE), GeoJSON, SeeYou CUP,
Garmin GPI &amp; CSV and geotagged JPEG files.</li>
<li>User-definable online maps (OpenStreetMap/Google tiles, WMTS,
WMS, TMS).</li>
WMS, TMS, QuadTiles).</li>
<li>Offline maps (MBTiles, OziExplorer maps, TrekBuddy maps/atlases,
TwoNav RMaps, Garmin IMG &amp; JNX, GeoTIFF images).</li>
<li>Elevation, speed, heart rate, cadence, power, temperature and
gear ratio graphs.</li>
<li>Support for multiple tracks in one view.</li>
<li>Support for POI files.</li>
<li>Support for DEM files (SRTM HGT).</li>
<li>Print/export to PDF.</li>
<li>Full-screen mode.</li>
<li>HiDPI/Retina displays &amp; maps support.</li>
@ -70,5 +71,6 @@
<mimetype>application/geo+json</mimetype>
<mimetype>application/vnd.naviter.seeyou.cup</mimetype>
<mimetype>application/vnd.garmin.gpi</mimetype>
<mimetype>application/sml+xml</mimetype>
</mimetypes>
</component>

View File

@ -7,7 +7,7 @@
; The name of the installer
Name "GPXSee"
; Program version
!define VERSION "7.19"
!define VERSION "7.20"
; The file to write
OutFile "GPXSee-${VERSION}.exe"
@ -106,20 +106,21 @@ Section "GPXSee" SEC_APP
; Associate file formats
DetailPrint "Associating file types..."
!insertmacro FILE_ASSOCIATION_ADD "gpx" "GPS Exchange Format" 7
!insertmacro FILE_ASSOCIATION_ADD "tcx" "Training Center XML" 8
!insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 9
!insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 10
!insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 11
!insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 12
!insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track Point File" 13
!insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 14
!insertmacro FILE_ASSOCIATION_ADD "gpx" "GPS Exchange Format" 8
!insertmacro FILE_ASSOCIATION_ADD "tcx" "Training Center XML" 9
!insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 10
!insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 11
!insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 12
!insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 13
!insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track Point File" 14
!insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 15
!insertmacro FILE_ASSOCIATION_ADD "wpt" "OziExplorer Waypoint File" 1
!insertmacro FILE_ASSOCIATION_ADD "loc" "Geocaching.com Waypoint File" 2
!insertmacro FILE_ASSOCIATION_ADD "slf" "Sigma Log File" 3
!insertmacro FILE_ASSOCIATION_ADD "geojson" "GeoJSON" 4
!insertmacro FILE_ASSOCIATION_ADD "cup" "SeeYou CUP File" 5
!insertmacro FILE_ASSOCIATION_ADD "gpi" "Garmin POI File" 6
!insertmacro FILE_ASSOCIATION_ADD "sml" "Suunto Markup Language" 7
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd
@ -147,30 +148,17 @@ Section "MSVC runtime" SEC_MSVC
SectionIn RO
DetailPrint "Checking whether Visual C++ 2015 Redistributable is already installed..."
${If} ${RunningX64}
ReadRegDword $R0 HKLM "SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" "Installed"
${Else}
ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" "Installed"
${EndIf}
StrCmp $R0 "1" 0 +3
DetailPrint "Visual C++ 2015 Redistributable is already installed, skipping install."
Goto done
DetailPrint "Installing Visual C++ 2015 Redistributable..."
SetOutPath $TEMP
File "vcredist_x86.exe"
ExecWait '"$TEMP\vcredist_x86.exe" /install /quiet /norestart'
SetOutPath $INSTDIR
File "vc_redist.x86.exe"
ExecWait '"$TEMP\vc_redist.x86.exe" /install /quiet /norestart'
SetOutPath $INSTDIR
done:
SectionEnd
Section "OpenSSL" SEC_OPENSSL
File "libeay32.dll"
File "ssleay32.dll"
File "libcrypto-1_1.dll"
File "libssl-1_1.dll"
SectionEnd
@ -232,6 +220,7 @@ Section "Uninstall"
!insertmacro FILE_ASSOCIATION_REMOVE "geojson"
!insertmacro FILE_ASSOCIATION_REMOVE "cup"
!insertmacro FILE_ASSOCIATION_REMOVE "gpi"
!insertmacro FILE_ASSOCIATION_REMOVE "sml"
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd
@ -244,7 +233,7 @@ SectionEnd
LangString DESC_QT ${LANG_ENGLISH} \
"QT cross-platform application framework."
LangString DESC_MSVC ${LANG_ENGLISH} \
"Visual C++ 2015 runtime components. If already installed, will be skipped."
"Microsoft Visual C++ 2017 runtime. If already installed, will be skipped."
LangString DESC_OPENSSL ${LANG_ENGLISH} \
"OpenSSL library. Required for HTTPS to work."
LangString DESC_ANGLE ${LANG_ENGLISH} \
@ -262,4 +251,4 @@ LangString DESC_LOCALIZATION ${LANG_ENGLISH} \
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_MSVC} $(DESC_MSVC)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_APP} $(DESC_APP)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_LOCALIZATION} $(DESC_LOCALIZATION)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
!insertmacro MUI_FUNCTION_DESCRIPTION_END

View File

@ -98,4 +98,11 @@
<generic-icon name="application/octet-stream"/>
<glob pattern="*.gpi"/>
</mime-type>
<mime-type type="application/sml+xml">
<comment>Suunto Markup Language</comment>
<sub-class-of type="application/xml"/>
<generic-icon name="application-xml"/>
<glob pattern="*.sml"/>
</mime-type>
</mime-info>

View File

@ -7,7 +7,7 @@
; The name of the installer
Name "GPXSee"
; Program version
!define VERSION "7.19"
!define VERSION "7.20"
; The file to write
OutFile "GPXSee-${VERSION}_x64.exe"
@ -113,20 +113,21 @@ Section "GPXSee" SEC_APP
; Associate file formats
DetailPrint "Associating file types..."
!insertmacro FILE_ASSOCIATION_ADD "gpx" "GPS Exchange Format" 7
!insertmacro FILE_ASSOCIATION_ADD "tcx" "Training Center XML" 8
!insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 9
!insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 10
!insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 11
!insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 12
!insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track Point File" 13
!insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 14
!insertmacro FILE_ASSOCIATION_ADD "gpx" "GPS Exchange Format" 8
!insertmacro FILE_ASSOCIATION_ADD "tcx" "Training Center XML" 9
!insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 10
!insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 11
!insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 12
!insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 13
!insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track Point File" 14
!insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 15
!insertmacro FILE_ASSOCIATION_ADD "wpt" "OziExplorer Waypoint File" 1
!insertmacro FILE_ASSOCIATION_ADD "loc" "Geocaching.com Waypoint File" 2
!insertmacro FILE_ASSOCIATION_ADD "slf" "Sigma Log File" 3
!insertmacro FILE_ASSOCIATION_ADD "geojson" "GeoJSON" 4
!insertmacro FILE_ASSOCIATION_ADD "cup" "SeeYou CUP File" 5
!insertmacro FILE_ASSOCIATION_ADD "gpi" "Garmin POI File" 6
!insertmacro FILE_ASSOCIATION_ADD "sml" "Suunto Markup Language" 7
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd
@ -154,25 +155,17 @@ Section "MSVC runtime" SEC_MSVC
SectionIn RO
DetailPrint "Checking whether Visual C++ 2015 Redistributable is already installed..."
ReadRegDword $R0 HKLM "SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Installed"
StrCmp $R0 "1" 0 +3
DetailPrint "Visual C++ 2015 Redistributable is already installed, skipping install."
Goto done
DetailPrint "Installing Visual C++ 2015 Redistributable..."
SetOutPath $TEMP
File "vcredist_x64.exe"
ExecWait '"$TEMP\vcredist_x64.exe" /install /quiet /norestart'
File "vc_redist.x64.exe"
ExecWait '"$TEMP\vc_redist.x64.exe" /install /quiet /norestart'
SetOutPath $INSTDIR
done:
SectionEnd
Section "OpenSSL" SEC_OPENSSL
File "libeay32.dll"
File "ssleay32.dll"
File "libcrypto-1_1-x64.dll"
File "libssl-1_1-x64.dll"
SectionEnd
@ -235,6 +228,7 @@ Section "Uninstall"
!insertmacro FILE_ASSOCIATION_REMOVE "geojson"
!insertmacro FILE_ASSOCIATION_REMOVE "cup"
!insertmacro FILE_ASSOCIATION_REMOVE "gpi"
!insertmacro FILE_ASSOCIATION_REMOVE "sml"
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd
@ -247,7 +241,7 @@ SectionEnd
LangString DESC_QT ${LANG_ENGLISH} \
"QT cross-platform application framework."
LangString DESC_MSVC ${LANG_ENGLISH} \
"Visual C++ 2015 runtime components. If already installed, will be skipped."
"Microsoft Visual C++ 2017 runtime. If already installed, will be skipped."
LangString DESC_OPENSSL ${LANG_ENGLISH} \
"OpenSSL library. Required for HTTPS to work."
LangString DESC_ANGLE ${LANG_ENGLISH} \
@ -265,4 +259,4 @@ LangString DESC_LOCALIZATION ${LANG_ENGLISH} \
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_MSVC} $(DESC_MSVC)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_APP} $(DESC_APP)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_LOCALIZATION} $(DESC_LOCALIZATION)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
!insertmacro MUI_FUNCTION_DESCRIPTION_END

View File

@ -451,11 +451,11 @@ void GUI::createActions()
_degreesMinutesAction->setActionGroup(ag);
connect(_degreesMinutesAction, SIGNAL(triggered()), this,
SLOT(setDegreesMinutes()));
_DMSAction = new QAction(tr("Degrees, minutes, seconds (DMS)"), this);
_DMSAction->setMenuRole(QAction::NoRole);
_DMSAction->setCheckable(true);
_DMSAction->setActionGroup(ag);
connect(_DMSAction, SIGNAL(triggered()), this, SLOT(setDMS()));
_dmsAction = new QAction(tr("Degrees, minutes, seconds (DMS)"), this);
_dmsAction->setMenuRole(QAction::NoRole);
_dmsAction->setCheckable(true);
_dmsAction->setActionGroup(ag);
connect(_dmsAction, SIGNAL(triggered()), this, SLOT(setDMS()));
_fullscreenAction = new QAction(QIcon(FULLSCREEN_ICON),
tr("Fullscreen mode"), this);
_fullscreenAction->setMenuRole(QAction::NoRole);
@ -559,7 +559,7 @@ void GUI::createMenus()
QMenu *coordinatesMenu = settingsMenu->addMenu(tr("Coordinates format"));
coordinatesMenu->addAction(_decimalDegreesAction);
coordinatesMenu->addAction(_degreesMinutesAction);
coordinatesMenu->addAction(_DMSAction);
coordinatesMenu->addAction(_dmsAction);
settingsMenu->addSeparator();
settingsMenu->addAction(_showToolbarsAction);
settingsMenu->addAction(_fullscreenAction);
@ -1655,7 +1655,7 @@ void GUI::writeSettings()
: _nauticalUnitsAction->isChecked() ? Nautical : Metric;
if (units != UNITS_DEFAULT)
settings.setValue(UNITS_SETTING, units);
CoordinatesFormat format = _DMSAction->isChecked() ? DMS
CoordinatesFormat format = _dmsAction->isChecked() ? DMS
: _degreesMinutesAction->isChecked() ? DegreesMinutes : DecimalDegrees;
if (format != COORDINATES_DEFAULT)
settings.setValue(COORDINATES_SETTING, format);
@ -1879,7 +1879,7 @@ void GUI::readSettings()
value = settings.value(COORDINATES_SETTING, COORDINATES_DEFAULT).toInt();
if (value == DMS)
_DMSAction->trigger();
_dmsAction->trigger();
else if (value == DegreesMinutes)
_degreesMinutesAction->trigger();
else

View File

@ -180,7 +180,7 @@ private:
QAction *_nauticalUnitsAction;
QAction *_decimalDegreesAction;
QAction *_degreesMinutesAction;
QAction *_DMSAction;
QAction *_dmsAction;
QAction *_totalTimeAction;
QAction *_movingTimeAction;
QAction *_nextMapAction;

View File

@ -14,7 +14,8 @@ double Coordinates::distanceTo(const Coordinates &c) const
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const Coordinates &c)
{
dbg.nospace() << "Coordinates(" << c.lon() << ", " << c.lat() << ")";
dbg.nospace() << qSetRealNumberPrecision(10) << "Coordinates(" << c.lat()
<< ", " << c.lon() << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG

View File

@ -9,6 +9,7 @@
#define TIFF_SHORT 3
#define TIFF_LONG 4
#define TIFF_RATIONAL 5
#define TIFF_SRATIONAL 10
#define TIFF_DOUBLE 12
class TIFFFile

View File

@ -19,6 +19,7 @@
#include "exifparser.h"
#include "cupparser.h"
#include "gpiparser.h"
#include "smlparser.h"
#include "dem.h"
#include "data.h"
@ -41,6 +42,7 @@ static GeoJSONParser geojson;
static EXIFParser exif;
static CUPParser cup;
static GPIParser gpi;
static SMLParser sml;
static QHash<QString, Parser*> parsers()
{
@ -66,6 +68,7 @@ static QHash<QString, Parser*> parsers()
hash.insert("jpg", &exif);
hash.insert("cup", &cup);
hash.insert("gpi", &gpi);
hash.insert("sml", &sml);
return hash;
}
@ -189,6 +192,7 @@ QString Data::formats()
+ qApp->translate("Data", "NMEA files") + " (*.nmea);;"
+ qApp->translate("Data", "OziExplorer files") + " (*.plt *.rte *.wpt);;"
+ qApp->translate("Data", "SLF files") + " (*.slf);;"
+ qApp->translate("Data", "SML files") + " (*.sml);;"
+ qApp->translate("Data", "TCX files") + " (*.tcx);;"
+ qApp->translate("Data", "All files") + " (*)";
}

View File

@ -82,7 +82,10 @@ double EXIFParser::altitude(TIFFFile &file, const IFDEntry &alt,
double EXIFParser::coordinate(TIFFFile &file, const IFDEntry &ll) const
{
if (!(ll.type == TIFF_RATIONAL && ll.count == 3))
// Some broken image creators like NOKIA phones use a wrong (SRATIONAL)
// data type
if (!((ll.type == TIFF_RATIONAL || ll.type == TIFF_SRATIONAL)
&& ll.count == 3))
return NAN;
if (!file.seek(ll.offset))

View File

@ -96,7 +96,7 @@ static bool readARecord(const char *line, qint64 len)
return true;
}
bool IGCParser::readHRecord(const char *line, int len)
bool IGCParser::readHRecord(CTX &ctx, const char *line, int len)
{
if (len < 11 || ::strncmp(line, "HFDTE", 5))
return true;
@ -112,9 +112,9 @@ bool IGCParser::readHRecord(const char *line, int len)
return false;
}
_date = QDate(y + 2000 <= QDate::currentDate().year() ? 2000 + y : 1900 + y,
m, d);
if (!_date.isValid()) {
ctx.date = QDate(y + 2000 <= QDate::currentDate().year()
? 2000 + y : 1900 + y, m, d);
if (!ctx.date.isValid()) {
_errorString = "Invalid date";
return false;
}
@ -122,8 +122,8 @@ bool IGCParser::readHRecord(const char *line, int len)
return true;
}
bool IGCParser::readBRecord(SegmentData &segment, const char *line,
int len)
bool IGCParser::readBRecord(CTX &ctx, const char *line, int len,
SegmentData &segment)
{
qreal lat, lon, ele;
QTime time;
@ -152,20 +152,20 @@ bool IGCParser::readBRecord(SegmentData &segment, const char *line,
return false;
}
if (time < _time && !segment.isEmpty()
&& _date == segment.last().timestamp().date())
_date = _date.addDays(1);
_time = time;
if (time < ctx.time && !segment.isEmpty()
&& ctx.date == segment.last().timestamp().date())
ctx.date = ctx.date.addDays(1);
ctx.time = time;
Trackpoint t(Coordinates(lon, lat));
t.setTimestamp(QDateTime(_date, _time, Qt::UTC));
t.setTimestamp(QDateTime(ctx.date, ctx.time, Qt::UTC));
t.setElevation(ele);
segment.append(t);
return true;
}
bool IGCParser::readCRecord(RouteData &route, const char *line, int len)
bool IGCParser::readCRecord(const char *line, int len, RouteData &route)
{
qreal lat, lon;
@ -202,6 +202,7 @@ bool IGCParser::parse(QFile *file, QList<TrackData> &tracks,
qint64 len;
char line[76 + 2 + 1 + 1];
bool route = false, track = false;
CTX ctx;
_errorLine = 1;
@ -225,28 +226,28 @@ bool IGCParser::parse(QFile *file, QList<TrackData> &tracks,
}
} else {
if (line[0] == 'H') {
if (!readHRecord(line, len))
if (!readHRecord(ctx, line, len))
return false;
} else if (line[0] == 'C') {
if (route) {
if (!readCRecord(routes.last() ,line, len))
if (!readCRecord(line, len, routes.last()))
return false;
} else {
route = true;
routes.append(RouteData());
}
} else if (line[0] == 'B') {
if (_date.isNull()) {
if (ctx.date.isNull()) {
_errorString = "Missing date header";
return false;
}
if (!track) {
tracks.append(TrackData());
tracks.last().append(SegmentData());
_time = QTime(0, 0);
ctx.time = QTime(0, 0);
track = true;
}
if (!readBRecord(tracks.last().last(), line, len))
if (!readBRecord(ctx, line, len, tracks.last().last()))
return false;
}
}

View File

@ -17,15 +17,17 @@ public:
int errorLine() const {return _errorLine;}
private:
bool readHRecord(const char *line, int len);
bool readBRecord(SegmentData &segment, const char *line, int len);
bool readCRecord(RouteData &route, const char *line, int len);
struct CTX {
QDate date;
QTime time;
};
bool readHRecord(CTX &ctx, const char *line, int len);
bool readBRecord(CTX &ctx, const char *line, int len, SegmentData &segment);
bool readCRecord(const char *line, int len, RouteData &route);
int _errorLine;
QString _errorString;
QDate _date;
QTime _time;
};
#endif // IGCPARSER_H

View File

@ -7,15 +7,15 @@ class Link {
public:
Link() {}
Link(const QString &URL, const QString &text = QString())
: _URL(URL), _text(text) {}
: _url(URL), _text(text) {}
void setURL(const QString &URL) {_URL = URL;}
void setURL(const QString &URL) {_url = URL;}
void setText(const QString &text) {_text = text;}
const QString &URL() const {return _URL;}
const QString &URL() const {return _url;}
const QString &text() const {return _text;}
private:
QString _URL;
QString _url;
QString _text;
};

View File

@ -227,7 +227,8 @@ bool NMEAParser::readEW(const char *data, int len, qreal &lon)
return true;
}
bool NMEAParser::readRMC(SegmentData &segment, const char *line, int len)
bool NMEAParser::readRMC(CTX &ctx, const char *line, int len,
SegmentData &segment)
{
int col = 1;
const char *vp = line;
@ -280,23 +281,24 @@ bool NMEAParser::readRMC(SegmentData &segment, const char *line, int len)
}
if (!date.isNull()) {
if (_date.isNull() && !_time.isNull() && !segment.isEmpty())
segment.last().setTimestamp(QDateTime(date, _time, Qt::UTC));
_date = date;
if (ctx.date.isNull() && !ctx.time.isNull() && !segment.isEmpty())
segment.last().setTimestamp(QDateTime(date, ctx.time, Qt::UTC));
ctx.date = date;
}
Coordinates c(lon, lat);
if (valid && !_GGA && c.isValid()) {
if (valid && !ctx.GGA && c.isValid()) {
Trackpoint t(c);
if (!_date.isNull() && !time.isNull())
t.setTimestamp(QDateTime(_date, time, Qt::UTC));
if (!ctx.date.isNull() && !time.isNull())
t.setTimestamp(QDateTime(ctx.date, time, Qt::UTC));
segment.append(t);
}
return true;
}
bool NMEAParser::readGGA(SegmentData &segment, const char *line, int len)
bool NMEAParser::readGGA(CTX &ctx, const char *line, int len,
SegmentData &segment)
{
int col = 1;
const char *vp = line;
@ -306,7 +308,7 @@ bool NMEAParser::readGGA(SegmentData &segment, const char *line, int len)
if (*lp == ',' || *lp == '*') {
switch (col) {
case 1:
if (!readTime(vp, lp - vp, _time))
if (!readTime(vp, lp - vp, ctx.time))
return false;
break;
case 2:
@ -360,19 +362,19 @@ bool NMEAParser::readGGA(SegmentData &segment, const char *line, int len)
Coordinates c(lon, lat);
if (c.isValid()) {
Trackpoint t(c);
if (!(_time.isNull() || _date.isNull()))
t.setTimestamp(QDateTime(_date, _time, Qt::UTC));
if (!(ctx.time.isNull() || ctx.date.isNull()))
t.setTimestamp(QDateTime(ctx.date, ctx.time, Qt::UTC));
if (!std::isnan(ele))
t.setElevation(ele - gh);
segment.append(t);
_GGA = true;
ctx.GGA = true;
}
return true;
}
bool NMEAParser::readWPL(QVector<Waypoint> &waypoints, const char *line, int len)
bool NMEAParser::readWPL(const char *line, int len, QVector<Waypoint> &waypoints)
{
int col = 1;
const char *vp = line;
@ -423,7 +425,7 @@ bool NMEAParser::readWPL(QVector<Waypoint> &waypoints, const char *line, int len
return true;
}
bool NMEAParser::readZDA(const char *line, int len)
bool NMEAParser::readZDA(CTX &ctx, const char *line, int len)
{
int col = 1;
const char *vp = line;
@ -468,8 +470,8 @@ bool NMEAParser::readZDA(const char *line, int len)
return false;
}
_date = QDate(y, m, d);
if (!_date.isValid()) {
ctx.date = QDate(y, m, d);
if (!ctx.date.isValid()) {
_errorString = "Invalid date";
return false;
}
@ -486,13 +488,11 @@ bool NMEAParser::parse(QFile *file, QList<TrackData> &tracks,
qint64 len;
char line[80 + 2 + 1 + 1];
SegmentData segment;
CTX ctx;
_errorLine = 1;
_errorString.clear();
_date = QDate();
_time = QTime();
_GGA = false;
while (!file->atEnd()) {
len = file->readLine(line, sizeof(line));
@ -507,16 +507,16 @@ bool NMEAParser::parse(QFile *file, QList<TrackData> &tracks,
if (validSentence(line, len)) {
if (!memcmp(line + 3, "RMC,", 4)) {
if (!readRMC(segment, line + 7, len - 7))
if (!readRMC(ctx, line + 7, len - 7, segment))
return false;
} else if (!memcmp(line + 3, "GGA,", 4)) {
if (!readGGA(segment, line + 7, len - 7))
if (!readGGA(ctx, line + 7, len - 7, segment))
return false;
} else if (!memcmp(line + 3, "WPL,", 4)) {
if (!readWPL(waypoints, line + 7, len - 7))
if (!readWPL(line + 7, len - 7, waypoints))
return false;
} else if (!memcmp(line + 3, "ZDA,", 4)) {
if (!readZDA(line + 7, len - 7))
if (!readZDA(ctx, line + 7, len - 7))
return false;
}
}

View File

@ -8,7 +8,7 @@
class NMEAParser : public Parser
{
public:
NMEAParser() : _errorLine(0), _GGA(false) {}
NMEAParser() : _errorLine(0) {}
bool parse(QFile *file, QList<TrackData> &tracks, QList<RouteData> &routes,
QList<Area> &polygons, QVector<Waypoint> &waypoints);
@ -16,6 +16,14 @@ public:
int errorLine() const {return _errorLine;}
private:
struct CTX {
CTX() : GGA(false) {}
QDate date;
QTime time;
bool GGA;
};
bool readEW(const char *data, int len, qreal &lon);
bool readLon(const char *data, int len, qreal &lon);
bool readNS(const char *data, int len, qreal &lat);
@ -25,17 +33,13 @@ private:
bool readAltitude(const char *data, int len, qreal &ele);
bool readGeoidHeight(const char *data, int len, qreal &gh);
bool readRMC(SegmentData &segment, const char *line, int len);
bool readGGA(SegmentData &segment, const char *line, int len);
bool readWPL(QVector<Waypoint> &waypoints, const char *line, int len);
bool readZDA(const char *line, int len);
bool readRMC(CTX &ctx, const char *line, int len, SegmentData &segment);
bool readGGA(CTX &ctx, const char *line, int len, SegmentData &segment);
bool readWPL(const char *line, int len, QVector<Waypoint> &waypoints);
bool readZDA(CTX &ctx, const char *line, int len);
int _errorLine;
QString _errorString;
QDate _date;
QTime _time;
bool _GGA;
};
#endif // NMEAPARSER_H

163
src/data/smlparser.cpp Normal file
View File

@ -0,0 +1,163 @@
#include "smlparser.h"
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const SMLParser::Sensors &sensors)
{
dbg.nospace() << "Sensors(" << sensors.cadence << ", "
<< sensors.temperature << ", " << sensors.hr << "," << sensors.power
<< ", " << sensors.speed << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG
void SMLParser::sample(SegmentData &segment, QMap<QDateTime, Sensors> &map)
{
QDateTime timestamp;
Sensors sensors;
qreal lat = NAN, lon = NAN, altitude = NAN;
bool ok, periodic = false;
while (_reader.readNextStartElement()) {
if (_reader.name() == QLatin1String("Latitude")) {
lat = _reader.readElementText().toDouble(&ok);
if (!ok || lat < -90 || lon > 90) {
_reader.raiseError("Invalid Latitude");
return;
}
} else if (_reader.name() == QLatin1String("Longitude")) {
lon = _reader.readElementText().toDouble(&ok);
if (!ok || lat < -180 || lon > 180) {
_reader.raiseError("Invalid Longitude");
return;
}
} else if (_reader.name() == QLatin1String("UTC")) {
timestamp = QDateTime::fromString(_reader.readElementText(),
Qt::ISODate);
if (!timestamp.isValid()) {
_reader.raiseError("Invalid timestamp");
return;
}
} else if (_reader.name() == QLatin1String("GPSAltitude")) {
altitude = _reader.readElementText().toDouble(&ok);
if (!ok) {
_reader.raiseError("Invalid GPS altitude");
return;
}
} else if (_reader.name() == QLatin1String("SampleType")) {
if (_reader.readElementText() == "periodic")
periodic = true;
} else if (_reader.name() == QLatin1String("Cadence")) {
sensors.cadence = _reader.readElementText().toDouble(&ok);
if (!ok || sensors.cadence < 0) {
_reader.raiseError("Invalid Cadence");
return;
}
} else if (_reader.name() == QLatin1String("Temperature")) {
sensors.temperature = _reader.readElementText().toDouble(&ok);
// Temperature is in Kelvin units
if (!ok || sensors.temperature < 0) {
_reader.raiseError("Invalid Temperature");
return;
}
} else if (_reader.name() == QLatin1String("HR")) {
sensors.hr = _reader.readElementText().toDouble(&ok);
if (!ok || sensors.hr < 0) {
_reader.raiseError("Invalid HR");
return;
}
} else if (_reader.name() == QLatin1String("BikePower")) {
sensors.power = _reader.readElementText().toDouble(&ok);
if (!ok || sensors.power < 0) {
_reader.raiseError("Invalid BikePower");
return;
}
} else if (_reader.name() == QLatin1String("Speed")) {
sensors.speed = _reader.readElementText().toDouble(&ok);
if (!ok || sensors.speed < 0) {
_reader.raiseError("Invalid Speed");
return;
}
} else
_reader.skipCurrentElement();
}
if (periodic && timestamp.isValid())
map.insert(timestamp, sensors);
else if (!(std::isnan(lon) || std::isnan(lat))) {
Trackpoint t(Coordinates(rad2deg(lon), rad2deg(lat)));
t.setTimestamp(timestamp);
t.setElevation(altitude);
segment.append(t);
}
}
void SMLParser::samples(SegmentData &segment)
{
QMap<QDateTime, Sensors> sensors;
QMap<QDateTime, Sensors>::const_iterator it;
while (_reader.readNextStartElement()) {
if (_reader.name() == QLatin1String("Sample")) {
sample(segment, sensors);
} else
_reader.skipCurrentElement();
}
for (int i = 0; i < segment.size(); i++) {
Trackpoint &t = segment[i];
if ((it = sensors.lowerBound(t.timestamp())) != sensors.constEnd()) {
t.setCadence(it->cadence * 60);
t.setTemperature(it->temperature - 273.15);
t.setHeartRate(it->hr * 60);
t.setPower(it->power);
t.setSpeed(it->speed);
}
}
}
void SMLParser::deviceLog(TrackData &track)
{
while (_reader.readNextStartElement()) {
if (_reader.name() == QLatin1String("Samples")) {
track.append(SegmentData());
samples(track.last());
} else
_reader.skipCurrentElement();
}
}
void SMLParser::sml(QList<TrackData> &tracks)
{
while (_reader.readNextStartElement()) {
if (_reader.name() == QLatin1String("DeviceLog")) {
tracks.append(TrackData());
deviceLog(tracks.last());
} else
_reader.skipCurrentElement();
}
}
bool SMLParser::parse(QFile *file, QList<TrackData> &tracks,
QList<RouteData> &routes, QList<Area> &polygons,
QVector<Waypoint> &waypoints)
{
Q_UNUSED(routes);
Q_UNUSED(polygons);
Q_UNUSED(waypoints);
_reader.clear();
_reader.setDevice(file);
if (_reader.readNextStartElement()) {
if (_reader.name() == QLatin1String("sml"))
sml(tracks);
else
_reader.raiseError("Not a SML file");
}
return !_reader.error();
}

38
src/data/smlparser.h Normal file
View File

@ -0,0 +1,38 @@
#ifndef SMLPARSER_H
#define SMLPARSER_H
#include <QXmlStreamReader>
#include <QMap>
#include <QDebug>
#include "parser.h"
class SMLParser : public Parser
{
public:
bool parse(QFile *file, QList<TrackData> &tracks, QList<RouteData> &routes,
QList<Area> &polygons, QVector<Waypoint> &waypoints);
QString errorString() const {return _reader.errorString();}
int errorLine() const {return _reader.lineNumber();}
private:
struct Sensors
{
Sensors()
: cadence(NAN), temperature(NAN), hr(NAN), power(NAN), speed(NAN) {}
qreal cadence, temperature, hr, power, speed;
};
void sml(QList<TrackData> &tracks);
void deviceLog(TrackData &track);
void samples(SegmentData &segment);
void sample(SegmentData &segment, QMap<QDateTime, Sensors> &map);
#ifndef QT_NO_DEBUG
friend QDebug operator<<(QDebug dbg, const Sensors &sensors);
#endif // QT_NO_DEBUG
QXmlStreamReader _reader;
};
#endif // SMLPARSER_H

83
src/map/IMG/bitstream.cpp Normal file
View File

@ -0,0 +1,83 @@
#include "bitstream.h"
bool BitStream1::read(int bits, quint32 &val)
{
val = 0;
for (int pos = 0; pos < bits; ) {
if (!_remaining) {
if (!_length || !_file.readUInt8(_hdl, _data))
return false;
_remaining = 8;
_length--;
}
quint32 get = bits - pos;
if (get >= _remaining) {
val |= _data << pos;
pos += _remaining;
_remaining = 0;
} else {
quint32 mask = (1<<get) - 1;
val |= (_data & mask)<<pos;
_data >>= get;
_remaining -= get;
break;
}
}
return true;
}
bool BitStream1::flush()
{
if (_length && !_file.seek(_hdl, _hdl.pos + _length))
return false;
_length = 0;
_remaining = 0;
return true;
}
bool BitStream4::read(int bits, quint32 &val)
{
if (bits <= 32 - (int)(_used + _unused)) {
val = bits ? (_data << _used) >> (32 - bits) : 0;
_used += bits;
return true;
}
quint32 old = 0;
if (_used < 32) {
old = (_data << _used) >> (32 - bits);
bits = (bits - 32) + _used;
}
_used = bits;
quint32 bytes = qMin(_length, (quint32)4);
if (!_file.readVUInt32SW(_hdl, bytes, _data))
return false;
_length -= bytes;
_unused = (4 - bytes) * 8;
_data <<= _unused;
val = _data >> (32 - _used) | old;
return true;
}
bool BitStream4::flush()
{
if (_length && !_file.seek(_hdl, _hdl.pos + _length))
return false;
_length = 0;
_unused = 32;
return true;
}

39
src/map/IMG/bitstream.h Normal file
View File

@ -0,0 +1,39 @@
#ifndef BITSTREAM_H
#define BITSTREAM_H
#include "subfile.h"
class BitStream1 {
public:
BitStream1(const SubFile &file, SubFile::Handle &hdl, quint32 length)
: _file(file), _hdl(hdl), _length(length), _remaining(0) {}
bool read(int bits, quint32 &val);
bool flush();
quint32 bitsAvailable() const {return _length * 8 + _remaining;}
private:
const SubFile &_file;
SubFile::Handle &_hdl;
quint32 _length, _remaining;
quint8 _data;
};
class BitStream4 {
public:
BitStream4(const SubFile &file, SubFile::Handle &hdl, quint32 length)
: _file(file), _hdl(hdl), _length(length), _used(32), _unused(0),
_data(0) {}
bool read(int bits, quint32 &val);
bool flush();
quint32 bitsAvailable() const {return _length * 8 + (32 - _used) - _unused;}
private:
const SubFile &_file;
SubFile::Handle &_hdl;
quint32 _length, _used, _unused;
quint32 _data;
};
#endif // BITSTREAM_H

View File

@ -0,0 +1,86 @@
#include "deltastream.h"
static int bitSize(quint8 baseSize, bool variableSign, bool extraBit)
{
int bits = 2;
if (baseSize <= 9)
bits += baseSize;
else
bits += 2 * baseSize - 9;
if (variableSign)
bits++;
if (extraBit)
bits++;
return bits;
}
DeltaStream::DeltaStream(const SubFile &file, SubFile::Handle &hdl,
quint32 length, quint8 info, bool extraBit, bool extended)
: BitStream1(file, hdl, length), _readBits(0xFFFFFFFF)
{
_extraBit = extraBit ? 1 : 0;
if (!(sign(_lonSign) && sign(_latSign)))
return;
if (extended) {
quint32 b;
if (!read(1, b))
return;
}
_lonBits = bitSize(info & 0x0F, !_lonSign, extraBit);
_latBits = bitSize(info >> 4, !_latSign, false);
_readBits = _lonBits + _latBits;
}
bool DeltaStream::readDelta(int bits, int sign, int extraBit,
qint32 &delta)
{
quint32 value;
if (!read(bits, value))
return false;
value >>= extraBit;
if (!sign) {
qint32 signMask = 1 << (bits - extraBit - 1);
if (value & signMask) {
qint32 comp = value ^ signMask;
if (comp)
delta = comp - signMask;
else {
qint32 other;
if (!readDelta(bits - extraBit, sign, false, other))
return false;
if (other < 0)
delta = 1 - signMask + other;
else
delta = signMask - 1 + other;
}
} else {
delta = value;
}
} else {
delta = value * sign;
}
return true;
}
bool DeltaStream::sign(int &val)
{
quint32 bit;
val = 0;
if (!read(1, bit))
return false;
if (bit) {
if (!read(1, bit))
return false;
val = bit ? -1 : 1;
}
return true;
}

28
src/map/IMG/deltastream.h Normal file
View File

@ -0,0 +1,28 @@
#ifndef DELTASTREAM_H
#define DELTASTREAM_H
#include "bitstream.h"
class DeltaStream : public BitStream1 {
public:
DeltaStream(const SubFile &file, SubFile::Handle &hdl, quint32 length,
quint8 info, bool extraBit, bool extended);
bool readNext(qint32 &lonDelta, qint32 &latDelta)
{
return hasNext()
? (readDelta(_lonBits, _lonSign, _extraBit, lonDelta)
&& readDelta(_latBits, _latSign, false, latDelta)) : false;
}
bool atEnd() const {return (_readBits != 0xFFFFFFFF && !hasNext());}
private:
bool hasNext() const {return bitsAvailable() >= _readBits;}
bool sign(int &val);
bool readDelta(int bits, int sign, int extraBit, qint32 &delta);
int _lonSign, _latSign, _extraBit;
quint32 _lonBits, _latBits, _readBits;
};
#endif // DELTASTREAM_H

View File

@ -0,0 +1,101 @@
#include "huffmanstream.h"
HuffmanStream::HuffmanStream(const SubFile &file, SubFile::Handle &hdl,
quint32 length, const HuffmanTable &table, bool line)
: BitStream4(file, hdl, length), _table(table), _symbolDataSize(0),
_symbolData(0)
{
if (line) {
if (!(sign(_lonSign) && sign(_latSign)))
return;
} else {
_lonSign = 0;
_latSign = 0;
}
quint32 eb;
if (!read(1, eb))
return;
if (eb) {
qWarning("Extended polygon/lines not supported");
flush();
}
}
bool HuffmanStream::readNext(qint32 &lonDelta, qint32 &latDelta)
{
if (!readDelta(_lonSign, lonDelta))
return false;
if (!readDelta(_latSign, latDelta))
return false;
if (!(lonDelta|latDelta))
return false;
return true;
}
bool HuffmanStream::readOffset(qint32 &lonDelta, qint32 &latDelta)
{
if (!readDelta(1, lonDelta))
return false;
if (!readDelta(1, latDelta))
return false;
return true;
}
bool HuffmanStream::sign(int &val)
{
quint32 bit;
val = 0;
if (!read(1, bit))
return false;
if (bit) {
if (!read(1, bit))
return false;
val = bit ? -1 : 1;
}
return true;
}
bool HuffmanStream::readDelta(int sign, qint32 &symbol)
{
uchar size;
if (_symbolDataSize < 32) {
quint32 next;
quint8 nextSize = qMin((quint32)(32 - _symbolDataSize),
bitsAvailable());
if (!read(nextSize, next))
return false;
_symbolData = (_symbolData << nextSize) | next;
_symbolDataSize += nextSize;
}
symbol = _table.symbol(_symbolData << (32U - _symbolDataSize), size);
if (size <= _symbolDataSize)
_symbolDataSize -= size;
else
return false;
if (symbol && !sign) {
if (!_symbolDataSize)
return false;
else {
sign = ((1U << (_symbolDataSize - 1)) & _symbolData) ? -1 : 1;
_symbolDataSize--;
}
}
symbol = sign * symbol;
return true;
}

View File

@ -0,0 +1,27 @@
#ifndef HUFFMANSTREAM_H
#define HUFFMANSTREAM_H
#include "bitstream.h"
#include "huffmantable.h"
class HuffmanStream : public BitStream4 {
public:
HuffmanStream(const SubFile &file, SubFile::Handle &hdl, quint32 length,
const HuffmanTable &table, bool line);
bool readNext(qint32 &lonDelta, qint32 &latDelta);
bool readOffset(qint32 &lonDelta, qint32 &latDelta);
bool atEnd() const
{return _symbolDataSize + bitsAvailable() < _table.maxSymbolSize();}
private:
bool sign(int &val);
bool readDelta(int sign, qint32 &delta);
const HuffmanTable &_table;
quint32 _symbolDataSize;
quint32 _symbolData;
int _lonSign, _latSign;
};
#endif // HUFFMANSTREAM_H

View File

@ -0,0 +1,139 @@
#include "huffmantable.h"
static quint8 vs(const quint8 b0)
{
static const quint8 sizes[] = {4, 1, 2, 1, 3, 1, 2, 1};
return sizes[b0 & 0x07];
}
static inline quint8 bs(const quint8 val)
{
return (val + 7) >> 3;
}
static inline quint32 readVUint32(const quint8 *buffer, quint32 bytes)
{
quint32 val = 0;
for (quint32 i = bytes; i; i--)
val |= ((quint32)*(buffer + i)) << ((i-1) * 8);
return val;
}
bool HuffmanTable::load(const SubFile &file, SubFile::Handle &hdl,
quint32 offset, quint32 size, quint32 id)
{
if (!getBuffer(file, hdl, offset, size, id))
return false;
_s0 = (quint8)_buffer.at(0) & 0x0F;
_s1e = (quint8)_buffer.at(0) & 0x10 ? 1 : 8;
_s2 = (quint8)_buffer.at(1);
_s3 = bs(_s2);
_s1d = (quint8)_buffer.at(2);
_s1f = (quint8)_buffer.at(3);
_s20 = bs(_s1f);
_s1 = _s20 + 1;
_s22 = vs(_buffer.at(4));
_s1c = _s3 + 1 + _s22;
_s14 = (quint8*)(_buffer.data()) + 4 + _s22;
_s10 = _s14 + _s1c * _s1d;
_s18 = _s10 + (_s1 << _s0);
return true;
}
bool HuffmanTable::getBuffer(const SubFile &file, SubFile::Handle &hdl,
quint32 offset, quint32 size, quint8 id)
{
quint32 recordSize, recordOffset = offset;
for (int i = 0; i <= id; i++) {
if (!file.seek(hdl, recordOffset))
return false;
if (!file.readVUInt32(hdl, recordSize))
return false;
recordOffset = hdl.pos + recordSize;
if (recordOffset > offset + size)
return false;
};
_buffer.resize(recordSize);
for (int i = 0; i < _buffer.size(); i++)
if (!file.readUInt8(hdl, *((quint8*)(_buffer.data() + i))))
return false;
return true;
}
quint32 HuffmanTable::symbol(quint32 data, quint8 &size) const
{
quint32 ss, sym;
quint8 *tp;
if (_s0 == 0) {
sym = _s1d - 1;
ss = 0;
} else {
quint32 offset = _s1 * (data >> (0x20U - _s0));
tp = _s10 + offset;
if ((*tp & 1) != 0) {
sym = readVUint32(tp, _s20);
size = *tp >> 1;
return sym;
}
ss = *tp >> 1;
sym = tp[1];
}
tp = ss * _s1c + _s14;
data = data >> (0x20U - _s2);
quint8 *prev = tp;
while (ss < sym) {
quint32 cnt = (ss + 1 + sym) >> 1;
tp = _s14 + (cnt * _s1c);
quint32 nd = readVUint32(tp - 1, _s3);
if (data <= nd) {
if (data == nd)
ss = cnt;
else
tp = prev;
sym = cnt - (data < nd);
cnt = ss;
}
ss = cnt;
prev = tp;
}
sym = readVUint32(tp - 1, _s3);
tp = tp + _s3;
ss = readVUint32(tp, _s22);
size = *tp;
sym = (data - sym) >> (_s2 - *tp);
if (_s1e == 8)
sym = readVUint32(tp, _s20);
else {
sym = (sym + ss) * _s1f;
ss = sym >> 3;
sym = sym & 7;
quint32 shift = 8 - sym;
sym = *(_s18 + ss) >> sym;
if (shift < _s1f) {
tp = _s18 + ss;
ss = readVUint32(tp, ((_s1f + 7) - shift) >> 3);
sym = (ss << shift) | sym;
}
}
return sym;
}

View File

@ -0,0 +1,27 @@
#ifndef HUFFMANTABLE_H
#define HUFFMANTABLE_H
#include "subfile.h"
class HuffmanTable {
public:
HuffmanTable() : _s2(0) {}
bool load(const SubFile &file, SubFile::Handle &hdl, quint32 offset,
quint32 size, quint32 id);
bool isNull() const {return _s2 == 0;}
quint8 maxSymbolSize() const {return _s2;}
quint32 symbol(quint32 data, quint8 &size) const;
private:
bool getBuffer(const SubFile &file, SubFile::Handle &hdl, quint32 offset,
quint32 size, quint8 id);
QByteArray _buffer;
quint8 _s0, _s1, _s2, _s3;
quint8 *_s10, *_s14, *_s18;
quint8 _s1c, _s1d, _s1e, _s1f, _s20;
quint16 _s22;
};
#endif // HUFFMANTABLE_H

View File

@ -1,4 +1,4 @@
#include <QSet>
#include <QMap>
#include <QtEndian>
#include "common/programpaths.h"
#include "vectortile.h"
@ -7,11 +7,7 @@
#define CACHE_SIZE 8388608 /* 8MB */
#define CHECK(condition) \
if (!(condition)) { \
_errorString = "Unsupported or invalid IMG file"; \
return; \
}
typedef QMap<QString, VectorTile*> TileMap;
struct CTX
{
@ -27,9 +23,37 @@ struct CTX
QList<IMG::Point> *points;
};
static SubFile::Type tileType(const char str[3])
{
if (!memcmp(str, "TRE", 3))
return SubFile::TRE;
else if (!memcmp(str, "RGN", 3))
return SubFile::RGN;
else if (!memcmp(str, "LBL", 3))
return SubFile::LBL;
else if (!memcmp(str, "TYP", 3))
return SubFile::TYP;
else if (!memcmp(str, "GMP", 3))
return SubFile::GMP;
else if (!memcmp(str, "NET", 3))
return SubFile::NET;
else
return SubFile::Unknown;
}
IMG::IMG(const QString &fileName)
: _file(fileName), _typ(0), _style(0), _valid(false)
{
#define CHECK(condition) \
if (!(condition)) { \
_errorString = "Unsupported or invalid IMG file"; \
qDeleteAll(tileMap); \
return; \
}
TileMap tileMap;
QString typFile;
if (!_file.open(QFile::ReadOnly)) {
_errorString = _file.errorString();
return;
@ -56,6 +80,7 @@ IMG::IMG(const QString &fileName)
_blockSize = 1 << (e1 + e2);
_blockCache.setMaxCost(CACHE_SIZE / _blockSize);
// Read the FAT table
quint8 flag;
quint64 offset = 0x200;
@ -75,22 +100,18 @@ IMG::IMG(const QString &fileName)
offset += 512;
int cnt = (size - offset) / 512;
QMap<QString, VectorTile*> tileMap;
QString typFile;
// Read FAT blocks describing the IMG sub-files
for (int i = 0; i < cnt; i++) {
quint16 block;
CHECK(_file.seek(offset) && readValue(flag) && read(name, sizeof(name))
&& read(type, sizeof(type)) && readValue(size) && readValue(part));
SubFile::Type tt = SubFile::type(type);
SubFile::Type tt = tileType(type);
QString fn(QByteArray(name, sizeof(name)));
if (SubFile::isTileFile(tt)) {
if (VectorTile::isTileFile(tt)) {
VectorTile *tile;
QMap<QString, VectorTile*>::iterator it = tileMap.find(fn);
if (it == tileMap.end()) {
TileMap::const_iterator it = tileMap.find(fn);
if (it == tileMap.constEnd()) {
tile = new VectorTile();
tileMap.insert(fn, tile);
} else
@ -131,21 +152,31 @@ IMG::IMG(const QString &fileName)
}
// Create tile tree
for (QMap<QString, VectorTile*>::iterator it = tileMap.begin();
it != tileMap.end(); ++it) {
CHECK((*it)->init());
for (TileMap::const_iterator it = tileMap.constBegin();
it != tileMap.constEnd(); ++it) {
VectorTile *tile = it.value();
if (!tile->init()) {
qWarning("%s: %s: Invalid map tile", qPrintable(_file.fileName()),
qPrintable(it.key()));
delete tile;
continue;
}
double min[2], max[2];
min[0] = (*it)->bounds().left();
min[1] = (*it)->bounds().bottom();
max[0] = (*it)->bounds().right();
max[1] = (*it)->bounds().top();
_tileTree.Insert(min, max, *it);
min[0] = tile->bounds().left();
min[1] = tile->bounds().bottom();
max[0] = tile->bounds().right();
max[1] = tile->bounds().top();
_tileTree.Insert(min, max, tile);
_bounds |= (*it)->bounds();
_bounds |= tile->bounds();
}
_valid = true;
if (!_tileTree.Count())
_errorString = "No usable map tile found";
else
_valid = true;
}
IMG::~IMG()
@ -166,7 +197,7 @@ void IMG::load()
_style = new Style(_typ);
else {
QFile typFile(ProgramPaths::typFile());
if (typFile.exists()) {
if (typFile.open(QIODevice::ReadOnly)) {
SubFile typ(&typFile);
_style = new Style(&typ);
} else

View File

@ -1,14 +1,12 @@
#ifndef IMG_H
#define IMG_H
#include <QRect>
#include <QFile>
#include <QByteArray>
#include <QCache>
#include <QDebug>
#include "common/rtree.h"
#include "common/rectc.h"
#include "common/range.h"
#include "style.h"
#include "label.h"
@ -71,7 +69,6 @@ private:
bool readBlock(int blockNum, QByteArray &data);
qint64 read(char *data, qint64 maxSize);
template<class T> bool readValue(T &val);
bool init();
QFile _file;
quint8 _key;

View File

@ -56,10 +56,10 @@ bool LBLFile::init(Handle &hdl)
quint8 multiplier, poiMultiplier;
if (!(seek(hdl, _gmpOffset + 0x15) && readUInt32(hdl, _offset)
&& readUInt32(hdl, _size) && readByte(hdl, multiplier)
&& readByte(hdl, _encoding) && seek(hdl, _gmpOffset + 0x57)
&& readUInt32(hdl, _size) && readUInt8(hdl, multiplier)
&& readUInt8(hdl, _encoding) && seek(hdl, _gmpOffset + 0x57)
&& readUInt32(hdl, _poiOffset) && readUInt32(hdl, _poiSize)
&& readByte(hdl, poiMultiplier) && seek(hdl, _gmpOffset + 0xAA)
&& readUInt8(hdl, poiMultiplier) && seek(hdl, _gmpOffset + 0xAA)
&& readUInt16(hdl, codepage)))
return false;
@ -89,7 +89,7 @@ Label LBLFile::label6b(Handle &hdl, quint32 offset) const
return Label();
while (true) {
if (!(readByte(hdl, b1) && readByte(hdl, b2) && readByte(hdl, b3)))
if (!(readUInt8(hdl, b1) && readUInt8(hdl, b2) && readUInt8(hdl, b3)))
return Label();
int c[]= {b1>>2, (b1&0x3)<<4|b2>>4, (b2&0xF)<<2|b3>>6, b3&0x3F};
@ -138,7 +138,7 @@ Label LBLFile::label8b(Handle &hdl, quint32 offset) const
return Label();
while (true) {
if (!readByte(hdl, c))
if (!readUInt8(hdl, c))
return Label();
if (!c || c == 0x1d)
break;

View File

@ -3,9 +3,11 @@
bool NETFile::init(Handle &hdl)
{
quint8 multiplier;
quint16 hdrLen;
if (!(seek(hdl, _gmpOffset + 0x15) && readUInt32(hdl, _offset)
&& readUInt32(hdl, _size) && readByte(hdl, multiplier)))
if (!(seek(hdl, _gmpOffset) && readUInt16(hdl, hdrLen)
&& seek(hdl, _gmpOffset + 0x15) && readUInt32(hdl, _offset)
&& readUInt32(hdl, _size) && readUInt8(hdl, multiplier)))
return false;
_multiplier = 1<<multiplier;

View File

@ -15,8 +15,7 @@ public:
private:
bool init(Handle &hdl);
quint32 _offset;
quint32 _size;
quint32 _offset, _size;
quint8 _multiplier;
};

View File

@ -1,123 +1,81 @@
#include <cstring>
#include "common/rectc.h"
#include "common/garmin.h"
#include "deltastream.h"
#include "huffmanstream.h"
#include "lblfile.h"
#include "netfile.h"
#include "rgnfile.h"
static int bitSize(quint8 baseSize, bool variableSign, bool extraBit)
bool RGNFile::skipClassFields(Handle &hdl) const
{
int bits = 2;
if (baseSize <= 9)
bits += baseSize;
else
bits += 2 * baseSize - 9;
quint8 flags;
quint32 rs;
if (variableSign)
bits++;
if (extraBit)
bits++;
if (!readUInt8(hdl, flags))
return false;
return bits;
}
bool RGNFile::BitStream::read(int bits, quint32 &val)
{
val = 0;
for (int pos = 0; pos < bits; ) {
if (!_remaining) {
if (!_length || !_file.readByte(_hdl, _data))
return false;
_remaining = 8;
_length--;
}
quint32 get = bits - pos;
if (get >= _remaining) {
val |= _data << pos;
pos += _remaining;
_remaining = 0;
} else {
quint32 mask = (1<<get) - 1;
val |= (_data & mask)<<pos;
_data >>= get;
_remaining -= get;
switch (flags >> 5) {
case 4:
rs = 1;
break;
case 5:
rs = 2;
break;
case 6:
rs = 3;
break;
case 7:
if (!readVUInt32(hdl, rs))
return false;
break;
default:
rs = 0;
break;
}
}
return true;
return seek(hdl, hdl.pos + rs);
}
RGNFile::DeltaStream::DeltaStream(const SubFile &file, Handle &hdl,
quint32 length, quint8 info, bool extraBit, bool extended)
: BitStream(file, hdl, length), _readBits(0xFFFFFFFF)
bool RGNFile::skipLclFields(Handle &hdl, const quint32 flags[3],
Segment::Type type) const
{
_extraBit = extraBit ? 1 : 0;
if (!(sign(_lonSign) && sign(_latSign)))
return;
if (extended) {
quint32 b;
if (!read(1, b))
return;
}
_lonBits = bitSize(info & 0x0F, !_lonSign, extraBit);
_latBits = bitSize(info >> 4, !_latSign, false);
_readBits = _lonBits + _latBits;
}
quint32 bitfield = 0xFFFFFFFF;
bool RGNFile::DeltaStream::readDelta(int bits, int sign, int extraBit,
qint32 &delta)
{
quint32 value;
if (!read(bits, value))
return false;
value >>= extraBit;
if (!sign) {
qint32 signMask = 1 << (bits - extraBit - 1);
if (value & signMask) {
qint32 comp = value ^ signMask;
if (comp)
delta = comp - signMask;
else {
qint32 other;
if (!readDelta(bits - extraBit, sign, false, other))
return false;
if (other < 0)
delta = 1 - signMask + other;
else
delta = signMask - 1 + other;
}
} else {
delta = value;
}
} else {
delta = value * sign;
}
return true;
}
bool RGNFile::DeltaStream::sign(int &val)
{
quint32 bit;
val = 0;
if (!read(1, bit))
return false;
if (bit) {
if (!read(1, bit))
if (flags[0] & 0x20000000)
if (!readVBitfield32(hdl, bitfield))
return false;
val = bit ? -1 : 1;
for (int i = 0; i < 29; i++) {
if ((flags[0] >> i) & 1) {
if (bitfield & 1) {
quint32 m = flags[(i >> 4) + 1] >> ((i * 2) & 0x1e) & 3;
switch (i) {
case 5:
if (m == 1 && type == Segment::Point) {
quint16 u16;
if (!readUInt16(hdl, u16))
return false;
}
break;
default:
break;
}
}
bitfield >>= 1;
}
}
return true;
}
void RGNFile::clearFlags()
{
memset(_polygonsFlags, 0, sizeof(_polygonsFlags));
memset(_linesFlags, 0, sizeof(_linesFlags));
memset(_pointsFlags, 0, sizeof(_pointsFlags));
}
bool RGNFile::init(Handle &hdl)
{
@ -128,25 +86,29 @@ bool RGNFile::init(Handle &hdl)
&& readUInt32(hdl, _size)))
return false;
if (hdrLen >= 0x5D) {
if (hdrLen >= 0x68) {
if (!(readUInt32(hdl, _polygonsOffset) && readUInt32(hdl, _polygonsSize)
&& seek(hdl, _gmpOffset + 0x39) && readUInt32(hdl, _linesOffset)
&& readUInt32(hdl, _linesSize) && seek(hdl, _gmpOffset + 0x55)
&& readUInt32(hdl, _pointsOffset) && readUInt32(hdl, _pointsSize)))
&& seek(hdl, _gmpOffset + 0x2D) && readUInt32(hdl, _polygonsFlags[0])
&& readUInt32(hdl, _polygonsFlags[1]) && readUInt32(hdl, _polygonsFlags[2])
&& readUInt32(hdl, _linesOffset) && readUInt32(hdl, _linesSize)
&& seek(hdl, _gmpOffset + 0x49) && readUInt32(hdl, _linesFlags[0])
&& readUInt32(hdl, _linesFlags[1]) && readUInt32(hdl, _linesFlags[2])
&& readUInt32(hdl, _pointsOffset) && readUInt32(hdl, _pointsSize)
&& seek(hdl, _gmpOffset + 0x65) && readUInt32(hdl, _pointsFlags[0])
&& readUInt32(hdl, _pointsFlags[1]) && readUInt32(hdl, _pointsFlags[2])))
return false;
}
if (hdrLen >= 0x7D) {
quint32 dictOffset, dictSize;
quint32 dictOffset, dictSize, info;
if (!(seek(hdl, _gmpOffset + 0x71) && readUInt32(hdl, dictOffset)
&& readUInt32(hdl, dictSize)))
&& readUInt32(hdl, dictSize) && readUInt32(hdl, info)))
return false;
// NT maps
if (dictSize || dictOffset) {
qWarning("NT compression not supported");
return false;
}
if (dictSize && dictOffset && (info & 0x1E))
if (!_huffmanTable.load(*this, hdl, dictOffset, dictSize,
((info >> 1) & 0xF) - 1))
return false;
}
_init = true;
@ -158,9 +120,6 @@ bool RGNFile::polyObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
const Segment &segment, LBLFile *lbl, Handle &lblHdl, NETFile *net,
Handle &netHdl, QList<IMG::Poly> *polys) const
{
if (segment.start() == segment.end())
return true;
if (!seek(hdl, segment.start()))
return false;
@ -172,18 +131,18 @@ bool RGNFile::polyObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
while (hdl.pos < (int)segment.end()) {
IMG::Poly poly;
if (!(readByte(hdl, type) && readUInt24(hdl, labelPtr)
if (!(readUInt8(hdl, type) && readUInt24(hdl, labelPtr)
&& readInt16(hdl, lon) && readInt16(hdl, lat)))
return false;
if (type & 0x80) {
if (!readUInt16(hdl, len))
return false;
} else {
if (!readByte(hdl, len8))
if (!readUInt8(hdl, len8))
return false;
len = len8;
}
if (!readByte(hdl, bitstreamInfo))
if (!readUInt8(hdl, bitstreamInfo))
return false;
poly.type = (segment.type() == Segment::Polygon)
@ -230,11 +189,11 @@ bool RGNFile::polyObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
}
bool RGNFile::extPolyObjects(const RectC &rect, Handle &hdl,
const SubDiv *subdiv, const Segment &segment, LBLFile *lbl, Handle &lblHdl,
QList<IMG::Poly> *polys) const
const SubDiv *subdiv, quint32 shift, const Segment &segment, LBLFile *lbl,
Handle &lblHdl, QList<IMG::Poly> *polys, bool line) const
{
quint32 len, labelPtr = 0;
quint8 type, subtype, bitstreamInfo;
quint32 labelPtr, len;
quint8 type, subtype;
qint16 lon, lat;
@ -243,43 +202,78 @@ bool RGNFile::extPolyObjects(const RectC &rect, Handle &hdl,
while (hdl.pos < (int)segment.end()) {
IMG::Poly poly;
QPoint pos;
RectC br;
if (!(readByte(hdl, type) && readByte(hdl, subtype)
if (!(readUInt8(hdl, type) && readUInt8(hdl, subtype)
&& readInt16(hdl, lon) && readInt16(hdl, lat)
&& readVUInt32(hdl, len) && readByte(hdl, bitstreamInfo)))
&& readVUInt32(hdl, len)))
return false;
if (subtype & 0x80) {
qWarning("Polygons/lines with extra bytes not supported");
return false;
}
poly.type = 0x10000 | (quint16(type)<<8) | (subtype & 0x1F);
labelPtr = 0;
poly.type = 0x10000 + (quint16(type) << 8) + (subtype & 0x1F);
if (!_huffmanTable.isNull()) {
pos = QPoint((subdiv->lon()<<8) + ((qint32)lon<<(32-subdiv->bits())),
(subdiv->lat()<<8) + ((qint32)lat<<(32-subdiv->bits())));
QPoint pos(subdiv->lon() + ((qint32)lon<<(24-subdiv->bits())),
subdiv->lat() + ((qint32)lat<<(24-subdiv->bits())));
Coordinates c(toWGS24(pos.x()), toWGS24(pos.y()));
RectC br(c, c);
poly.points.append(QPointF(c.lon(), c.lat()));
qint32 lonDelta, latDelta;
HuffmanStream stream(*this, hdl, len, _huffmanTable, line);
qint32 lonDelta, latDelta;
DeltaStream stream(*this, hdl, len - 1, bitstreamInfo, false, true);
while (stream.readNext(lonDelta, latDelta)) {
pos.rx() += lonDelta<<(24-subdiv->bits());
pos.ry() += latDelta<<(24-subdiv->bits());
Coordinates c(toWGS24(pos.x()), toWGS24(pos.y()));
if (shift) {
if (!stream.readOffset(lonDelta, latDelta))
return false;
pos = QPoint(pos.x() | lonDelta<<(32-subdiv->bits()-shift),
pos.y() | latDelta<<(32-subdiv->bits()-shift));
}
Coordinates c(toWGS32(pos.x()), toWGS32(pos.y()));
br = RectC(c, c);
poly.points.append(QPointF(c.lon(), c.lat()));
br = br.united(c);
}
if (!(stream.atEnd() && stream.flush()))
return false;
if ((subtype & 0x20)) {
if (!readUInt24(hdl, labelPtr))
while (stream.readNext(lonDelta, latDelta)) {
pos.rx() += lonDelta<<(32-subdiv->bits()-shift);
pos.ry() += latDelta<<(32-subdiv->bits()-shift);
Coordinates c(toWGS32(pos.x()), toWGS32(pos.y()));
poly.points.append(QPointF(c.lon(), c.lat()));
br = br.united(c);
}
if (!(stream.atEnd() && stream.flush()))
return false;
} else
labelPtr = 0;
} else {
pos = QPoint(subdiv->lon() + ((qint32)lon<<(24-subdiv->bits())),
subdiv->lat() + ((qint32)lat<<(24-subdiv->bits())));
Coordinates c(toWGS24(pos.x()), toWGS24(pos.y()));
br = RectC(c, c);
poly.points.append(QPointF(c.lon(), c.lat()));
quint8 bitstreamInfo;
if (!readUInt8(hdl, bitstreamInfo))
return false;
qint32 lonDelta, latDelta;
DeltaStream stream(*this, hdl, len - 1, bitstreamInfo, false, true);
while (stream.readNext(lonDelta, latDelta)) {
pos.rx() += lonDelta<<(24-subdiv->bits());
pos.ry() += latDelta<<(24-subdiv->bits());
Coordinates c(toWGS24(pos.x()), toWGS24(pos.y()));
poly.points.append(QPointF(c.lon(), c.lat()));
br = br.united(c);
}
if (!(stream.atEnd() && stream.flush()))
return false;
}
if (subtype & 0x20 && !readUInt24(hdl, labelPtr))
return false;
if (subtype & 0x80 && !skipClassFields(hdl))
return false;
if (subtype & 0x40 && !skipLclFields(hdl, line ? _linesFlags
: _polygonsFlags, segment.type()))
return false;
if (!rect.intersects(br))
continue;
@ -307,11 +301,11 @@ bool RGNFile::pointObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
while (hdl.pos < (int)segment.end()) {
IMG::Point point;
if (!(readByte(hdl, type) && readUInt24(hdl, labelPtr)
if (!(readUInt8(hdl, type) && readUInt24(hdl, labelPtr)
&& readInt16(hdl, lon) && readInt16(hdl, lat)))
return false;
if (labelPtr & 0x800000) {
if (!readByte(hdl, subtype))
if (!readUInt8(hdl, subtype))
return false;
} else
subtype = 0;
@ -340,8 +334,8 @@ bool RGNFile::pointObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
}
bool RGNFile::extPointObjects(const RectC &rect, Handle &hdl,
const SubDiv *subdiv, const Segment &segment, LBLFile *lbl, Handle &lblHdl,
QList<IMG::Point> *points) const
const SubDiv *subdiv, const Segment &segment, LBLFile *lbl,
Handle &lblHdl, QList<IMG::Point> *points) const
{
quint8 type, subtype;
qint16 lon, lat;
@ -353,97 +347,104 @@ bool RGNFile::extPointObjects(const RectC &rect, Handle &hdl,
while (hdl.pos < (int)segment.end()) {
IMG::Point point;
if (!(readByte(hdl, type) && readByte(hdl, subtype)
if (!(readUInt8(hdl, type) && readUInt8(hdl, subtype)
&& readInt16(hdl, lon) && readInt16(hdl, lat)))
return false;
if (subtype & 0x80) {
qWarning("Points with extra bytes not supported");
return false;
}
point.type = 0x10000 | (((quint32)type)<<8) | (subtype & 0x1F);
qint16 lonOffset = lon<<(24-subdiv->bits());
qint16 latOffset = lat<<(24-subdiv->bits());
point.coordinates = Coordinates(toWGS24(subdiv->lon() + lonOffset),
toWGS24(subdiv->lat() + latOffset));
labelPtr = 0;
if (subtype & 0x20) {
if (!readUInt24(hdl, labelPtr))
return false;
point.poi = labelPtr & 0x400000;
if (lbl && (labelPtr & 0x3FFFFF)) {
point.label = lbl->label(lblHdl, labelPtr & 0x3FFFFF, point.poi);
point.id = ((quint64)point.type)<<40
| ((quint64)lbl->offset())<<24 | (labelPtr & 0x3FFFFF);
}
if (subtype & 0x20 && !readUInt24(hdl, labelPtr))
return false;
if (subtype & 0x80 && !skipClassFields(hdl))
return false;
if (subtype & 0x40 && !skipLclFields(hdl, _pointsFlags, segment.type()))
return false;
if (!rect.contains(point.coordinates))
continue;
point.poi = labelPtr & 0x400000;
if (lbl && (labelPtr & 0x3FFFFF)) {
point.label = lbl->label(lblHdl, labelPtr & 0x3FFFFF, point.poi);
point.id = ((quint64)point.type)<<40
| ((quint64)lbl->offset())<<24 | (labelPtr & 0x3FFFFF);
}
if (rect.contains(point.coordinates))
points->append(point);
points->append(point);
}
return true;
}
void RGNFile::objects(const RectC &rect, const SubDiv *subdiv, LBLFile *lbl,
NETFile *net, QList<IMG::Poly> *polygons, QList<IMG::Poly> *lines,
QList<IMG::Point> *points)
void RGNFile::objects(const RectC &rect, const SubDiv *subdiv,
LBLFile *lbl, NETFile *net, QList<IMG::Poly> *polygons,
QList<IMG::Poly> *lines, QList<IMG::Point> *points)
{
Handle rgnHdl, lblHdl, netHdl;
if (!_init && !init(rgnHdl))
return;
QVector<RGNFile::Segment> seg(segments(rgnHdl, subdiv));
QVector<Segment> seg(segments(rgnHdl, subdiv));
for (int i = 0; i < seg.size(); i++) {
switch (seg.at(i).type()) {
const Segment &segment = seg.at(i);
if (segment.start() == segment.end())
continue;
switch (segment.type()) {
case Segment::Point:
case Segment::IndexedPoint:
if (points)
pointObjects(rect, rgnHdl, subdiv, seg.at(i), lbl, lblHdl,
pointObjects(rect, rgnHdl, subdiv, segment, lbl, lblHdl,
points);
break;
case Segment::Line:
if (lines)
polyObjects(rect, rgnHdl, subdiv, seg.at(i), lbl, lblHdl,
net, netHdl, lines);
polyObjects(rect, rgnHdl, subdiv, segment, lbl, lblHdl, net,
netHdl, lines);
break;
case Segment::Polygon:
if (polygons)
polyObjects(rect, rgnHdl, subdiv, seg.at(i), lbl, lblHdl,
net, netHdl, polygons);
polyObjects(rect, rgnHdl, subdiv, segment, lbl, lblHdl, net,
netHdl, polygons);
break;
case Segment::RoadReference:
break;
}
}
}
void RGNFile::extObjects(const RectC &rect, const SubDiv *subdiv, LBLFile *lbl,
QList<IMG::Poly> *polygons, QList<IMG::Poly> *lines,
void RGNFile::extObjects(const RectC &rect, const SubDiv *subdiv, quint32 shift,
LBLFile *lbl, QList<IMG::Poly> *polygons, QList<IMG::Poly> *lines,
QList<IMG::Point> *points)
{
Handle rgnHdl, lblHdl;
if (!_init && !init(rgnHdl))
return;
if (polygons && subdiv->polygonsOffset() != subdiv->polygonsEnd()) {
quint32 start = _polygonsOffset + subdiv->polygonsOffset();
quint32 end = subdiv->polygonsEnd()
? _polygonsOffset + subdiv->polygonsEnd()
: _polygonsOffset + _polygonsSize;
extPolyObjects(rect, rgnHdl, subdiv, Segment(start, end,
Segment::Polygon), lbl, lblHdl, polygons);
extPolyObjects(rect, rgnHdl, subdiv, shift, Segment(start, end,
Segment::Polygon), lbl, lblHdl, polygons, false);
}
if (lines && subdiv->linesOffset() != subdiv->linesEnd()) {
quint32 start = _linesOffset + subdiv->linesOffset();
quint32 end = subdiv->linesEnd()
? _linesOffset + subdiv->linesEnd()
: _linesOffset + _linesSize;
extPolyObjects(rect, rgnHdl, subdiv, Segment(start, end, Segment::Line),
lbl, lblHdl, lines);
extPolyObjects(rect, rgnHdl, subdiv, shift, Segment(start, end,
Segment::Line), lbl, lblHdl, lines, true);
}
if (points && subdiv->pointsOffset() != subdiv->pointsEnd()) {
quint32 start = _pointsOffset + subdiv->pointsOffset();
@ -458,13 +459,13 @@ void RGNFile::extObjects(const RectC &rect, const SubDiv *subdiv, LBLFile *lbl,
QVector<RGNFile::Segment> RGNFile::segments(Handle &hdl, const SubDiv *subdiv)
const
{
if (subdiv->offset() == subdiv->end() || !(subdiv->objects() & 0xF0))
if (subdiv->offset() == subdiv->end() || !(subdiv->objects() & 0x1F))
return QVector<Segment>();
quint32 offset = _offset + subdiv->offset();
int no = 0;
for (quint8 mask = 0x10; mask; mask <<= 1)
for (quint8 mask = 0x1; mask <= 0x10; mask <<= 1)
if (subdiv->objects() & mask)
no++;
@ -476,7 +477,7 @@ QVector<RGNFile::Segment> RGNFile::segments(Handle &hdl, const SubDiv *subdiv)
quint16 po;
int cnt = 0;
for (quint8 mask = 0x10; mask; mask <<= 1) {
for (quint16 mask = 0x1; mask <= 0x10; mask <<= 1) {
if (subdiv->objects() & mask) {
if (cnt) {
if (!readUInt16(hdl, po))
@ -498,8 +499,28 @@ QVector<RGNFile::Segment> RGNFile::segments(Handle &hdl, const SubDiv *subdiv)
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const RGNFile::Segment &segment)
{
QString type;
switch (segment.type()) {
case RGNFile::Segment::Point:
type = "Point";
break;
case RGNFile::Segment::IndexedPoint:
type = "IndexedPoint";
break;
case RGNFile::Segment::Line:
type = "Line";
break;
case RGNFile::Segment::Polygon:
type = "Polygon";
break;
case RGNFile::Segment::RoadReference:
type = "RoadReference";
break;
}
dbg.nospace() << "Segment(" << segment.start() << ", " << segment.end()
<< ", " << segment.type() << ")";
- segment.start() << ", " << type << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG

View File

@ -4,6 +4,7 @@
#include "img.h"
#include "subfile.h"
#include "subdiv.h"
#include "huffmantable.h"
class LBLFile;
class NETFile;
@ -14,26 +15,28 @@ public:
RGNFile(IMG *img)
: SubFile(img), _offset(0), _size(0), _polygonsOffset(0),
_polygonsSize(0), _linesOffset(0), _linesSize(0), _pointsOffset(0),
_pointsSize(0), _init(false) {}
_pointsSize(0), _init(false) {clearFlags();}
RGNFile(SubFile *gmp, quint32 offset) : SubFile(gmp, offset), _offset(0),
_size(0), _polygonsOffset(0), _polygonsSize(0), _linesOffset(0),
_linesSize(0), _pointsOffset(0), _pointsSize(0), _init(false) {}
_linesSize(0), _pointsOffset(0), _pointsSize(0), _init(false)
{clearFlags();}
void objects(const RectC &rect, const SubDiv *subdiv, LBLFile *lbl,
NETFile *net, QList<IMG::Poly> *polygons, QList<IMG::Poly> *lines,
QList<IMG::Point> *points);
void extObjects(const RectC &rect, const SubDiv *subdiv, LBLFile *lbl,
QList<IMG::Poly> *polygons, QList<IMG::Poly> *lines,
void objects(const RectC &rect, const SubDiv *subdiv,
LBLFile *lbl, NETFile *net, QList<IMG::Poly> *polygons,
QList<IMG::Poly> *lines, QList<IMG::Point> *points);
void extObjects(const RectC &rect, const SubDiv *subdiv, quint32 shift,
LBLFile *lbl, QList<IMG::Poly> *polygons, QList<IMG::Poly> *lines,
QList<IMG::Point> *points);
private:
class Segment {
public:
enum Type {
Point = 0x10,
IndexedPoint = 0x20,
Line = 0x40,
Polygon = 0x80
Point = 0x1,
IndexedPoint = 0x2,
Line = 0x4,
Polygon = 0x8,
RoadReference = 0x10
};
Segment() : _start(0), _end(0), _type(Point) {}
@ -54,45 +57,6 @@ private:
Type _type;
};
class BitStream {
public:
BitStream(const SubFile &file, Handle &hdl, quint32 length)
: _file(file), _hdl(hdl), _length(length), _remaining(0) {}
bool read(int bits, quint32 &val);
bool flush() {return _file.seek(_hdl, _hdl.pos + _length);}
quint32 bitsAvailable() const {return _length * 8 + _remaining;}
private:
const SubFile &_file;
Handle &_hdl;
quint32 _length, _remaining;
quint8 _data;
};
class DeltaStream : public BitStream {
public:
DeltaStream(const SubFile &file, Handle &hdl, quint32 length,
quint8 info, bool extraBit, bool extended);
bool readNext(qint32 &lonDelta, qint32 &latDelta)
{
return hasNext()
? (readDelta(_lonBits, _lonSign, _extraBit, lonDelta)
&& readDelta(_latBits, _latSign, false, latDelta))
: false;
}
bool atEnd() const {return (_readBits != 0xFFFFFFFF && !hasNext());}
private:
bool hasNext() const {return bitsAvailable() >= _readBits;}
bool sign(int &val);
bool readDelta(int bits, int sign, int extraBit, qint32 &delta);
int _lonSign, _latSign, _extraBit;
quint32 _lonBits, _latBits, _readBits;
};
bool init(Handle &hdl);
QVector<Segment> segments(Handle &hdl, const SubDiv *subdiv) const;
@ -103,12 +67,18 @@ private:
const Segment &segment, LBLFile *lbl, Handle &lblHdl,
QList<IMG::Point> *points) const;
bool extPolyObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
const Segment &segment, LBLFile *lbl, Handle &lblHdl,
QList<IMG::Poly> *polys) const;
quint32 shift, const Segment &segment, LBLFile *lbl, Handle &lblHdl,
QList<IMG::Poly> *polys, bool line) const;
bool extPointObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
const Segment &segment, LBLFile *lbl, Handle &lblHdl,
QList<IMG::Point> *points) const;
void clearFlags();
bool skipClassFields(Handle &hdl) const;
bool skipLclFields(Handle &hdl, const quint32 flags[3],
Segment::Type type) const;
friend QDebug operator<<(QDebug dbg, const RGNFile::Segment &segment);
quint32 _offset;
@ -116,10 +86,15 @@ private:
quint32 _polygonsOffset;
quint32 _polygonsSize;
quint32 _polygonsFlags[3];
quint32 _linesOffset;
quint32 _linesSize;
quint32 _linesFlags[3];
quint32 _pointsOffset;
quint32 _pointsSize;
quint32 _pointsFlags[3];
HuffmanTable _huffmanTable;
bool _init;
};

View File

@ -1,72 +1,69 @@
#include <QImage>
#include "style.h"
#define TYPE(t) ((t)<<8)
void Style::defaultPolygonStyle()
{
_polygons[TYPE(0x01)] = Style::Polygon(QBrush("#dfd3b5"));
_polygons[TYPE(0x02)] = Style::Polygon(QBrush("#dfd3b5"));
_polygons[TYPE(0x03)] = Style::Polygon(QBrush("#dfd3b5"));
_polygons[TYPE(0x04)] = Style::Polygon(QBrush("#ff4040", Qt::BDiagPattern));
_polygons[TYPE(0x05)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x06)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x07)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x08)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x09)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0a)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0b)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0c)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0d)] = Style::Polygon(QBrush("#f8e3be"));
_polygons[TYPE(0x0e)] = Style::Polygon(QBrush("#ffffff"));
_polygons[TYPE(0x0f)] = Style::Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x10)] = Style::Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x11)] = Style::Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x12)] = Style::Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x13)] = Style::Polygon(QBrush("#dbd0b6"),
_polygons[TYPE(0x01)] = Polygon(QBrush("#dfd3b5"));
_polygons[TYPE(0x02)] = Polygon(QBrush("#dfd3b5"));
_polygons[TYPE(0x03)] = Polygon(QBrush("#dfd3b5"));
_polygons[TYPE(0x04)] = Polygon(QBrush("#ff4040", Qt::BDiagPattern));
_polygons[TYPE(0x05)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x06)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x07)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x08)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x09)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0a)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0b)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0c)] = Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x0d)] = Polygon(QBrush("#f8e3be"));
_polygons[TYPE(0x0e)] = Polygon(QBrush("#ffffff"));
_polygons[TYPE(0x0f)] = Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x10)] = Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x11)] = Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x12)] = Polygon(QBrush("#e6e2d9"));
_polygons[TYPE(0x13)] = Polygon(QBrush("#dbd0b6"),
QPen(QColor("#cdccc4"), 1));
_polygons[TYPE(0x14)] = Style::Polygon(QBrush(QColor("#9ac269"),
_polygons[TYPE(0x14)] = Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x15)] = Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x16)] = Polygon(QBrush(QColor("#9ac269"),
Qt::BDiagPattern));
_polygons[TYPE(0x15)] = Style::Polygon(QBrush(QColor("#9ac269"),
Qt::BDiagPattern));
_polygons[TYPE(0x16)] = Style::Polygon(QBrush(QColor("#9ac269"),
Qt::BDiagPattern));
_polygons[TYPE(0x17)] = Style::Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x18)] = Style::Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x19)] = Style::Polygon(QBrush("#d6d4ce"));
_polygons[TYPE(0x1a)] = Style::Polygon(QBrush("#000000", Qt::Dense6Pattern),
_polygons[TYPE(0x17)] = Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x18)] = Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x19)] = Polygon(QBrush("#e3edc6"), QPen("#c9d3a5"));
_polygons[TYPE(0x1a)] = Polygon(QBrush("#000000", Qt::Dense6Pattern),
QPen(QColor("#cdccc4"), 1));
_polygons[TYPE(0x1e)] = Style::Polygon(QBrush(QColor("#9ac269"),
_polygons[TYPE(0x1e)] = Polygon(QBrush(QColor("#9ac269"),
Qt::BDiagPattern));
_polygons[TYPE(0x1f)] = Style::Polygon(QBrush(QColor("#9ac269"),
_polygons[TYPE(0x1f)] = Polygon(QBrush(QColor("#9ac269"),
Qt::BDiagPattern));
_polygons[TYPE(0x28)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x29)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x32)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3b)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3c)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3d)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3e)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3f)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x40)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x41)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x42)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x43)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x44)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x45)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x46)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x47)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x48)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x49)] = Style::Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x4b)] = Style::Polygon(QBrush("#f1f0e5"), QPen("#f1f0e5"));
_polygons[TYPE(0x4a)] = Style::Polygon(QBrush("#f1f0e5"), QPen("#f1f0e5"));
_polygons[TYPE(0x4c)] = Style::Polygon(QBrush("#9fc4e1", Qt::Dense6Pattern));
_polygons[TYPE(0x4d)] = Style::Polygon(QBrush("#ddf1fd"));
_polygons[TYPE(0x4e)] = Style::Polygon(QBrush("#e3edc1"));
_polygons[TYPE(0x4f)] = Style::Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x50)] = Style::Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x51)] = Style::Polygon(QBrush("#9fc4e1", Qt::Dense4Pattern));
_polygons[TYPE(0x52)] = Style::Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x28)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x29)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x32)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3b)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3c)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3d)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3e)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x3f)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x40)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x41)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x42)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x43)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x44)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x45)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x46)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x47)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x48)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x49)] = Polygon(QBrush("#9fc4e1"));
_polygons[TYPE(0x4b)] = Polygon(QBrush("#f1f0e5"), QPen("#f1f0e5"));
_polygons[TYPE(0x4a)] = Polygon(QBrush("#f1f0e5"), QPen("#f1f0e5"));
_polygons[TYPE(0x4c)] = Polygon(QBrush("#9fc4e1", Qt::Dense6Pattern));
_polygons[TYPE(0x4d)] = Polygon(QBrush("#ddf1fd"));
_polygons[TYPE(0x4e)] = Polygon(QBrush("#e3edc1"));
_polygons[TYPE(0x4f)] = Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x50)] = Polygon(QBrush("#d4ebb8"));
_polygons[TYPE(0x51)] = Polygon(QBrush("#9fc4e1", Qt::Dense4Pattern));
_polygons[TYPE(0x52)] = Polygon(QBrush("#d4ebb8"));
_drawOrder << TYPE(0x4b) << TYPE(0x4a) << TYPE(0x01) << TYPE(0x02)
<< TYPE(0x03) << TYPE(0x17) << TYPE(0x18) << TYPE(0x19) << TYPE(0x1a)
@ -89,71 +86,69 @@ void Style::defaultLineStyle()
QPen rr(QColor("#717171"), 3, Qt::CustomDashLine);
rr.setDashPattern(pattern);
_lines[TYPE(0x01)] = Style::Line(QPen(QColor("#9bd772"), 2, Qt::SolidLine),
_lines[TYPE(0x01)] = Line(QPen(QColor("#9bd772"), 2, Qt::SolidLine),
QPen(QColor("#72a35a"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x02)] = Style::Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
_lines[TYPE(0x02)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
QPen(QColor("#e8a541"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x03)] = Style::Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
_lines[TYPE(0x03)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
QPen(QColor("#e8a541"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x04)] = Style::Line(QPen(QColor("#faef75"), 3, Qt::SolidLine),
_lines[TYPE(0x04)] = Line(QPen(QColor("#faef75"), 3, Qt::SolidLine),
QPen(QColor("#dbd27b"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x05)] = Style::Line(QPen(QColor("#ffffff"), 3, Qt::SolidLine),
_lines[TYPE(0x05)] = Line(QPen(QColor("#ffffff"), 3, Qt::SolidLine),
QPen(QColor("#d5cdc0"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x06)] = Style::Line(QPen(QColor("#ffffff"), 3, Qt::SolidLine),
_lines[TYPE(0x06)] = Line(QPen(QColor("#ffffff"), 3, Qt::SolidLine),
QPen(QColor("#d5cdc0"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x07)] = Style::Line(QPen(QColor("#ffffff"), 2, Qt::SolidLine),
_lines[TYPE(0x07)] = Line(QPen(QColor("#ffffff"), 2, Qt::SolidLine),
QPen(QColor("#d5cdc0"), 4, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x08)] = Style::Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
_lines[TYPE(0x08)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
QPen(QColor("#e8a541"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x09)] = Style::Line(QPen(QColor("#9bd772"), 2, Qt::SolidLine),
_lines[TYPE(0x09)] = Line(QPen(QColor("#9bd772"), 2, Qt::SolidLine),
QPen(QColor("#72a35a"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x0a)] = Style::Line(QPen(QColor("#aba083"), 1, Qt::DashLine));
_lines[TYPE(0x0b)] = Style::Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
_lines[TYPE(0x0a)] = Line(QPen(QColor("#aba083"), 1, Qt::DashLine));
_lines[TYPE(0x0b)] = Line(QPen(QColor("#ffcc78"), 2, Qt::SolidLine),
QPen(QColor("#e8a541"), 6, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x0c)] = Style::Line(QPen(QColor("#ffffff"), 3, Qt::SolidLine),
_lines[TYPE(0x0c)] = Line(QPen(QColor("#ffffff"), 3, Qt::SolidLine),
QPen(QColor("#d5cdc0"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x14)] = Style::Line(rr, QPen(Qt::white, 3, Qt::SolidLine,
_lines[TYPE(0x14)] = Line(rr, QPen(Qt::white, 3, Qt::SolidLine,
Qt::RoundCap, Qt::RoundJoin));
_lines[TYPE(0x16)] = Style::Line(QPen(QColor("#aba083"), 1, Qt::DotLine));
_lines[TYPE(0x18)] = Style::Line(QPen(QColor("#9fc4e1"), 2, Qt::SolidLine));
_lines[TYPE(0x16)] = Line(QPen(QColor("#aba083"), 1, Qt::DotLine));
_lines[TYPE(0x18)] = Line(QPen(QColor("#9fc4e1"), 2, Qt::SolidLine));
_lines[TYPE(0x18)].setTextColor(QColor("#9fc4e1"));
//_lines[TYPE(0x1a)] = Style::Line(QPen(QColor("#7697b7"), 1, Qt::DashLine));
_lines[TYPE(0x1b)] = Style::Line(QPen(QColor("#7697b7"), 1, Qt::DashLine));
_lines[TYPE(0x1e)] = Style::Line(QPen(QColor("#505145"), 2, Qt::DashDotLine));
_lines[TYPE(0x1f)] = Style::Line(QPen(QColor("#9fc4e1"), 3, Qt::SolidLine));
//_lines[TYPE(0x1a)] = Line(QPen(QColor("#7697b7"), 1, Qt::DashLine));
_lines[TYPE(0x1b)] = Line(QPen(QColor("#7697b7"), 1, Qt::DashLine));
_lines[TYPE(0x1e)] = Line(QPen(QColor("#505145"), 2, Qt::DashDotLine));
_lines[TYPE(0x1f)] = Line(QPen(QColor("#9fc4e1"), 3, Qt::SolidLine));
_lines[TYPE(0x1f)].setTextColor(QColor("#9fc4e1"));
_lines[TYPE(0x20)] = Style::Line(QPen(QColor("#cacfc0"), 1, Qt::SolidLine));
_lines[TYPE(0x20)].setTextColor(QColor("#62695a"));
_lines[TYPE(0x20)].setTextFontSize(Style::Small);
_lines[TYPE(0x21)] = Style::Line(QPen(QColor("#cacfc0"), 1.5, Qt::SolidLine));
_lines[TYPE(0x21)].setTextColor(QColor("#62695a"));
_lines[TYPE(0x21)].setTextFontSize(Style::Small);
_lines[TYPE(0x22)] = Style::Line(QPen(QColor("#cacfc0"), 2, Qt::SolidLine));
_lines[TYPE(0x22)].setTextColor(QColor("#62695a"));
_lines[TYPE(0x22)].setTextFontSize(Style::Small);
_lines[TYPE(0x23)] = Style::Line(QPen(QColor("#55aaff"), 1, Qt::SolidLine));
_lines[TYPE(0x23)].setTextColor(QColor("#55aaff"));
_lines[TYPE(0x23)].setTextFontSize(Style::Small);
_lines[TYPE(0x24)] = Style::Line(QPen(QColor("#55aaff"), 1.5, Qt::SolidLine));
_lines[TYPE(0x24)].setTextColor(QColor("#55aaff"));
_lines[TYPE(0x24)].setTextFontSize(Style::Small);
_lines[TYPE(0x25)] = Style::Line(QPen(QColor("#55aaff"), 2, Qt::SolidLine));
_lines[TYPE(0x25)].setTextColor(QColor("#55aaff"));
_lines[TYPE(0x25)].setTextFontSize(Style::Small);
_lines[TYPE(0x26)] = Style::Line(QPen(QColor("#9fc4e1"), 2, Qt::DotLine));
_lines[TYPE(0x27)] = Style::Line(QPen(QColor("#ffffff"), 4, Qt::SolidLine),
_lines[TYPE(0x20)] = Line(QPen(QColor("#cfcfcf"), 1, Qt::SolidLine));
_lines[TYPE(0x20)].setTextFontSize(None);
_lines[TYPE(0x21)] = Line(QPen(QColor("#bfbfbf"), 1, Qt::SolidLine));
_lines[TYPE(0x21)].setTextColor(QColor("#666666"));
_lines[TYPE(0x21)].setTextFontSize(Small);
_lines[TYPE(0x22)] = Line(QPen(QColor("#afafaf"), 1, Qt::SolidLine));
_lines[TYPE(0x22)].setTextColor(QColor("#666666"));
_lines[TYPE(0x22)].setTextFontSize(Small);
_lines[TYPE(0x23)] = Line(QPen(QColor("#55aaff"), 1, Qt::SolidLine));
_lines[TYPE(0x23)].setTextFontSize(None);
_lines[TYPE(0x24)] = Line(QPen(QColor("#659aef"), 1, Qt::SolidLine));
_lines[TYPE(0x24)].setTextColor(QColor("#558adf"));
_lines[TYPE(0x24)].setTextFontSize(Small);
_lines[TYPE(0x25)] = Line(QPen(QColor("#558adf"), 1, Qt::SolidLine));
_lines[TYPE(0x25)].setTextColor(QColor("#558adf"));
_lines[TYPE(0x25)].setTextFontSize(Small);
_lines[TYPE(0x26)] = Line(QPen(QColor("#9fc4e1"), 2, Qt::DotLine));
_lines[TYPE(0x27)] = Line(QPen(QColor("#ffffff"), 4, Qt::SolidLine),
QPen(QColor("#d5cdc0"), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
//_lines[TYPE(0x28)] = Style::Line(QPen(QColor("#5a5a5a"), 1, Qt::SolidLine));
_lines[TYPE(0x29)] = Style::Line(QPen(QColor("#5a5a5a"), 1, Qt::SolidLine));
_lines[TYPE(0x29)].setTextFontSize(Style::None);
//_lines[TYPE(0x28)] = Line(QPen(QColor("#5a5a5a"), 1, Qt::SolidLine));
_lines[TYPE(0x29)] = Line(QPen(QColor("#5a5a5a"), 1, Qt::SolidLine));
_lines[TYPE(0x29)].setTextFontSize(None);
}
void Style::defaultPointStyle()
{
// Cities
_points[TYPE(0x01)].setTextFontSize(Style::Large);
_points[TYPE(0x02)].setTextFontSize(Style::Large);
_points[TYPE(0x03)].setTextFontSize(Style::Large);
_points[TYPE(0x01)].setTextFontSize(Large);
_points[TYPE(0x02)].setTextFontSize(Large);
_points[TYPE(0x03)].setTextFontSize(Large);
// POI
_points[0x2a00] = Point(QImage(":/restaurant-11.png"));
@ -294,7 +289,7 @@ static bool readBitmap(SubFile *file, SubFile::Handle &hdl, QImage &img,
for (int y = 0; y < img.height(); y++) {
for (int x = 0; x < img.width(); x += 8/bpp) {
quint8 color;
if (!file->readByte(hdl, color))
if (!file->readUInt8(hdl, color))
return false;
for (int i = 0; i < 8/bpp && x + i < img.width(); i++) {
@ -319,8 +314,8 @@ static bool readColor(SubFile *file, SubFile::Handle &hdl, QColor &color)
{
quint8 b, g, r;
if (!(file->readByte(hdl, b) && file->readByte(hdl, g)
&& file->readByte(hdl, r)))
if (!(file->readUInt8(hdl, b) && file->readUInt8(hdl, g)
&& file->readUInt8(hdl, r)))
return false;
color = qRgb(r, g, b);
@ -333,14 +328,14 @@ static bool skipLocalization(SubFile *file, SubFile::Handle &hdl)
quint8 t8;
quint16 len;
if (!file->readByte(hdl, t8))
if (!file->readUInt8(hdl, t8))
return false;
len = t8;
if (len & 0x01)
len = len >> 1;
else {
if (!file->readByte(hdl, t8))
if (!file->readUInt8(hdl, t8))
return false;
len = (((quint16)t8) << 8) | len;
len = len >> 2;
@ -361,7 +356,7 @@ bool Style::itemInfo(SubFile *file, SubFile::Handle &hdl,
if (section.arrayItemSize == 5) {
if (!(file->readUInt16(hdl, t16_1) && file->readUInt16(hdl, t16_2)
&& file->readByte(hdl, t8)))
&& file->readUInt8(hdl, t8)))
return false;
info.offset = t16_2 | (t8<<16);
} else if (section.arrayItemSize == 4) {
@ -369,7 +364,7 @@ bool Style::itemInfo(SubFile *file, SubFile::Handle &hdl,
return false;
info.offset = t16_2;
} else if (section.arrayItemSize == 3) {
if (!(file->readUInt16(hdl, t16_1) && file->readByte(hdl, t8)))
if (!(file->readUInt16(hdl, t16_1) && file->readUInt8(hdl, t8)))
return false;
info.offset = t8;
} else
@ -400,7 +395,7 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
quint8 t8, flags;
if (!(file->seek(hdl, section.offset + info.offset)
&& file->readByte(hdl, t8)))
&& file->readUInt8(hdl, t8)))
return false;
flags = t8 & 0x0F;
@ -412,14 +407,14 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
if (!(readColor(file, hdl, c1) && readColor(file, hdl, c2)
&& readColor(file, hdl, c3) && readColor(file, hdl, c4)))
return false;
_polygons[type] = Style::Polygon(QBrush(c1), QPen(c3, 2));
_polygons[type] = Polygon(QBrush(c1), QPen(c3, 2));
break;
case 0x06:
case 0x07:
if (!readColor(file, hdl, c1))
return false;
_polygons[type] = Style::Polygon(QBrush(c1));
_polygons[type] = Polygon(QBrush(c1));
break;
case 0x08:
@ -432,7 +427,7 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_polygons[type] = Style::Polygon(QBrush(img));
_polygons[type] = Polygon(QBrush(img));
break;
case 0x09:
@ -446,7 +441,7 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_polygons[type] = Style::Polygon(QBrush(img));
_polygons[type] = Polygon(QBrush(img));
break;
case 0x0B:
@ -462,7 +457,7 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_polygons[type] = Style::Polygon(QBrush(img));
_polygons[type] = Polygon(QBrush(img));
break;
case 0x0E:
@ -475,7 +470,7 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_polygons[type] = Style::Polygon(QBrush(img));
_polygons[type] = Polygon(QBrush(img));
break;
case 0x0F:
@ -488,7 +483,7 @@ bool Style::parsePolygons(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_polygons[type] = Style::Polygon(QBrush(img));
_polygons[type] = Polygon(QBrush(img));
break;
default:
@ -516,7 +511,7 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
quint8 t8_1, t8_2, flags, rows;
if (!(file->seek(hdl, section.offset + info.offset)
&& file->readByte(hdl, t8_1) && file->readByte(hdl, t8_2)))
&& file->readUInt8(hdl, t8_1) && file->readUInt8(hdl, t8_2)))
return false;
flags = t8_1 & 0x07;
rows = t8_1 >> 3;
@ -539,16 +534,16 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_lines[type] = Style::Line(img);
_lines[type] = Line(img);
} else {
if (!(file->readByte(hdl, w1) && file->readByte(hdl, w2)))
if (!(file->readUInt8(hdl, w1) && file->readUInt8(hdl, w2)))
return false;
_lines[type] = (w2 > w1)
? Style::Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
? Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin), QPen(c2, w2, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin))
: Style::Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
: Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin));
}
break;
@ -566,16 +561,16 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_lines[type] = Style::Line(img);
_lines[type] = Line(img);
} else {
if (!(file->readByte(hdl, w1) && file->readByte(hdl, w2)))
if (!(file->readUInt8(hdl, w1) && file->readUInt8(hdl, w2)))
return false;
_lines[type] = (w2 > w1)
? Style::Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
? Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin), QPen(c2, w2, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin))
: Style::Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
: Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin));
}
break;
@ -593,12 +588,12 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_lines[type] = Style::Line(img);
_lines[type] = Line(img);
} else {
if (!(file->readByte(hdl, w1) && file->readByte(hdl, w2)))
if (!(file->readUInt8(hdl, w1) && file->readUInt8(hdl, w2)))
return false;
_lines[type] = Style::Line(QPen(c1, w1, Qt::SolidLine,
_lines[type] = Line(QPen(c1, w1, Qt::SolidLine,
Qt::RoundCap, Qt::RoundJoin));
}
break;
@ -616,16 +611,16 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_lines[type] = Style::Line(img);
_lines[type] = Line(img);
} else {
if (!(file->readByte(hdl, w1) && file->readByte(hdl, w2)))
if (!(file->readUInt8(hdl, w1) && file->readUInt8(hdl, w2)))
return false;
_lines[type] = (w2 > w1)
? Style::Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
? Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin), QPen(c2, w2, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin))
: Style::Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
: Line(QPen(c1, w1, Qt::SolidLine, Qt::RoundCap,
Qt::RoundJoin));
}
break;
@ -642,12 +637,12 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_lines[type] = Style::Line(img);
_lines[type] = Line(img);
} else {
if (!file->readByte(hdl, w1))
if (!file->readUInt8(hdl, w1))
return false;
_lines[type] = Style::Line(QPen(c1, w1, Qt::SolidLine,
_lines[type] = Line(QPen(c1, w1, Qt::SolidLine,
Qt::RoundCap, Qt::RoundJoin));
}
break;
@ -664,12 +659,12 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, 1))
return false;
_lines[type] = Style::Line(img);
_lines[type] = Line(img);
} else {
if (!file->readByte(hdl, w1))
if (!file->readUInt8(hdl, w1))
return false;
_lines[type] = Style::Line(QPen(c1, w1, Qt::SolidLine,
_lines[type] = Line(QPen(c1, w1, Qt::SolidLine,
Qt::RoundCap, Qt::RoundJoin));
}
break;
@ -689,7 +684,7 @@ bool Style::parseLines(SubFile *file, SubFile::Handle &hdl,
if (textColor) {
quint8 labelFlags;
if (!file->readByte(hdl, labelFlags))
if (!file->readUInt8(hdl, labelFlags))
return false;
if (labelFlags & 0x08) {
if (!readColor(file, hdl, c1))
@ -751,7 +746,7 @@ static bool readColorTable(SubFile *file, SubFile::Handle &hdl, QImage& img,
for (int i = 0; i < colors; i++) {
while (bits < 28) {
if (!file->readByte(hdl, byte))
if (!file->readUInt8(hdl, byte))
return false;
mask = 0x000000FF << bits;
@ -801,9 +796,9 @@ bool Style::parsePoints(SubFile *file, SubFile::Handle &hdl,
quint8 t8_1, width, height, numColors, imgType;
if (!(file->seek(hdl, section.offset + info.offset)
&& file->readByte(hdl, t8_1) && file->readByte(hdl, width)
&& file->readByte(hdl, height) && file->readByte(hdl, numColors)
&& file->readByte(hdl, imgType)))
&& file->readUInt8(hdl, t8_1) && file->readUInt8(hdl, width)
&& file->readUInt8(hdl, height) && file->readUInt8(hdl, numColors)
&& file->readUInt8(hdl, imgType)))
return false;
bool localization = t8_1 & 0x04;
@ -820,8 +815,8 @@ bool Style::parsePoints(SubFile *file, SubFile::Handle &hdl,
_points[type] = Point(img);
if (t8_1 == 0x03) {
if (!(file->readByte(hdl, numColors)
&& file->readByte(hdl, imgType)))
if (!(file->readUInt8(hdl, numColors)
&& file->readUInt8(hdl, imgType)))
return false;
if ((bpp = colors2bpp(numColors, imgType)) < 0)
continue;
@ -830,8 +825,8 @@ bool Style::parsePoints(SubFile *file, SubFile::Handle &hdl,
if (!readBitmap(file, hdl, img, bpp))
return false;
} else if (t8_1 == 0x02) {
if (!(file->readByte(hdl, numColors)
&& file->readByte(hdl, imgType)))
if (!(file->readUInt8(hdl, numColors)
&& file->readUInt8(hdl, imgType)))
return false;
if ((bpp = colors2bpp(numColors, imgType)) < 0)
continue;
@ -845,7 +840,7 @@ bool Style::parsePoints(SubFile *file, SubFile::Handle &hdl,
if (textColor) {
quint8 labelFlags;
QColor color;
if (!file->readByte(hdl, labelFlags))
if (!file->readUInt8(hdl, labelFlags))
return false;
if (labelFlags & 0x08) {
if (!readColor(file, hdl, color))
@ -874,7 +869,7 @@ bool Style::parseDrawOrder(SubFile *file, SubFile::Handle &hdl,
quint8 type;
quint32 subtype;
if (!(file->readByte(hdl, type) && file->readUInt32(hdl, subtype)))
if (!(file->readUInt8(hdl, type) && file->readUInt32(hdl, subtype)))
return false;
if (!subtype)
@ -944,6 +939,9 @@ Style::Style(SubFile *typ)
if (typ)
parseTYPFile(typ);
// Override stuff breaking the style display logic
_points[0x11400] = Point(None);
}
const Style::Line &Style::line(quint32 type) const
@ -970,27 +968,6 @@ const Style::Point &Style::point(quint32 type) const
return (it == _points.constEnd()) ? null : *it;
}
bool Style::isContourLine(quint32 type)
{
return (type == TYPE(0x20) || type == TYPE(0x21) || type == TYPE(0x22)
|| type == TYPE(0x23) || type == TYPE(0x24) || type == TYPE(0x25));
}
bool Style::isSpot(quint32 type)
{
return (type == TYPE(0x62) || type == TYPE(0x63));
}
bool Style::isSummit(quint32 type)
{
return (type == 0x6616);
}
bool Style::isMajorRoad(quint32 type)
{
return (type <= TYPE(0x04));
}
Style::POIClass Style::poiClass(quint32 type)
{
if ((type >= 0x2a00 && type < 0x2b00) || type == 0x2c0a || type == 0x2d02)
@ -1041,4 +1018,11 @@ QDebug operator<<(QDebug dbg, const Style::Line &line)
<< penColor(line.background()) << ", " << !line.img().isNull() << ")";
return dbg.space();
}
QDebug operator<<(QDebug dbg, const Style::Point &point)
{
dbg.nospace() << "Point(" << point.textFontSize() << ", "
<< point.textColor() << ", " << !point.img().isNull() << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG

View File

@ -6,6 +6,7 @@
#include <QDebug>
#include "subfile.h"
#define TYPE(t) ((t)<<8)
class Style
{
@ -47,6 +48,7 @@ public:
private:
QBrush _brush;
QPen _pen;
QColor _textColor;
};
class Line {
@ -80,6 +82,8 @@ public:
class Point {
public:
Point() : _textFontSize(NotSet) {}
Point(FontSize fontSize, const QColor &textColor = QColor())
: _textColor(textColor), _textFontSize(fontSize) {}
Point(const QImage &img) : _textFontSize(NotSet), _img(img) {}
void setTextColor(const QColor &color) {_textColor = color;}
@ -103,10 +107,22 @@ public:
const Point &point(quint32 type) const;
const QList<quint32> &drawOrder() const {return _drawOrder;}
static bool isContourLine(quint32 type);
static bool isSpot(quint32 type);
static bool isSummit(quint32 type);
static bool isMajorRoad(quint32 type);
static bool isContourLine(quint32 type)
{return ((type >= TYPE(0x20) && type <= TYPE(0x25))
|| (type & 0xffff00) == TYPE(0x109));}
static bool isWaterArea(quint32 type)
{return (type >= TYPE(0x3c) && type <= TYPE(0x44));}
static bool isMilitaryArea(quint32 type)
{return (type == TYPE(0x04));}
static bool isNatureReserve(quint32 type)
{return (type == TYPE(0x16));}
static bool isSpot(quint32 type)
{return (type == TYPE(0x62) || type == TYPE(0x63));}
static bool isSummit(quint32 type)
{return (type == 0x6616);}
static bool isMajorRoad(quint32 type)
{return (type <= TYPE(0x04));}
static POIClass poiClass(quint32 type);
private:
@ -149,6 +165,7 @@ private:
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const Style::Polygon &polygon);
QDebug operator<<(QDebug dbg, const Style::Line &line);
QDebug operator<<(QDebug dbg, const Style::Point &point);
#endif // QT_NO_DEBUG
#endif // STYLE_H

View File

@ -2,35 +2,9 @@
#include "img.h"
#include "subfile.h"
SubFile::Type SubFile::type(const char str[3])
{
if (!memcmp(str, "TRE", 3))
return TRE;
else if (!memcmp(str, "RGN", 3))
return RGN;
else if (!memcmp(str, "LBL", 3))
return LBL;
else if (!memcmp(str, "TYP", 3))
return TYP;
else if (!memcmp(str, "GMP", 3))
return GMP;
else if (!memcmp(str, "NET", 3))
return NET;
else
return Unknown;
}
SubFile::SubFile(QFile *file) :_gmpOffset(0), _img(0), _file(file), _blocks(0)
{
if (!_file->open(QIODevice::ReadOnly))
qWarning("Error opening %s: %s", qPrintable(_file->fileName()),
qPrintable(_file->errorString()));
}
bool SubFile::seek(Handle &handle, quint32 pos) const
{
Q_ASSERT(_img || _file);
if (_file)
return _file->seek(pos);
else {
@ -54,8 +28,6 @@ bool SubFile::seek(Handle &handle, quint32 pos) const
bool SubFile::readByte(Handle &handle, quint8 &val) const
{
Q_ASSERT(_img || _file);
if (_file)
return _file->getChar((char*)&val);
else {
@ -97,24 +69,50 @@ bool SubFile::readVUInt32(Handle &hdl, quint32 &val) const
return true;
}
bool SubFile::readVUInt32SW(Handle &hdl, quint32 bytes, quint32 &val) const
{
quint8 b;
val = 0;
for (quint32 i = bytes; i; i--) {
if (!readByte(hdl, b))
return false;
val |= ((quint32)b) << ((i-1) * 8);
}
return true;
}
bool SubFile::readVBitfield32(Handle &hdl, quint32 &bitfield) const
{
quint8 bits;
if (!readUInt8(hdl, bits))
return false;
if (!(bits & 1)) {
seek(hdl, hdl.pos - 1);
if (!((bits>>1) & 1)) {
if (!((bits>>2) & 1)) {
if (!readUInt32(hdl, bitfield))
return false;
} else {
if (!readUInt24(hdl, bitfield))
return false;
}
bitfield >>= 3;
} else {
if (!readUInt16(hdl, bitfield))
return false;
bitfield >>= 2;
}
} else
bitfield = bits>>1;
return true;
}
QString SubFile::fileName() const
{
return _file ? _file->fileName() : _img->fileName();
}
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const SubFile &file)
{
bool continuous = true;
for (int i = 1; i < file._blocks->size(); i++) {
if (file._blocks->at(i) != file._blocks->at(i-1) + 1) {
continuous = false;
break;
}
}
dbg.nospace() << "SubFile(" << file._blocks->size() << ", "
<< continuous << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG

View File

@ -4,8 +4,8 @@
#include <QVector>
#include <QDebug>
class IMG;
class QFile;
class IMG;
class SubFile
{
@ -22,18 +22,34 @@ public:
int pos;
};
SubFile(IMG *img) : _gmpOffset(0), _img(img), _file(0),
_blocks(&_blockData) {}
SubFile(IMG *img)
: _gmpOffset(0), _img(img), _blocks(new QVector<quint16>()), _file(0) {}
SubFile(SubFile *gmp, quint32 offset) : _gmpOffset(offset), _img(gmp->_img),
_file(0), _blocks(&(gmp->_blockData)) {}
SubFile(QFile *file);
_blocks(gmp->_blocks), _file(gmp->_file) {}
SubFile(QFile *file)
: _gmpOffset(0), _img(0), _blocks(0), _file(file) {}
~SubFile()
{
if (!_gmpOffset)
delete _blocks;
}
void addBlock(quint16 block) {_blocks->append(block);}
bool seek(Handle &handle, quint32 pos) const;
bool readByte(Handle &handle, quint8 &val) const;
bool readUInt16(Handle &handle, quint16 &val) const
template<typename T>
bool readUInt8(Handle &handle, T &val) const
{
quint8 b;
if (!readByte(handle, b))
return false;
val = b;
return true;
}
template<typename T>
bool readUInt16(Handle &handle, T &val) const
{
quint8 b0, b1;
if (!(readByte(handle, b0) && readByte(handle, b1)))
@ -82,31 +98,21 @@ public:
}
bool readVUInt32(Handle &hdl, quint32 &val) const;
bool readVUInt32SW(Handle &hdl, quint32 bytes, quint32 &val) const;
bool readVBitfield32(Handle &hdl, quint32 &bitfield) const;
quint16 offset() const {return _blocks->first();}
QString fileName() const;
static Type type(const char str[3]);
static bool isTileFile(Type type)
{
return (type == TRE || type == LBL || type == RGN || type == NET
|| type == GMP);
}
friend QDebug operator<<(QDebug dbg, const SubFile &file);
protected:
quint32 _gmpOffset;
private:
bool readByte(Handle &handle, quint8 &val) const;
IMG *_img;
QFile *_file;
QVector<quint16> *_blocks;
QVector<quint16> _blockData;
QFile *_file;
};
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const SubFile &file);
#endif // QT_NO_DEBUG
#endif // SUBFILE_H

View File

@ -44,7 +44,7 @@ bool TREFile::init()
quint16 hdrLen;
if (!(seek(hdl, _gmpOffset) && readUInt16(hdl, hdrLen)
&& seek(hdl, _gmpOffset + 0x0D) && readByte(hdl, locked)))
&& seek(hdl, _gmpOffset + 0x0D) && readUInt8(hdl, locked)))
return false;
// Tile bounds
@ -62,12 +62,15 @@ bool TREFile::init()
&& readUInt32(hdl, subdivSize)))
return false;
// TRE7 info
if (hdrLen > 0x9A) {
// TRE7 info
if (!(seek(hdl, _gmpOffset + 0x7C) && readUInt32(hdl, _extended.offset)
&& readUInt32(hdl, _extended.size)
&& readUInt16(hdl, _extended.itemSize)))
return false;
// flags
if (!(seek(hdl, _gmpOffset + 0x86) && readUInt32(hdl, _flags)))
return false;
}
// Tile levels
@ -75,7 +78,7 @@ bool TREFile::init()
return false;
quint8 levels[64];
for (quint32 i = 0; i < levelsSize; i++)
if (!readByte(hdl, levels[i]))
if (!readUInt8(hdl, levels[i]))
return false;
if (locked) {
quint32 key;
@ -126,15 +129,16 @@ bool TREFile::load(int idx)
return false;
for (int j = 0; j < _levels.at(idx).subdivs; j++) {
quint32 offset;
quint32 oo;
qint32 lon, lat;
quint8 objects;
quint16 width, height, nextLevel;
if (!(readUInt24(hdl, offset) && readByte(hdl, objects)
&& readInt24(hdl, lon) && readInt24(hdl, lat)
if (!(readUInt32(hdl, oo) && readInt24(hdl, lon) && readInt24(hdl, lat)
&& readUInt16(hdl, width) && readUInt16(hdl, height)))
goto error;
quint32 offset = oo & 0xfffffff;
quint8 objects = (((qint16)height < 0) << 4) | (oo >> 0x1c);
if (idx != _levels.size() - 1)
if (!readUInt16(hdl, nextLevel))
goto error;
@ -146,6 +150,7 @@ bool TREFile::load(int idx)
width <<= (24 - _levels.at(idx).bits);
height <<= (24 - _levels.at(idx).bits);
s = new SubDiv(offset, lon, lat, _levels.at(idx).bits, objects);
sl.append(s);

View File

@ -22,6 +22,8 @@ public:
const RectC &bounds() const {return _bounds;}
QList<SubDiv*> subdivs(const RectC &rect, int bits);
quint32 shift(quint8 bits) const
{return (bits == _levels.last().bits) ? (_flags >> 0xb) & 7 : 0;}
private:
struct MapLevel {
@ -51,6 +53,7 @@ private:
quint32 _subdivOffset;
Extended _extended;
int _firstLevel;
quint32 _flags;
QMap<int, SubDivTree*> _subdivs;
};

View File

@ -76,25 +76,18 @@ void VectorTile::objects(const RectC &rect, int bits,
{
QList<SubDiv*> subdivs = _tre->subdivs(rect, bits);
for (int i = 0; i < subdivs.size(); i++) {
_rgn->objects(rect, subdivs.at(i), _lbl, _net, polygons, lines, points);
_rgn->extObjects(rect, subdivs.at(i), _lbl, polygons, lines,
points);
const SubDiv *subdiv = subdivs.at(i);
quint32 shift = _tre->shift(subdiv->bits());
_rgn->objects(rect, subdiv, _lbl, _net, polygons, lines, points);
_rgn->extObjects(rect, subdiv, shift, _lbl, polygons, lines, points);
}
}
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const VectorTile &tile)
{
dbg.nospace() << "VectorTile(";
if (tile._tre)
dbg << "TRE: " << *(tile._tre);
if (tile._rgn)
dbg << ", RGN: " << *(tile._rgn);
if (tile._lbl)
dbg << ", LBL: " << *(tile._lbl);
if (tile._net)
dbg << ", NET: " << *(tile._net);
dbg << ")";
dbg.nospace() << "VectorTile(" << tile.bounds() <<")";
return dbg.space();
}

View File

@ -12,7 +12,9 @@ class VectorTile {
public:
VectorTile() : _tre(0), _rgn(0), _lbl(0), _net(0), _gmp(0) {}
~VectorTile()
{delete _tre; delete _rgn; delete _lbl; delete _net; delete _gmp;}
{
delete _tre; delete _rgn; delete _lbl; delete _net; delete _gmp;
}
bool init();
void clear() {_tre->clear();}
@ -25,6 +27,13 @@ public:
void objects(const RectC &rect, int bits, QList<IMG::Poly> *polygons,
QList<IMG::Poly> *lines, QList<IMG::Point> *points) const;
static bool isTileFile(SubFile::Type type)
{
return (type == SubFile::TRE || type == SubFile::LBL
|| type == SubFile::RGN || type == SubFile::NET
|| type == SubFile::GMP);
}
friend QDebug operator<<(QDebug dbg, const VectorTile &tile);
private:

View File

@ -104,10 +104,10 @@ AlbersEqual::AlbersEqual(const Ellipsoid *ellipsoid, double standardParallel1,
} else
_n = sin_lat1;
_C = sqr_m1 + _n * q1;
_c = sqr_m1 + _n * q1;
_a_over_n = ellipsoid->radius() / _n;
nq0 = _n * q0;
_rho0 = (_C < nq0) ? 0 : _a_over_n * sqrt(_C - nq0);
_rho0 = (_c < nq0) ? 0 : _a_over_n * sqrt(_c - nq0);
}
PointD AlbersEqual::ll2xy(const Coordinates &c) const
@ -131,7 +131,7 @@ PointD AlbersEqual::ll2xy(const Coordinates &c) const
e_sin = _e * sin_lat;
q = ALBERS_Q(sin_lat, ONE_MINUS_SQR(e_sin), e_sin);
nq = _n * q;
rho = (_C < nq) ? 0 : _a_over_n * sqrt(_C - nq);
rho = (_c < nq) ? 0 : _a_over_n * sqrt(_c - nq);
theta = _n * dlam;
return PointD(rho * sin(theta) + _falseEasting,
@ -168,7 +168,7 @@ Coordinates AlbersEqual::xy2ll(const PointD &p) const
if (rho != 0.0)
theta = atan2(dx, rho0_minus_dy);
rho_n = rho * _n;
q = (_C - (rho_n * rho_n) / _a2) / _n;
q = (_c - (rho_n * rho_n) / _a2) / _n;
qc = 1 - ((_one_minus_es) / (_two_e)) * log((1.0 - _e) / (1.0 + _e));
if (fabs(fabs(qc) - fabs(q)) > 1.0e-6) {
q_over_2 = q / 2.0;

View File

@ -25,7 +25,7 @@ private:
double _a2;
double _rho0;
double _C;
double _c;
double _n;
double _e;
double _es;

View File

@ -1,5 +1,6 @@
#include <QFile>
#include <QPainter>
#include <QFont>
#include <QPixmapCache>
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
#include <QtCore>
@ -8,6 +9,7 @@
#endif // QT_VERSION < 5
#include "common/rectc.h"
#include "common/wgs84.h"
#include "common/range.h"
#include "IMG/textpathitem.h"
#include "IMG/textpointitem.h"
#include "IMG/bitmapline.h"
@ -41,10 +43,11 @@ public:
{
QList<TextItem*> textItems;
_map->processPolygons(_polygons);
QRect tileRect(_xy, QSize(TILE_SIZE, TILE_SIZE));
_map->processPoints(_points, textItems);
_map->processLines(_lines, QRect(_xy, QSize(TILE_SIZE, TILE_SIZE)),
textItems);
_map->processPolygons(_polygons, textItems);
_map->processLines(_lines, tileRect, textItems);
_img.fill(Qt::transparent);
@ -172,7 +175,7 @@ static int minShieldZoom(Label::Shield::Type type)
switch (type) {
case Label::Shield::USInterstate:
case Label::Shield::Hbox:
return 18;
return 17;
case Label::Shield::USShield:
case Label::Shield::Box:
return 19;
@ -184,6 +187,49 @@ static int minShieldZoom(Label::Shield::Type type)
}
}
static qreal area(const QVector<QPointF> &polygon)
{
qreal area = 0;
for (int i = 0; i < polygon.size(); i++) {
int j = (i + 1) % polygon.size();
area += polygon.at(i).x() * polygon.at(j).y();
area -= polygon.at(i).y() * polygon.at(j).x();
}
area /= 2.0;
return area;
}
static QPointF centroid(const QVector<QPointF> polygon)
{
qreal cx = 0, cy = 0, factor = 0;
qreal A = area(polygon);
for (int i = 0; i < polygon.size(); i++) {
int j = (i + 1) % polygon.size();
factor=(polygon.at(i).x() * polygon.at(j).y() - polygon[j].x()
* polygon[i].y());
cx+=(polygon[i].x() + polygon[j].x()) * factor;
cy+=(polygon[i].y() + polygon[j].y()) * factor;
}
A *= 6.0f;
factor = 1/A;
cx *= factor;
cy *= factor;
return QPointF(cx, cy);
}
static bool rectNearPolygon(const QPolygonF &polygon, const QRectF &rect)
{
return (polygon.boundingRect().contains(rect)
&& (polygon.containsPoint(rect.topLeft(), Qt::OddEvenFill)
|| polygon.containsPoint(rect.topRight(), Qt::OddEvenFill)
|| polygon.containsPoint(rect.bottomLeft(), Qt::OddEvenFill)
|| polygon.containsPoint(rect.bottomRight(), Qt::OddEvenFill)));
}
IMGMap::IMGMap(const QString &fileName, QObject *parent)
: Map(parent), _img(fileName), _projection(PCS::pcs(3857)), _valid(false)
@ -333,7 +379,8 @@ void IMGMap::drawTextItems(QPainter *painter, const QList<TextItem*> &textItems)
}
void IMGMap::processPolygons(QList<IMG::Poly> &polygons)
void IMGMap::processPolygons(QList<IMG::Poly> &polygons,
QList<TextItem*> &textItems)
{
for (int i = 0; i < polygons.size(); i++) {
IMG::Poly &poly = polygons[i];
@ -341,6 +388,23 @@ void IMGMap::processPolygons(QList<IMG::Poly> &polygons)
QPointF &p = poly.points[j];
p = ll2xy(Coordinates(p.x(), p.y()));
}
if (poly.label.text().isEmpty())
continue;
if (_zoom <= 23 && (Style::isWaterArea(poly.type)
|| Style::isMilitaryArea(poly.type)
|| Style::isNatureReserve(poly.type))) {
const Style::Polygon &style = _img.style()->polygon(poly.type);
TextPointItem *item = new TextPointItem(
centroid(poly.points).toPoint(), &poly.label.text(),
poiFont(), 0, &style.brush().color());
if (item->isValid() && !item->collides(textItems)
&& rectNearPolygon(poly.points, item->boundingRect()))
textItems.append(item);
else
delete item;
}
}
}

View File

@ -1,11 +1,9 @@
#ifndef IMGMAP_H
#define IMGMAP_H
#include <QFont>
#include "map.h"
#include "projection.h"
#include "transform.h"
#include "common/range.h"
#include "IMG/img.h"
class TextItem;
@ -49,7 +47,8 @@ private:
void drawLines(QPainter *painter, const QList<IMG::Poly> &lines);
void drawTextItems(QPainter *painter, const QList<TextItem*> &textItems);
void processPolygons(QList<IMG::Poly> &polygons);
void processPolygons(QList<IMG::Poly> &polygons,
QList<TextItem *> &textItems);
void processLines(QList<IMG::Poly> &lines, const QRect &tileRect,
QList<TextItem*> &textItems);
void processPoints(QList<IMG::Point> &points, QList<TextItem*> &textItems);

View File

@ -15,16 +15,16 @@ Krovak::Krovak(const Ellipsoid *ellipsoid, double standardParallel,
_phiP = deg2rad(standardParallel);
_e = sqrt(ellipsoid->es());
_A = ellipsoid->radius() * sqrt(1.0 - ellipsoid->es())
_a = ellipsoid->radius() * sqrt(1.0 - ellipsoid->es())
/ (1.0 - ellipsoid->es() * sinPhiC2);
_B = sqrt(1.0 + (ellipsoid->es() * cosPhiC4 / (1.0 - ellipsoid->es())));
double gamma0 = asin(sinPhiC / _B);
_b = sqrt(1.0 + (ellipsoid->es() * cosPhiC4 / (1.0 - ellipsoid->es())));
double gamma0 = asin(sinPhiC / _b);
_t0 = tan(M_PI_4 + gamma0 / 2.0) * pow((1.0 + _e * sinPhiC) /
(1.0 - _e * sinPhiC), _e*_B / 2.0) / pow(tan(M_PI_4 + phiC/2.0), _B);
(1.0 - _e * sinPhiC), _e*_b / 2.0) / pow(tan(M_PI_4 + phiC/2.0), _b);
_n = sin(_phiP);
_r0 = scale * _A / tan(_phiP);
_FE = falseEasting;
_FN = falseNorthing;
_r0 = scale * _a / tan(_phiP);
_fe = falseEasting;
_fn = falseNorthing;
_cosAlphaC = cos(alphaC);
_sinAlphaC = sin(alphaC);
_lambda0 = deg2rad(longitudeOrigin);
@ -35,23 +35,23 @@ PointD Krovak::ll2xy(const Coordinates &c) const
double phi = deg2rad(c.lat());
double lambda = deg2rad(c.lon());
double eSinPhi = _e * sin(phi);
double U = 2.0 * (atan(_t0 * pow(tan(phi/2.0 + M_PI_4), _B)
/ pow((1.0 + eSinPhi) / (1.0 - eSinPhi), _e * _B/2.0)) - M_PI_4);
double U = 2.0 * (atan(_t0 * pow(tan(phi/2.0 + M_PI_4), _b)
/ pow((1.0 + eSinPhi) / (1.0 - eSinPhi), _e * _b/2.0)) - M_PI_4);
double cosU = cos(U);
double V = _B * (_lambda0 - lambda);
double V = _b * (_lambda0 - lambda);
double T = asin(_cosAlphaC * sin(U) + _sinAlphaC * cosU * cos(V));
double D = asin(cosU * sin(V) / cos(T));
double theta = _n * D;
double r = _r0 * pow(tan(M_PI_4 + _phiP/2.0), _n)
/ pow(tan(T/2.0 + M_PI_4), _n);
return PointD(r * sin(theta) + _FE, r * cos(theta) + _FN);
return PointD(r * sin(theta) + _fe, r * cos(theta) + _fn);
}
Coordinates Krovak::xy2ll(const PointD &p) const
{
double Xp = p.y() - _FN;
double Yp = p.x() - _FE;
double Xp = p.y() - _fn;
double Yp = p.x() - _fe;
double Xp2 = Xp * Xp;
double Yp2 = Yp * Yp;
double r = sqrt(Xp2 + Yp2);
@ -63,8 +63,8 @@ Coordinates Krovak::xy2ll(const PointD &p) const
double V = asin(cos(T) * sin(D) / cos(U));
double phi = U;
for (int i = 0; i < 3; i++)
phi = 2.0 * (atan(pow(_t0, -1.0/_B) * pow(tan(U/2.0 + M_PI_4), 1.0/_B)
phi = 2.0 * (atan(pow(_t0, -1.0/_b) * pow(tan(U/2.0 + M_PI_4), 1.0/_b)
* pow((1.0 + _e * sin(phi))/(1.0 - _e * sin(phi)), _e/2.0)) - M_PI_4);
return Coordinates(rad2deg(_lambda0 - V/_B), rad2deg(phi));
return Coordinates(rad2deg(_lambda0 - V/_b), rad2deg(phi));
}

View File

@ -18,8 +18,8 @@ public:
virtual Coordinates xy2ll(const PointD &p) const;
private:
double _e, _A, _B, _t0, _n, _r0, _phiP;
double _cosAlphaC, _sinAlphaC, _lambda0, _FE, _FN;
double _e, _a, _b, _t0, _n, _r0, _phiP;
double _cosAlphaC, _sinAlphaC, _lambda0, _fe, _fn;
};
class KrovakNE : public CT

View File

@ -11,8 +11,8 @@ LambertAzimuthal::LambertAzimuthal(const Ellipsoid *ellipsoid,
{
double lat0 = deg2rad(latitudeOrigin);
_falseEasting = falseEasting;
_falseNorthing = falseNorthing;
_fe = falseEasting;
_fn = falseNorthing;
_lon0 = deg2rad(longitudeOrigin);
_a = ellipsoid->radius();
@ -25,8 +25,8 @@ LambertAzimuthal::LambertAzimuthal(const Ellipsoid *ellipsoid,
_qP = (1.0 - _es) * ((1.0 / (1.0 - _es)) - ((1.0/(2.0*_e))
* log((1.0 - _e) / (1.0 + _e))));
_beta0 = asin(q0 / _qP);
_Rq = _a * sqrt(_qP / 2.0);
_D = _a * (cos(lat0) / sqrt(1.0 - _es * sin2(lat0))) / (_Rq * cos(_beta0));
_rq = _a * sqrt(_qP / 2.0);
_d = _a * (cos(lat0) / sqrt(1.0 - _es * sin2(lat0))) / (_rq * cos(_beta0));
}
PointD LambertAzimuthal::ll2xy(const Coordinates &c) const
@ -38,11 +38,11 @@ PointD LambertAzimuthal::ll2xy(const Coordinates &c) const
- ((1.0/(2.0*_e)) * log((1.0 - _e * sin(lat)) / (1.0 + _e
* sin(lat)))));
double beta = asin(q / _qP);
double B = _Rq * sqrt(2.0 / (1.0 + sin(_beta0) * sin(beta) + (cos(_beta0)
double B = _rq * sqrt(2.0 / (1.0 + sin(_beta0) * sin(beta) + (cos(_beta0)
* cos(beta) * cos(lon - _lon0))));
double x = _falseEasting + ((B * _D) * (cos(beta) * sin(lon - _lon0)));
double y = _falseNorthing + (B / _D) * ((cos(_beta0) * sin(beta))
double x = _fe + ((B * _d) * (cos(beta) * sin(lon - _lon0)));
double y = _fn + (B / _d) * ((cos(_beta0) * sin(beta))
- (sin(_beta0) * cos(beta) * cos(lon - _lon0)));
return PointD(x, y);
@ -53,14 +53,14 @@ Coordinates LambertAzimuthal::xy2ll(const PointD &p) const
double es4 = _es * _es;
double es6 = _es * es4;
double rho = sqrt(sqr((p.x() - _falseEasting) / _D) + sqr(_D * (p.y()
- _falseNorthing)));
double C = 2.0 * asin(rho / (2.0*_Rq));
double betaS = asin((cos(C) * sin(_beta0)) + ((_D * (p.y() -_falseNorthing)
double rho = sqrt(sqr((p.x() - _fe) / _d) + sqr(_d * (p.y()
- _fn)));
double C = 2.0 * asin(rho / (2.0*_rq));
double betaS = asin((cos(C) * sin(_beta0)) + ((_d * (p.y() -_fn)
* sin(C) * cos(_beta0)) / rho));
double lon = _lon0 + atan((p.x() - _falseEasting) * sin(C) / (_D * rho
* cos(_beta0) * cos(C) - sqr(_D) * (p.y() - _falseNorthing) * sin(_beta0)
double lon = _lon0 + atan((p.x() - _fe) * sin(C) / (_d * rho
* cos(_beta0) * cos(C) - sqr(_d) * (p.y() - _fn) * sin(_beta0)
* sin(C)));
double lat = betaS + ((_es/3.0 + 31.0*es4/180.0 + 517.0*es6/5040.0)
* sin(2.0*betaS)) + ((23.0*es4/360.0 + 251.0*es6/3780.0) * sin(4.0*betaS))

View File

@ -18,9 +18,8 @@ public:
private:
double _lon0;
double _falseNorthing;
double _falseEasting;
double _a, _e, _es, _qP, _beta0, _Rq, _D;
double _fn, _fe;
double _a, _e, _es, _qP, _beta0, _rq, _d;
};
#endif // LAMBERTAZIMUTHAL_H

View File

@ -8,7 +8,7 @@
ObliqueStereographic::ObliqueStereographic(const Ellipsoid *ellipsoid,
double latitudeOrigin, double longitudeOrigin, double scale,
double falseEasting, double falseNorthing)
: _FE(falseEasting), _FN(falseNorthing)
: _fe(falseEasting), _fn(falseNorthing)
{
double lat0 = deg2rad(latitudeOrigin);
double sinPhi0 = sin(lat0);
@ -48,17 +48,17 @@ PointD ObliqueStereographic::ll2xy(const Coordinates &c) const
double B = (1.0 + sin(chi) * _sinChi0 + cos(chi) * _cosChi0
* cos(lambda - _lambda0));
return PointD(_FE + _twoRk0 * cos(chi) * sin(lambda - _lambda0) / B,
_FN + _twoRk0 * (sin(chi) * _cosChi0 - cos(chi) * _sinChi0
return PointD(_fe + _twoRk0 * cos(chi) * sin(lambda - _lambda0) / B,
_fn + _twoRk0 * (sin(chi) * _cosChi0 - cos(chi) * _sinChi0
* cos(lambda - _lambda0)) / B);
}
Coordinates ObliqueStereographic::xy2ll(const PointD &p) const
{
double i = atan((p.x() - _FE) / (_h + (p.y() - _FN)));
double j = atan((p.x() - _FE) / (_g - (p.y() - _FN))) - i;
double i = atan((p.x() - _fe) / (_h + (p.y() - _fn)));
double j = atan((p.x() - _fe) / (_g - (p.y() - _fn))) - i;
double chi = _chi0 + 2.0 * atan(((p.y() - _FN) - (p.x() - _FE) * tan(j/2.0))
double chi = _chi0 + 2.0 * atan(((p.y() - _fn) - (p.x() - _fe) * tan(j/2.0))
/ _twoRk0);
double lambda = j + 2.0 * i + _lambda0;

View File

@ -22,7 +22,7 @@ private:
double _lambda0;
double _n;
double _c;
double _FE, _FN;
double _fe, _fn;
double _twoRk0, _g, _h;
};