Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gpxsee for openSUSE:Factory checked 
in at 2025-05-22 16:56:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gpxsee (Old)
 and      /work/SRC/openSUSE:Factory/.gpxsee.new.2732 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gpxsee"

Thu May 22 16:56:09 2025 rev:143 rq:1278954 version:13.43

Changes:
--------
--- /work/SRC/openSUSE:Factory/gpxsee/gpxsee.changes    2025-05-08 
18:25:50.230624172 +0200
+++ /work/SRC/openSUSE:Factory/.gpxsee.new.2732/gpxsee.changes  2025-05-22 
16:56:28.396908700 +0200
@@ -1,0 +2,7 @@
+Tue May 20 22:41:25 CEST 2025 - tu...@cbox.cz
+
+- Update to version 13.43
+  * Improved marine charts (ENC,IMG) style/rendering.
+  * Added OpenFreeMap to the default maps list.
+
+-------------------------------------------------------------------

Old:
----
  GPXSee-13.42.tar.gz

New:
----
  GPXSee-13.43.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gpxsee.spec ++++++
--- /var/tmp/diff_new_pack.bEkA66/_old  2025-05-22 16:56:29.572958554 +0200
+++ /var/tmp/diff_new_pack.bEkA66/_new  2025-05-22 16:56:29.572958554 +0200
@@ -19,7 +19,7 @@
 # See also http://en.opensuse.org/openSUSE:Specfile_guidelines
 
 Name:           gpxsee
-Version:        13.42
+Version:        13.43
 Release:        1
 Summary:        GPS log file visualization and analysis tool
 License:        GPL-3.0-only

++++++ GPXSee-13.42.tar.gz -> GPXSee-13.43.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/.appveyor.yml 
new/GPXSee-13.43/.appveyor.yml
--- old/GPXSee-13.42/.appveyor.yml      2025-05-07 22:47:07.000000000 +0200
+++ new/GPXSee-13.43/.appveyor.yml      2025-05-20 21:03:34.000000000 +0200
@@ -1,4 +1,4 @@
-version: 13.42.{build}
+version: 13.43.{build}
 
 configuration:
   - Release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/data/maps/OpenFreeMap.xml 
new/GPXSee-13.43/data/maps/OpenFreeMap.xml
--- old/GPXSee-13.42/data/maps/OpenFreeMap.xml  1970-01-01 01:00:00.000000000 
+0100
+++ new/GPXSee-13.43/data/maps/OpenFreeMap.xml  2025-05-20 21:03:34.000000000 
+0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map xmlns="http://www.gpxsee.org/map/1.4";>
+       <name>OpenFreeMap</name>
+       <url>https://tiles.openfreemap.org/planet/latest/$z/$x/$y.pbf</url>
+       <tile type="vector" size="512"/>
+       <zoom max="14"/>
+       <copyright>© OpenFreeMap © OpenMapTiles © OpenStreetMap 
contributors</copyright>
+</map>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/gpxsee.pro new/GPXSee-13.43/gpxsee.pro
--- old/GPXSee-13.42/gpxsee.pro 2025-05-07 22:47:07.000000000 +0200
+++ new/GPXSee-13.43/gpxsee.pro 2025-05-20 21:03:34.000000000 +0200
@@ -3,7 +3,7 @@
 } else {
     TARGET = GPXSee
 }
-VERSION = 13.42
+VERSION = 13.43
 
 QT += core \
     gui \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/gpxsee.qrc new/GPXSee-13.43/gpxsee.qrc
--- old/GPXSee-13.42/gpxsee.qrc 2025-05-07 22:47:07.000000000 +0200
+++ new/GPXSee-13.43/gpxsee.qrc 2025-05-20 21:03:34.000000000 +0200
@@ -144,7 +144,9 @@
                <file 
alias="buoy-white-green.png">icons/map/marine/buoy-white-green.png</file>
                <file 
alias="buoy-white-red.png">icons/map/marine/buoy-white-red.png</file>
                <file 
alias="buoy-white-yellow.png">icons/map/marine/buoy-white-yellow.png</file>
+               <file 
alias="buoy-white-orange.png">icons/map/marine/buoy-white-orange.png</file>
                <file 
alias="buoy-white-yellow-white.png">icons/map/marine/buoy-white-yellow-white.png</file>
+               <file 
alias="buoy-white-orange-white.png">icons/map/marine/buoy-white-orange-white.png</file>
                <file 
alias="buoy-green.png">icons/map/marine/buoy-green.png</file>
                <file 
alias="buoy-green-white.png">icons/map/marine/buoy-green-white.png</file>
                <file 
alias="buoy-green-white-green-white.png">icons/map/marine/buoy-green-white-green-white.png</file>
@@ -172,14 +174,21 @@
                <file 
alias="buoy-black-red-black.png">icons/map/marine/buoy-black-red-black.png</file>
                <file 
alias="buoy-black-green.png">icons/map/marine/buoy-black-green.png</file>
                <file 
alias="buoy-black-yellow.png">icons/map/marine/buoy-black-yellow.png</file>
+               <file 
alias="buoy-black-orange.png">icons/map/marine/buoy-black-orange.png</file>
                <file 
alias="buoy-black-yellow-black.png">icons/map/marine/buoy-black-yellow-black.png</file>
+               <file 
alias="buoy-orange.png">icons/map/marine/buoy-orange.png</file>
+               <file 
alias="buoy-orange-white.png">icons/map/marine/buoy-orange-white.png</file>
+               <file 
alias="buoy-orange-black.png">icons/map/marine/buoy-orange-black.png</file>
+               <file 
alias="buoy-grey.png">icons/map/marine/buoy-grey.png</file>
                <file alias="beacon.png">icons/map/marine/beacon.png</file>
                <file 
alias="beacon-white.png">icons/map/marine/beacon-white.png</file>
                <file 
alias="beacon-white-black.png">icons/map/marine/beacon-white-black.png</file>
                <file 
alias="beacon-white-green.png">icons/map/marine/beacon-white-green.png</file>
                <file 
alias="beacon-white-red.png">icons/map/marine/beacon-white-red.png</file>
                <file 
alias="beacon-white-yellow.png">icons/map/marine/beacon-white-yellow.png</file>
+               <file 
alias="beacon-white-orange.png">icons/map/marine/beacon-white-orange.png</file>
                <file 
alias="beacon-white-yellow-white.png">icons/map/marine/beacon-white-yellow-white.png</file>
+               <file 
alias="beacon-white-orange-white.png">icons/map/marine/beacon-white-orange-white.png</file>
                <file 
alias="beacon-green.png">icons/map/marine/beacon-green.png</file>
                <file 
alias="beacon-green-white.png">icons/map/marine/beacon-green-white.png</file>
                <file 
alias="beacon-green-white-green-white.png">icons/map/marine/beacon-green-white-green-white.png</file>
@@ -207,7 +216,12 @@
                <file 
alias="beacon-black-red-black.png">icons/map/marine/beacon-black-red-black.png</file>
                <file 
alias="beacon-black-green.png">icons/map/marine/beacon-black-green.png</file>
                <file 
alias="beacon-black-yellow.png">icons/map/marine/beacon-black-yellow.png</file>
+               <file 
alias="beacon-black-orange.png">icons/map/marine/beacon-black-orange.png</file>
                <file 
alias="beacon-black-yellow-black.png">icons/map/marine/beacon-black-yellow-black.png</file>
+               <file 
alias="beacon-orange.png">icons/map/marine/beacon-orange.png</file>
+               <file 
alias="beacon-orange-white.png">icons/map/marine/beacon-orange-white.png</file>
+               <file 
alias="beacon-orange-black.png">icons/map/marine/beacon-orange-black.png</file>
+               <file 
alias="beacon-grey.png">icons/map/marine/beacon-grey.png</file>
                <file 
alias="spar-buoy.png">icons/map/marine/spar-buoy.png</file>
                <file 
alias="spar-buoy-red.png">icons/map/marine/spar-buoy-red.png</file>
                <file 
alias="spar-buoy-green.png">icons/map/marine/spar-buoy-green.png</file>
@@ -311,6 +325,16 @@
                <file 
alias="fishing-farm.png">icons/map/marine/fishing-farm.png</file>
                <file 
alias="shellfish-farm-line.png">icons/map/marine/shellfish-farm-line.png</file>
                <file 
alias="degaussing-line.png">icons/map/marine/degaussing-line.png</file>
+               <file 
alias="nofishing-line.png">icons/map/marine/nofishing-line.png</file>
+               <file 
alias="fishing-line.png">icons/map/marine/fishing-line.png</file>
+               <file 
alias="minefield-line.png">icons/map/marine/minefield-line.png</file>
+               <file 
alias="international-maritime-boundary.png">icons/map/marine/international-maritime-boundary.png</file>
+               <file 
alias="straight-territorial-sea-baseline.png">icons/map/marine/straight-territorial-sea-baseline.png</file>
+               <file 
alias="seaward-limit-of-territorial-sea.png">icons/map/marine/seaward-limit-of-territorial-sea.png</file>
+               <file 
alias="seaward-limit-of-contiguous-zone.png">icons/map/marine/seaward-limit-of-contiguous-zone.png</file>
+               <file alias="foul.png">icons/map/marine/foul.png</file>
+               <file 
alias="dumping-ground-line.png">icons/map/marine/dumping-ground-line.png</file>
+               <file 
alias="radio-call-garmin.png">icons/map/marine/radio-call-garmin.png</file>
        </qresource>
 
        <!-- Patterns (Mapsforge) -->
Binary files old/GPXSee-13.42/icons/map/marine/anchor-line.png and 
new/GPXSee-13.43/icons/map/marine/anchor-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-black-orange.png and 
new/GPXSee-13.43/icons/map/marine/beacon-black-orange.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-grey.png and 
new/GPXSee-13.43/icons/map/marine/beacon-grey.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-orange-black.png and 
new/GPXSee-13.43/icons/map/marine/beacon-orange-black.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-orange-white.png and 
new/GPXSee-13.43/icons/map/marine/beacon-orange-white.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-orange.png and 
new/GPXSee-13.43/icons/map/marine/beacon-orange.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-white-orange-white.png 
and new/GPXSee-13.43/icons/map/marine/beacon-white-orange-white.png differ
Binary files old/GPXSee-13.42/icons/map/marine/beacon-white-orange.png and 
new/GPXSee-13.43/icons/map/marine/beacon-white-orange.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-black-orange.png and 
new/GPXSee-13.43/icons/map/marine/buoy-black-orange.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-grey.png and 
new/GPXSee-13.43/icons/map/marine/buoy-grey.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-orange-black.png and 
new/GPXSee-13.43/icons/map/marine/buoy-orange-black.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-orange-white.png and 
new/GPXSee-13.43/icons/map/marine/buoy-orange-white.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-orange.png and 
new/GPXSee-13.43/icons/map/marine/buoy-orange.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-white-orange-white.png and 
new/GPXSee-13.43/icons/map/marine/buoy-white-orange-white.png differ
Binary files old/GPXSee-13.42/icons/map/marine/buoy-white-orange.png and 
new/GPXSee-13.43/icons/map/marine/buoy-white-orange.png differ
Binary files old/GPXSee-13.42/icons/map/marine/cable-area-line.png and 
new/GPXSee-13.43/icons/map/marine/cable-area-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/dumping-ground-line.png and 
new/GPXSee-13.43/icons/map/marine/dumping-ground-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/dw-route-line.png and 
new/GPXSee-13.43/icons/map/marine/dw-route-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/fishing-farm-line.png and 
new/GPXSee-13.43/icons/map/marine/fishing-farm-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/fishing-line.png and 
new/GPXSee-13.43/icons/map/marine/fishing-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/foul.png and 
new/GPXSee-13.43/icons/map/marine/foul.png differ
Binary files 
old/GPXSee-13.42/icons/map/marine/international-maritime-boundary.png and 
new/GPXSee-13.43/icons/map/marine/international-maritime-boundary.png differ
Binary files old/GPXSee-13.42/icons/map/marine/minefield-line.png and 
new/GPXSee-13.43/icons/map/marine/minefield-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/noanchor-line.png and 
new/GPXSee-13.43/icons/map/marine/noanchor-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/nofishing-line.png and 
new/GPXSee-13.43/icons/map/marine/nofishing-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/pipeline-area-line.png and 
new/GPXSee-13.43/icons/map/marine/pipeline-area-line.png differ
Binary files old/GPXSee-13.42/icons/map/marine/radio-call-garmin.png and 
new/GPXSee-13.43/icons/map/marine/radio-call-garmin.png differ
Binary files 
old/GPXSee-13.42/icons/map/marine/seaward-limit-of-contiguous-zone.png and 
new/GPXSee-13.43/icons/map/marine/seaward-limit-of-contiguous-zone.png differ
Binary files 
old/GPXSee-13.42/icons/map/marine/seaward-limit-of-territorial-sea.png and 
new/GPXSee-13.43/icons/map/marine/seaward-limit-of-territorial-sea.png differ
Binary files old/GPXSee-13.42/icons/map/marine/shellfish-farm-line.png and 
new/GPXSee-13.43/icons/map/marine/shellfish-farm-line.png differ
Binary files 
old/GPXSee-13.42/icons/map/marine/straight-territorial-sea-baseline.png and 
new/GPXSee-13.43/icons/map/marine/straight-territorial-sea-baseline.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/pkg/windows/gpxsee64.nsi 
new/GPXSee-13.43/pkg/windows/gpxsee64.nsi
--- old/GPXSee-13.42/pkg/windows/gpxsee64.nsi   2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/pkg/windows/gpxsee64.nsi   2025-05-20 21:03:34.000000000 
+0200
@@ -49,7 +49,7 @@
 ; The name of the installer
 Name "GPXSee"
 ; Program version
-!define VERSION "13.42"
+!define VERSION "13.43"
 
 ; The file to write
 OutFile "GPXSee-${VERSION}_x64.exe"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/ENC/attributes.h 
new/GPXSee-13.43/src/map/ENC/attributes.h
--- old/GPXSee-13.42/src/map/ENC/attributes.h   2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/ENC/attributes.h   2025-05-20 21:03:34.000000000 
+0200
@@ -5,6 +5,7 @@
 #define CATBUA 10
 #define CATCOV 18
 #define CATDIS 21
+#define CATDPG 23
 #define CATHAF 30
 #define CATLMK 35
 #define CATLIT 37
@@ -12,6 +13,7 @@
 #define CATMOR 40
 #define CATTRK 54
 #define CATREA 56
+#define CATSLC 60
 #define CATSIT 61
 #define CATSIL 63
 #define CATSCF 65
@@ -24,6 +26,7 @@
 #define DRVAL1 87
 #define ELEVAT 90
 #define FUNCTN 94
+#define JRSDTN 103
 #define LITVIS 108
 #define OBJNAM 116
 #define ORIENT 117
@@ -41,6 +44,7 @@
 #define I_CATSIT 17002
 #define I_RESTRN 17004
 #define I_CATHAF 17008
+#define I_CATSLC 17012
 #define I_RDOCAL 17017
 #define I_WTWDIS 17064
 #define I_CATBRT 17066
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/ENC/mapdata.cpp 
new/GPXSee-13.43/src/map/ENC/mapdata.cpp
--- old/GPXSee-13.42/src/map/ENC/mapdata.cpp    2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/ENC/mapdata.cpp    2025-05-20 21:03:34.000000000 
+0200
@@ -87,6 +87,7 @@
        map.insert(TYPE(BUISGL), 46);
        map.insert(TYPE(ACHARE), 47);
        map.insert(TYPE(I_ACHARE), 47);
+       map.insert(TYPE(DMPGRD), 48);
 
        map.insert(TYPE(I_DISMAR), 0xFFFFFFFE);
        map.insert(TYPE(SOUNDG), 0xFFFFFFFF);
@@ -191,7 +192,7 @@
        if (baseType == TSSLPT || baseType == RCTLPT || baseType == I_TRNBSN
          || baseType == BRIDGE || baseType == I_BRIDGE || baseType == BUAARE
          || baseType == LNDARE || baseType == LNDRGN || baseType == I_BUNSTA
-         || baseType == PILBOP
+         || baseType == PILBOP || baseType == DMPGRD
          || type == SUBTYPE(ACHARE, 2) || type == SUBTYPE(I_ACHARE, 2)
          || type == SUBTYPE(ACHARE, 3) || type == SUBTYPE(I_ACHARE, 3)
          || type == SUBTYPE(ACHARE, 9) || type == SUBTYPE(I_ACHARE, 9)
@@ -199,6 +200,7 @@
          || type == SUBTYPE(I_ACHARE, 12) || type == SUBTYPE(I_BERTHS, 6)
          || type == SUBTYPE(RESARE, 1) || type == SUBTYPE(I_RESARE, 1)
          || type == SUBTYPE(RESARE, 2) || type == SUBTYPE(I_RESARE, 2)
+         || type == SUBTYPE(RESARE, 3) || type == SUBTYPE(I_RESARE, 3)
          || type == SUBTYPE(RESARE, 4) || type == SUBTYPE(I_RESARE, 4)
          || type == SUBTYPE(RESARE, 5) || type == SUBTYPE(I_RESARE, 5)
          || type == SUBTYPE(RESARE, 6) || type == SUBTYPE(I_RESARE, 6)
@@ -323,6 +325,8 @@
 
                if (restrn == 1)
                        return 2;
+               else if (restrn == 3)
+                       return 3;
                else if (restrn == 7)
                        return 17;
                else
@@ -335,8 +339,12 @@
 {
        uint c = 0;
 
-       for (int i = 0; i < list.size() && i < 4; i++)
-               c |= list.at(i).toUInt() << (i * 4);
+       for (int i = 0, j = 0; i < list.size() && j < 4; i++) {
+               if (!(i && list.at(i) == list.at(i-1))) {
+                       c |= list.at(i).toUInt() << (j * 4);
+                       j++;
+               }
+       }
 
        return c;
 }
@@ -447,7 +455,7 @@
                if (ok && clr > 0)
                        _label = QString::fromUtf8("\xE2\x86\x95") + UNIT_SPACE
                          + QString::number(clr) + UNIT_SPACE + hUnits(HUNI);
-       } else if (type == OBSTRN || type == WRECKS) {
+       } else if (type == OBSTRN || type == WRECKS || type == UWTROC) {
                double depth = _attr.value(VALSOU).toDouble(&ok);
                if (ok && _label.isEmpty())
                        _label = QString::number(depth);
@@ -474,6 +482,14 @@
                subtype = I_CATBRT;
        else if (type == M_COVR)
                subtype = CATCOV;
+       else if (type == DMPGRD)
+               subtype = CATDPG;
+       else if (type == SLCONS)
+               subtype = CATSLC;
+       else if (type == I_SLCONS)
+               subtype = I_CATSLC;
+       else if (type == ADMARE)
+               subtype = JRSDTN;
 
        switch (type) {
                case DEPARE:
@@ -509,6 +525,8 @@
                _label = QString::fromLatin1(_attr.value(VALDCO));
        else if (type == LNDELV)
                _label = QString::fromLatin1(_attr.value(ELEVAT));
+       else if (type == RECTRC)
+               _label = QString::fromLatin1(_attr.value(ORIENT));
        else
                _label = QString::fromLatin1(_attr.value(OBJNAM));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/ENC/objects.h 
new/GPXSee-13.43/src/map/ENC/objects.h
--- old/GPXSee-13.42/src/map/ENC/objects.h      2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/ENC/objects.h      2025-05-20 21:03:34.000000000 
+0200
@@ -4,6 +4,7 @@
 #define TYPE(t) ((t)<<16)
 #define SUBTYPE(t, s) (((t)<<16)|(s))
 
+#define ADMARE 1
 #define AIRARE 2
 #define ACHBRT 3
 #define ACHARE 4
@@ -88,6 +89,8 @@
 #define SLOTOP 126
 #define SMCFAC 128
 #define SOUNDG 129
+#define STSLNE 132
+#define TESARE 135
 #define TSELNE 145
 #define TSSBND 146
 #define TSSLPT 148
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/ENC/style.cpp 
new/GPXSee-13.43/src/map/ENC/style.cpp
--- old/GPXSee-13.42/src/map/ENC/style.cpp      2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/ENC/style.cpp      2025-05-20 21:03:34.000000000 
+0200
@@ -21,25 +21,26 @@
        PNT(type, 4, ":/marine/" name "-green.png", dx, dy); \
        PNT(type, 5, ":/marine/" name ".png", dx, dy); \
        PNT(type, 6, ":/marine/" name "-yellow.png", dx, dy); \
-       PNT(type, 7, ":/marine/" name ".png", dx, dy); \
-       PNT(type, 8, ":/marine/" name ".png", dx, dy); \
-       PNT(type, 9, ":/marine/" name "-yellow.png", dx, dy); \
+       PNT(type, 7, ":/marine/" name "-grey.png", dx, dy); \
+       PNT(type, 8, ":/marine/" name "-orange.png", dx, dy); \
+       PNT(type, 9, ":/marine/" name "-orange.png", dx, dy); \
        PNT(type, 10, ":/marine/" name ".png", dx, dy); \
-       PNT(type, 11, ":/marine/" name "-yellow.png", dx, dy); \
+       PNT(type, 11, ":/marine/" name "-orange.png", dx, dy); \
        PNT(type, 12, ":/marine/" name ".png", dx, dy); \
        PNT(type, 13, ":/marine/" name ".png", dx, dy); \
        PNT(type, COLOR2(1, 2), ":/marine/" name "-white-black.png", dx, dy); \
        PNT(type, COLOR2(1, 3), ":/marine/" name "-white-red.png", dx, dy); \
        PNT(type, COLOR2(1, 4), ":/marine/" name "-white-green.png", dx, dy); \
        PNT(type, COLOR2(1, 6), ":/marine/" name "-white-yellow.png", dx, dy); \
-       PNT(type, COLOR2(1, 9), ":/marine/" name "-white-yellow.png", dx, dy); \
-       PNT(type, COLOR2(1, 11), ":/marine/" name "-white-yellow.png", dx, dy); 
\
+       PNT(type, COLOR2(1, 8), ":/marine/" name "-white-orange.png", dx, dy); \
+       PNT(type, COLOR2(1, 9), ":/marine/" name "-white-orange.png", dx, dy); \
+       PNT(type, COLOR2(1, 11), ":/marine/" name "-white-orange.png", dx, dy); 
\
        PNT(type, COLOR2(2, 1), ":/marine/" name "-black-white.png", dx, dy); \
        PNT(type, COLOR2(2, 3), ":/marine/" name "-black-red.png", dx, dy); \
        PNT(type, COLOR2(2, 4), ":/marine/" name "-black-green.png", dx, dy); \
        PNT(type, COLOR2(2, 6), ":/marine/" name "-black-yellow.png", dx, dy); \
-       PNT(type, COLOR2(2, 9), ":/marine/" name "-black-yellow.png", dx, dy); \
-       PNT(type, COLOR2(2, 11), ":/marine/" name "-black-yellow.png", dx, dy); 
\
+       PNT(type, COLOR2(2, 9), ":/marine/" name "-black-orange.png", dx, dy); \
+       PNT(type, COLOR2(2, 11), ":/marine/" name "-black-orange.png", dx, dy); 
\
        PNT(type, COLOR2(3, 1), ":/marine/" name "-red-white.png", dx, dy); \
        PNT(type, COLOR2(3, 2), ":/marine/" name "-red-black.png", dx, dy); \
        PNT(type, COLOR2(3, 4), ":/marine/" name "-red-green.png", dx, dy); \
@@ -48,14 +49,15 @@
        PNT(type, COLOR2(4, 2), ":/marine/" name "-green-black.png", dx, dy); \
        PNT(type, COLOR2(4, 3), ":/marine/" name "-green-red.png", dx, dy); \
        PNT(type, COLOR2(6, 1), ":/marine/" name "-yellow-white.png", dx, dy); \
-       PNT(type, COLOR2(9, 1), ":/marine/" name "-yellow-white.png", dx, dy); \
-       PNT(type, COLOR2(11, 1), ":/marine/" name "-yellow-white.png", dx, dy); 
\
+       PNT(type, COLOR2(8, 1), ":/marine/" name "-orange-white.png", dx, dy); \
+       PNT(type, COLOR2(9, 1), ":/marine/" name "-orange-white.png", dx, dy); \
+       PNT(type, COLOR2(11, 1), ":/marine/" name "-orange-white.png", dx, dy); 
\
        PNT(type, COLOR2(6, 2), ":/marine/" name "-yellow-black.png", dx, dy); \
-       PNT(type, COLOR2(9, 2), ":/marine/" name "-yellow-black.png", dx, dy); \
-       PNT(type, COLOR2(11, 2), ":/marine/" name "-yellow-black.png", dx, dy); 
\
+       PNT(type, COLOR2(9, 2), ":/marine/" name "-orange-black.png", dx, dy); \
+       PNT(type, COLOR2(11, 2), ":/marine/" name "-orange-black.png", dx, dy); 
\
        PNT(type, COLOR3(1, 6, 1), ":/marine/" name "-white-yellow-white.png", 
dx, dy); \
-       PNT(type, COLOR3(1, 9, 1), ":/marine/" name "-white-yellow-white.png", 
dx, dy); \
-       PNT(type, COLOR3(1, 11, 1), ":/marine/" name "-white-yellow-white.png", 
dx, dy); \
+       PNT(type, COLOR3(1, 9, 1), ":/marine/" name "-white-orange-white.png", 
dx, dy); \
+       PNT(type, COLOR3(1, 11, 1), ":/marine/" name "-white-orange-white.png", 
dx, dy); \
        PNT(type, COLOR3(2, 1, 2), ":/marine/" name "-black-white-black.png", 
dx, dy); \
        PNT(type, COLOR3(2, 3, 2), ":/marine/" name "-black-red-black.png", dx, 
dy); \
        PNT(type, COLOR3(2, 6, 2), ":/marine/" name "-black-yellow-black.png", 
dx, dy); \
@@ -104,7 +106,19 @@
        _polygons[SUBTYPE(DEPARE, 5)] = Polygon(QBrush(QColor(0xc0, 0xe0, 
0xff)));
        _polygons[SUBTYPE(DEPARE, 6)] = Polygon(QBrush(QColor(0xff, 0xff, 
0xff)));
        _polygons[TYPE(DMPGRD)] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
-         Qt::Dense3Pattern));
+         Qt::Dense5Pattern));
+       _polygons[SUBTYPE(DMPGRD, 1)] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
+         Qt::Dense5Pattern));
+       _polygons[SUBTYPE(DMPGRD, 2)] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
+         Qt::Dense5Pattern));
+       _polygons[SUBTYPE(DMPGRD, 3)] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
+         Qt::Dense5Pattern));
+       _polygons[SUBTYPE(DMPGRD, 4)] = Polygon(QBrush(QColor(0xff, 0x40, 0x40),
+         Qt::Dense5Pattern));
+       _polygons[SUBTYPE(DMPGRD, 5)] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
+         Qt::Dense5Pattern));
+       _polygons[SUBTYPE(DMPGRD, 6)] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
+         Qt::Dense5Pattern));
        _polygons[TYPE(FAIRWY)] = Polygon(Qt::NoBrush, QPen(QColor(0x88, 0x88, 
0x88),
          1, Qt::DashDotDotLine));
        _polygons[TYPE(OBSTRN)] = Polygon(Qt::NoBrush, QPen(QColor(0, 0, 0), 
1.5,
@@ -116,10 +130,57 @@
        _polygons[TYPE(HULKES)] = Polygon(QBrush(QColor(0x33, 0x33, 0x33)));
        _polygons[TYPE(I_HULKES)] = Polygon(QBrush(QColor(0x33, 0x33, 0x33)));
        _polygons[TYPE(DRYDOC)] = Polygon(QBrush(QColor(0x33, 0x33, 0x33)));
-       _polygons[TYPE(SLCONS)] = Polygon(Qt::NoBrush,
-         QPen(QColor(0x33, 0x33, 0x33), 1.5, Qt::DashLine));
-       _polygons[TYPE(I_SLCONS)] = Polygon(Qt::NoBrush,
-         QPen(QColor(0x33, 0x33, 0x33), 1.5, Qt::DashLine));
+       _polygons[TYPE(SLCONS)] = Polygon(QBrush(QColor(0xe8, 0xe0, 0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 1)] = Polygon(QBrush(QColor(0xe8, 0xe0, 0x64),
+         Qt::Dense4Pattern), QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 2)] = Polygon(QBrush(QColor(0xe8, 0xe0, 0x64),
+         Qt::Dense4Pattern), QPen(QColor(0, 0, 0), 2, Qt::DashLine));
+       _polygons[SUBTYPE(SLCONS, 3)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 4)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 5)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 6)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 7)] = Polygon(Qt::NoBrush, QPen(QColor(0, 0, 
0),
+         2, Qt::DashLine));
+       _polygons[SUBTYPE(SLCONS, 8)] = Polygon(QBrush(QColor(0xe8, 0xe0, 0x64),
+         Qt::Dense4Pattern), QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 9)] = Polygon(QBrush(QColor(0xe8, 0xe0, 0x64),
+         Qt::Dense4Pattern), QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 10)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 11)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 12)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2, Qt::DashLine));
+       _polygons[SUBTYPE(SLCONS, 13)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2, Qt::DashLine));
+       _polygons[SUBTYPE(SLCONS, 14)] = Polygon(QBrush(QColor(0xe8, 0xe0, 
0x64)),
+         QPen(QColor(0, 0, 0), 2));
+       _polygons[SUBTYPE(SLCONS, 15)] = Polygon(Qt::NoBrush, QPen(QColor(0, 0, 
0), 2));
+       _polygons[SUBTYPE(SLCONS, 16)] = Polygon(Qt::NoBrush, QPen(QColor(0, 0, 
0),
+         2, Qt::DashLine));
+       _polygons[TYPE(I_SLCONS)] = _polygons[TYPE(SLCONS)];
+       _polygons[SUBTYPE(I_SLCONS, 1)] = _polygons[SUBTYPE(SLCONS, 1)];
+       _polygons[SUBTYPE(I_SLCONS, 2)] = _polygons[SUBTYPE(SLCONS, 2)];
+       _polygons[SUBTYPE(I_SLCONS, 3)] = _polygons[SUBTYPE(SLCONS, 3)];
+       _polygons[SUBTYPE(I_SLCONS, 4)] = _polygons[SUBTYPE(SLCONS, 4)];
+       _polygons[SUBTYPE(I_SLCONS, 5)] = _polygons[SUBTYPE(SLCONS, 5)];
+       _polygons[SUBTYPE(I_SLCONS, 6)] = _polygons[SUBTYPE(SLCONS, 6)];
+       _polygons[SUBTYPE(I_SLCONS, 7)] = _polygons[SUBTYPE(SLCONS, 7)];
+       _polygons[SUBTYPE(I_SLCONS, 8)] = _polygons[SUBTYPE(SLCONS, 8)];
+       _polygons[SUBTYPE(I_SLCONS, 9)] = _polygons[SUBTYPE(SLCONS, 9)];
+       _polygons[SUBTYPE(I_SLCONS, 10)] = _polygons[SUBTYPE(SLCONS, 10)];
+       _polygons[SUBTYPE(I_SLCONS, 11)] = _polygons[SUBTYPE(SLCONS, 11)];
+       _polygons[SUBTYPE(I_SLCONS, 12)] = _polygons[SUBTYPE(SLCONS, 12)];
+       _polygons[SUBTYPE(I_SLCONS, 13)] = _polygons[SUBTYPE(SLCONS, 13)];
+       _polygons[SUBTYPE(I_SLCONS, 14)] = _polygons[SUBTYPE(SLCONS, 14)];
+       _polygons[SUBTYPE(I_SLCONS, 15)] = _polygons[SUBTYPE(SLCONS, 15)];
+       _polygons[SUBTYPE(I_SLCONS, 16)] = _polygons[SUBTYPE(SLCONS, 16)];
+       _polygons[SUBTYPE(I_SLCONS, 19)] = Polygon(Qt::NoBrush, QPen(QColor(0, 
0, 0), 2));
        _polygons[TYPE(LAKARE)] = Polygon(QBrush(QColor(0x9f, 0xc4, 0xe1)),
          QPen(QColor(0, 0, 0), 1));
        _polygons[TYPE(CANALS)] = Polygon(QBrush(QColor(0x9f, 0xc4, 0xe1)),
@@ -134,6 +195,7 @@
        _polygons[TYPE(UNSARE)] = Polygon(QBrush(QColor(0x99, 0x99, 0x99)));
        _polygons[SUBTYPE(RESARE, 1)] = 
Polygon(QImage(":/marine/safety-zone-line.png"));
        _polygons[SUBTYPE(RESARE, 2)] = 
Polygon(QImage(":/marine/noanchor-line.png"));
+       _polygons[SUBTYPE(RESARE, 3)] = 
Polygon(QImage(":/marine/nofishing-line.png"));
        _polygons[SUBTYPE(RESARE, 4)] = 
Polygon(QImage(":/marine/nature-reserve-line.png"));
        _polygons[SUBTYPE(RESARE, 5)] = 
Polygon(QImage(":/marine/sanctuary-line.png"));
        _polygons[SUBTYPE(RESARE, 6)] = 
Polygon(QImage(":/marine/sanctuary-line.png"));
@@ -151,6 +213,7 @@
        _polygons[SUBTYPE(RESARE, 26)] = 
Polygon(QImage(":/marine/safety-zone-line.png"));
        _polygons[SUBTYPE(I_RESARE, 1)] = _polygons[SUBTYPE(RESARE, 1)];
        _polygons[SUBTYPE(I_RESARE, 2)] = _polygons[SUBTYPE(RESARE, 2)];
+       _polygons[SUBTYPE(I_RESARE, 3)] = _polygons[SUBTYPE(RESARE, 3)];
        _polygons[SUBTYPE(I_RESARE, 4)] = _polygons[SUBTYPE(RESARE, 4)];
        _polygons[SUBTYPE(I_RESARE, 5)] = _polygons[SUBTYPE(RESARE, 5)];
        _polygons[SUBTYPE(I_RESARE, 6)] = _polygons[SUBTYPE(RESARE, 6)];
@@ -225,10 +288,14 @@
        _polygons[SUBTYPE(I_BERTHS, 6)] = _polygons[TYPE(BERTHS)];
        _polygons[TYPE(I_TRNBSN)] = Polygon(Qt::NoBrush, QPen(QColor(0xeb, 
0x49, 0xeb),
          1, Qt::DashLine));
-       _polygons[TYPE(CONZNE)] = Polygon(Qt::NoBrush, QPen(QColor(0xeb, 0x49, 
0xeb),
-         1, Qt::DashDotLine));
        _polygons[TYPE(PILBOP)] = Polygon(Qt::NoBrush, QPen(QColor(0xeb, 0x49, 
0xeb),
          1, Qt::DashLine));
+       _polygons[TYPE(CONZNE)] = Polygon(
+         QImage(":/marine/seaward-limit-of-contiguous-zone.png"));
+       _polygons[TYPE(TESARE)] = Polygon(
+         QImage(":/marine/seaward-limit-of-territorial-sea.png"));
+       _polygons[SUBTYPE(ADMARE, 2)] = Polygon(
+         QImage(":/marine/international-maritime-boundary.png"));
 
        _drawOrder
          << TYPE(LNDARE) << SUBTYPE(DEPARE, 0) << SUBTYPE(DEPARE, 1)
@@ -238,32 +305,46 @@
          << TYPE(DRGARE) << TYPE(FAIRWY) << TYPE(LOKBSN) << TYPE(I_LOKBSN)
          << TYPE(BUAARE) << TYPE(BUISGL) << TYPE(SILTNK) << TYPE(AIRARE)
          << TYPE(BRIDGE) << TYPE(I_BRIDGE) << TYPE(TUNNEL) << TYPE(I_TERMNL)
-         << TYPE(SLCONS) << TYPE(I_SLCONS) << TYPE(PONTON) << TYPE(I_PONTON)
-         << TYPE(HULKES) << TYPE(I_HULKES) << TYPE(FLODOC) << TYPE(I_FLODOC)
-         << TYPE(DRYDOC) << TYPE(DAMCON) << TYPE(PYLONS) << TYPE(MORFAC)
-         << TYPE(GATCON) << TYPE(I_GATCON) << TYPE(BERTHS) << TYPE(I_BERTHS)
-         << SUBTYPE(I_BERTHS, 6) << TYPE(DMPGRD) << TYPE(TSEZNE) << 
TYPE(OBSTRN)
-         << TYPE(UWTROC) << TYPE(DWRTPT) << SUBTYPE(ACHARE, 1)
-         << SUBTYPE(ACHARE, 2) << SUBTYPE(ACHARE, 3) << SUBTYPE(ACHARE, 4)
-         << SUBTYPE(ACHARE, 5) << SUBTYPE(ACHARE, 6) << SUBTYPE(ACHARE, 7)
-         << SUBTYPE(ACHARE, 8) << SUBTYPE(ACHARE, 9) << SUBTYPE(I_ACHARE, 1)
-         << SUBTYPE(I_ACHARE, 2) << SUBTYPE(I_ACHARE, 3) << SUBTYPE(I_ACHARE, 
4)
-         << SUBTYPE(I_ACHARE, 5) << SUBTYPE(I_ACHARE, 6) << SUBTYPE(I_ACHARE, 
7)
-         << SUBTYPE(I_ACHARE, 8) << SUBTYPE(I_ACHARE, 9) << SUBTYPE(I_ACHARE, 
10)
-         << SUBTYPE(I_ACHARE, 11) << SUBTYPE(I_ACHARE, 12) << SUBTYPE(RESARE, 
1)
-         << SUBTYPE(I_RESARE, 1) << SUBTYPE(RESARE, 2) << SUBTYPE(I_RESARE, 2)
-         << SUBTYPE(RESARE, 4) << SUBTYPE(I_RESARE, 4) << SUBTYPE(RESARE, 5)
-         << SUBTYPE(I_RESARE, 5) << SUBTYPE(RESARE, 6) << SUBTYPE(I_RESARE, 6)
-         << SUBTYPE(RESARE, 7) << SUBTYPE(I_RESARE, 7) << SUBTYPE(RESARE, 8)
-         << SUBTYPE(I_RESARE, 8) << SUBTYPE(RESARE, 9) << SUBTYPE(I_RESARE, 9)
-         << SUBTYPE(RESARE, 12) << SUBTYPE(I_RESARE, 12) << SUBTYPE(RESARE, 14)
-         << SUBTYPE(I_RESARE, 14) << SUBTYPE(RESARE, 17) << SUBTYPE(I_RESARE, 
17)
-         << SUBTYPE(RESARE, 22) << SUBTYPE(I_RESARE, 22) << SUBTYPE(RESARE, 23)
-         << SUBTYPE(I_RESARE, 23) << SUBTYPE(RESARE, 25) << SUBTYPE(I_RESARE, 
25)
-         << SUBTYPE(RESARE, 26) << SUBTYPE(I_RESARE, 26) << TYPE(CBLARE)
-         << TYPE(PIPARE) << TYPE(PRCARE) << TYPE(I_TRNBSN) << TYPE(PILBOP)
-         << SUBTYPE(MARCUL, 0) << SUBTYPE(MARCUL, 1) << SUBTYPE(MARCUL, 2)
-         << SUBTYPE(MARCUL, 3) << TYPE(CONZNE);
+         << TYPE(SLCONS) << SUBTYPE(SLCONS, 1) << SUBTYPE(SLCONS, 2)
+         << SUBTYPE(SLCONS, 8) << SUBTYPE(SLCONS, 9) << SUBTYPE(SLCONS, 3)
+         << SUBTYPE(SLCONS, 4) << SUBTYPE(SLCONS, 5) << SUBTYPE(SLCONS, 6)
+         << SUBTYPE(SLCONS, 7) << SUBTYPE(SLCONS, 10) << SUBTYPE(SLCONS, 11)
+         << SUBTYPE(SLCONS, 12) << SUBTYPE(SLCONS, 13) << SUBTYPE(SLCONS, 14)
+         << SUBTYPE(SLCONS, 15) << SUBTYPE(SLCONS, 16) << TYPE(I_SLCONS)
+         << SUBTYPE(I_SLCONS, 1) << SUBTYPE(I_SLCONS, 2) << SUBTYPE(I_SLCONS, 
3)
+         << SUBTYPE(I_SLCONS, 4) << SUBTYPE(I_SLCONS, 5) << SUBTYPE(I_SLCONS, 
6)
+         << SUBTYPE(I_SLCONS, 7) << SUBTYPE(I_SLCONS, 8) << SUBTYPE(I_SLCONS, 
9)
+         << SUBTYPE(I_SLCONS, 10) << SUBTYPE(I_SLCONS, 11) << 
SUBTYPE(I_SLCONS, 12)
+         << SUBTYPE(I_SLCONS, 13) << SUBTYPE(I_SLCONS, 14) << 
SUBTYPE(I_SLCONS, 15)
+         << SUBTYPE(I_SLCONS, 16) << SUBTYPE(I_SLCONS, 19) << TYPE(PONTON)
+         << TYPE(I_PONTON) << TYPE(HULKES) << TYPE(I_HULKES) << TYPE(FLODOC)
+         << TYPE(I_FLODOC) << TYPE(DRYDOC) << TYPE(DAMCON) << TYPE(PYLONS)
+         << TYPE(MORFAC) << TYPE(GATCON) << TYPE(I_GATCON) << TYPE(BERTHS)
+         << TYPE(I_BERTHS) << SUBTYPE(I_BERTHS, 6) << TYPE(DMPGRD)
+         << SUBTYPE(DMPGRD, 1) << SUBTYPE(DMPGRD, 2) << SUBTYPE(DMPGRD, 3)
+         << SUBTYPE(DMPGRD, 4) << SUBTYPE(DMPGRD, 5) << SUBTYPE(DMPGRD, 6)
+         << TYPE(TSEZNE) << TYPE(OBSTRN) << TYPE(UWTROC) << TYPE(DWRTPT)
+         << SUBTYPE(ACHARE, 1) << SUBTYPE(ACHARE, 2) << SUBTYPE(ACHARE, 3)
+         << SUBTYPE(ACHARE, 4) << SUBTYPE(ACHARE, 5) << SUBTYPE(ACHARE, 6)
+         << SUBTYPE(ACHARE, 7) << SUBTYPE(ACHARE, 8) << SUBTYPE(ACHARE, 9)
+         << SUBTYPE(I_ACHARE, 1) << SUBTYPE(I_ACHARE, 2) << SUBTYPE(I_ACHARE, 
3)
+         << SUBTYPE(I_ACHARE, 4) << SUBTYPE(I_ACHARE, 5) << SUBTYPE(I_ACHARE, 
6)
+         << SUBTYPE(I_ACHARE, 7) << SUBTYPE(I_ACHARE, 8) << SUBTYPE(I_ACHARE, 
9)
+         << SUBTYPE(I_ACHARE, 10) << SUBTYPE(I_ACHARE, 11) << 
SUBTYPE(I_ACHARE, 12)
+         << SUBTYPE(RESARE, 1) << SUBTYPE(I_RESARE, 1) << SUBTYPE(RESARE, 2)
+         << SUBTYPE(I_RESARE, 2) << SUBTYPE(RESARE, 4) << SUBTYPE(I_RESARE, 4)
+         << SUBTYPE(RESARE, 5) << SUBTYPE(I_RESARE, 5) << SUBTYPE(RESARE, 6)
+         << SUBTYPE(I_RESARE, 6) << SUBTYPE(RESARE, 7) << SUBTYPE(I_RESARE, 7)
+         << SUBTYPE(RESARE, 8) << SUBTYPE(I_RESARE, 8) << SUBTYPE(RESARE, 9)
+         << SUBTYPE(I_RESARE, 9) << SUBTYPE(RESARE, 12) << SUBTYPE(I_RESARE, 
12)
+         << SUBTYPE(RESARE, 14) << SUBTYPE(I_RESARE, 14) << SUBTYPE(RESARE, 17)
+         << SUBTYPE(I_RESARE, 17) << SUBTYPE(RESARE, 22) << SUBTYPE(I_RESARE, 
22)
+         << SUBTYPE(RESARE, 23) << SUBTYPE(I_RESARE, 23) << SUBTYPE(RESARE, 25)
+         << SUBTYPE(I_RESARE, 25) << SUBTYPE(RESARE, 26) << SUBTYPE(I_RESARE, 
26)
+         << TYPE(CBLARE) << TYPE(PIPARE) << TYPE(PRCARE) << TYPE(I_TRNBSN)
+         << TYPE(PILBOP) << SUBTYPE(MARCUL, 0) << SUBTYPE(MARCUL, 1)
+         << SUBTYPE(MARCUL, 2) << SUBTYPE(MARCUL, 3) << TYPE(CONZNE)
+         << TYPE(TESARE) << SUBTYPE(ADMARE, 2);
 }
 
 void Style::lineStyle(qreal ratio)
@@ -282,8 +363,33 @@
        _lines[TYPE(PIPSOL)].setTextFontSize(Small);
        _lines[TYPE(NAVLNE)] = Line(QPen(QColor(0, 0, 0), 1, Qt::DashLine));
        _lines[TYPE(COALNE)] = Line(QPen(QColor(0, 0, 0), 1, Qt::SolidLine));
-       _lines[TYPE(SLCONS)] = Line(QPen(QColor(0, 0, 0), 2, Qt::SolidLine));
-       _lines[TYPE(I_SLCONS)] = Line(QPen(QColor(0, 0, 0), 2, Qt::SolidLine));
+       _lines[TYPE(SLCONS)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 1)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 2)] = Line(QPen(QColor(0, 0, 0), 2, 
Qt::DashLine));
+       _lines[SUBTYPE(SLCONS, 3)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 4)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 5)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 6)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 7)] = Line(QPen(QColor(0, 0, 0), 2, 
Qt::DashLine));
+       _lines[SUBTYPE(SLCONS, 10)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 11)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[SUBTYPE(SLCONS, 12)] = Line(QPen(QColor(0, 0, 0), 2, 
Qt::DashLine));
+       _lines[SUBTYPE(SLCONS, 13)] = Line(QPen(QColor(0, 0, 0), 2, 
Qt::DashLine));
+       _lines[SUBTYPE(SLCONS, 15)] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[TYPE(I_SLCONS)] = _lines[TYPE(SLCONS)];
+       _lines[SUBTYPE(I_SLCONS, 1)] = _lines[SUBTYPE(SLCONS, 1)];
+       _lines[SUBTYPE(I_SLCONS, 2)] = _lines[SUBTYPE(SLCONS, 2)];
+       _lines[SUBTYPE(I_SLCONS, 3)] = _lines[SUBTYPE(SLCONS, 3)];
+       _lines[SUBTYPE(I_SLCONS, 4)] = _lines[SUBTYPE(SLCONS, 4)];
+       _lines[SUBTYPE(I_SLCONS, 5)] = _lines[SUBTYPE(SLCONS, 5)];
+       _lines[SUBTYPE(I_SLCONS, 6)] = _lines[SUBTYPE(SLCONS, 6)];
+       _lines[SUBTYPE(I_SLCONS, 7)] = _lines[SUBTYPE(SLCONS, 7)];
+       _lines[SUBTYPE(I_SLCONS, 10)] = _lines[SUBTYPE(SLCONS, 10)];
+       _lines[SUBTYPE(I_SLCONS, 11)] = _lines[SUBTYPE(SLCONS, 11)];
+       _lines[SUBTYPE(I_SLCONS, 12)] = _lines[SUBTYPE(SLCONS, 12)];
+       _lines[SUBTYPE(I_SLCONS, 13)] = _lines[SUBTYPE(SLCONS, 13)];
+       _lines[SUBTYPE(I_SLCONS, 15)] = _lines[SUBTYPE(SLCONS, 15)];
+       _lines[SUBTYPE(I_SLCONS, 19)] = Line(QPen(QColor(0, 0, 0), 2));
        _lines[TYPE(PONTON)] = Line(QPen(QColor(0x33, 0x33, 0x33), 1, 
Qt::SolidLine));
        _lines[TYPE(DYKCON)] = Line(QPen(QColor(0x33, 0x33, 0x33), 2, 
Qt::SolidLine));
        _lines[TYPE(RIVERS)] = Line(QPen(QColor(0, 0, 0), 1, Qt::SolidLine));
@@ -305,6 +411,7 @@
          Qt::SolidLine));
        _lines[TYPE(I_WTWAXS)] = Line(QPen(QColor(0, 0, 0), 0, Qt::DashLine));
        _lines[SUBTYPE(RECTRC, 1)] = Line(QPen(QColor(0, 0, 0), 0, 
Qt::SolidLine));
+       _lines[SUBTYPE(RECTRC, 1)].setTextFontSize(Small);
        _lines[SUBTYPE(RECTRC, 2)] = Line(QPen(QColor(0, 0, 0), 0, 
Qt::DashLine));
        _lines[SUBTYPE(RCRTCL, 1)] = Line(QPen(QColor(0xeb, 0x49, 0xeb), 0,
          Qt::SolidLine));
@@ -327,6 +434,8 @@
          Qt::DashLine));
        _lines[SUBTYPE(RDOCAL, 4)] = Line(QPen(QColor(0xeb, 0x49, 0xeb), 1,
          Qt::DashLine));
+       _lines[TYPE(STSLNE)] = Line(
+         QImage(":/marine/straight-territorial-sea-baseline.png"));
 }
 
 void Style::pointStyle(qreal ratio)
@@ -458,6 +567,7 @@
        _points[TYPE(PILBOP)] = Point(QImage(":/marine/boarding-place.png"));
        _points[TYPE(SISTAT)] = Point(QImage(":/marine/pylon.png"));
        _points[TYPE(SLCONS)] = Point(QImage(":/marine/construction.png"), 
Small);
+       _points[TYPE(I_SLCONS)] = Point(QImage(":/marine/construction.png"), 
Small);
        _points[TYPE(CURENT)] = Point(QImage(":/marine/current.png"));
        _points[SUBTYPE(WEDKLP, 0)] = Point(QImage(":/marine/kelp.png"));
        _points[SUBTYPE(WEDKLP, 1)] = Point(QImage(":/marine/kelp.png"));
@@ -540,6 +650,15 @@
        _points[SUBTYPE(I_RESARE, 23)] = _points[SUBTYPE(RESARE, 23)];
        _points[SUBTYPE(I_RESARE, 25)] = _points[SUBTYPE(RESARE, 25)];
        _points[SUBTYPE(I_RESARE, 26)] = _points[SUBTYPE(RESARE, 26)];
+       _points[TYPE(DMPGRD)].setTextColor(QColor(0x5d, 0x5b, 0x59));
+       _points[TYPE(DMPGRD)].setHaloColor(QColor());
+       _points[SUBTYPE(DMPGRD, 1)] = _points[TYPE(DMPGRD)];
+       _points[SUBTYPE(DMPGRD, 2)] = _points[TYPE(DMPGRD)];
+       _points[SUBTYPE(DMPGRD, 3)] = _points[TYPE(DMPGRD)];
+       _points[SUBTYPE(DMPGRD, 4)].setTextColor(QColor(0xff, 0x40, 0x40));
+       _points[SUBTYPE(DMPGRD, 4)].setHaloColor(QColor());
+       _points[SUBTYPE(DMPGRD, 5)] = _points[TYPE(DMPGRD)];
+       _points[SUBTYPE(DMPGRD, 6)] = _points[TYPE(DMPGRD)];
 
        _points[SUBTYPE(I_BUNSTA, 1)] = Point(svg2img(":/POI/fuel-11.svg", 
ratio),
          Small);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/mapdata.h 
new/GPXSee-13.43/src/map/IMG/mapdata.h
--- old/GPXSee-13.42/src/map/IMG/mapdata.h      2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/mapdata.h      2025-05-20 21:03:34.000000000 
+0200
@@ -29,18 +29,25 @@
 {
 public:
        struct Poly {
-               Poly() : oneway(false) {}
+               Poly() : flags(0) {}
+
+               enum Flags {
+                       OneWay = 1,
+                       Invert = 2,
+                       Direction = 4,
+                       Dashed = 8
+               };
 
                /* QPointF insted of Coordinates for performance reasons (no 
need to
                   duplicate all the vectors for drawing). Note, that we do not 
want to
                   ll2xy() the points in the MapData class as this can not be 
done in
                   parallel. */
                QVector<QPointF> points;
+               RectC boundingRect;
                Label label;
                Raster raster;
                quint32 type;
-               RectC boundingRect;
-               bool oneway;
+               quint32 flags;
 
                bool operator<(const Poly &other) const
                  {return type > other.type;}
@@ -50,7 +57,6 @@
                Point() : id(0), flags(0) {}
 
                enum Flags {
-                       NoFlag = 0,
                        ClassLabel = 1,
                };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/netfile.cpp 
new/GPXSee-13.43/src/map/IMG/netfile.cpp
--- old/GPXSee-13.42/src/map/IMG/netfile.cpp    2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/netfile.cpp    2025-05-20 21:03:34.000000000 
+0200
@@ -480,7 +480,7 @@
        if (lbl)
                linkLabel(hdl, linkOffset, lbl, lblHdl, poly.label);
        if ((linkInfo.flags >> 3) & 1)
-               poly.oneway = true;
+               poly.flags |= MapData::Poly::OneWay;
 
        lines->append(poly);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/rastertile.cpp 
new/GPXSee-13.43/src/map/IMG/rastertile.cpp
--- old/GPXSee-13.42/src/map/IMG/rastertile.cpp 2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/rastertile.cpp 2025-05-20 21:03:34.000000000 
+0200
@@ -186,6 +186,21 @@
        }
 }
 
+static quint32 lineType(quint32 type, quint32 flags)
+{
+       if (Style::isCartographicLine(type)) {
+               if (flags & MapData::Poly::Dashed)
+                       return type | (flags & 0xFF000000) | 1<<20;
+               else
+                       return type | (flags & 0xFF000000);
+       } else if (Style::isRecommendedRoute(type))
+               return (flags & MapData::Poly::Dashed) ? type | 1<<20 : type;
+       else if (flags & MapData::Poly::Direction)
+               return type | 2<<20;
+       else
+               return type;
+}
+
 void RasterTile::drawLines(QPainter *painter,
   const QList<MapData::Poly> &lines) const
 {
@@ -204,11 +219,15 @@
 
        for (int i = 0; i < lines.size(); i++) {
                const MapData::Poly &poly = lines.at(i);
-               const Style::Line &style = _data->style()->line(poly.type);
+               const Style::Line &style = _data->style()->line(
+                 lineType(poly.type, poly.flags));
 
-               if (!style.img().isNull())
-                       BitmapLine::draw(painter, poly.points, style.img());
-               else if (style.foreground() != Qt::NoPen) {
+               if (!style.img().isNull()) {
+                       if (poly.flags & MapData::Poly::Invert)
+                               BitmapLine::drawR(painter, poly.points, 
style.img());
+                       else
+                               BitmapLine::draw(painter, poly.points, 
style.img());
+               } else if (style.foreground() != Qt::NoPen) {
                        painter->setPen(style.foreground());
                        painter->drawPolyline(poly.points);
                }
@@ -383,7 +402,7 @@
                  ? &style.text().color() : Style::isContourLine(poly.type)
                        ? 0 : &textColor;
                const QColor *hColor = Style::isContourLine(poly.type) ? 0 : 
&haloColor;
-               const QImage *img = poly.oneway
+               const QImage *img = (poly.flags & MapData::Poly::OneWay)
                  ? Style::isWaterLine(poly.type)
                        ? &arrows[WATER] : &arrows[ROAD] : 0;
                const QString *label = poly.label.text().isEmpty()
@@ -523,7 +542,8 @@
                const MapData::Point &point = points.at(i);
                const Style *style = _data->style();
                const Style::Point &ps = 
style->point(Style::hasColorset(point.type)
-                 ? point.type | (point.flags & 0xFF000000) : point.type);
+                 ? point.type | (point.flags & 0xFF000000)
+                 : point.type | (point.flags & 0x00F00000));
                bool poi = Style::isPOI(point.type);
                bool sl = sectorLight(point.lights);
 
@@ -559,8 +579,6 @@
                } else
                        delete item;
        }
-
-
 }
 
 void RasterTile::fetchData(QList<MapData::Poly> &polygons,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/rgnfile.cpp 
new/GPXSee-13.43/src/map/IMG/rgnfile.cpp
--- old/GPXSee-13.42/src/map/IMG/rgnfile.cpp    2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/rgnfile.cpp    2025-05-20 21:03:34.000000000 
+0200
@@ -244,6 +244,101 @@
        return true;
 }
 
+bool RGNFile::readLineStyle(Handle &hdl, quint8 flags, quint32 size,
+  MapData::Poly *line) const
+{
+       line->flags |= (flags & 0xf)<<24;
+
+       if (size == 1) {
+               quint32 val;
+
+               if (!readUInt8(hdl, val))
+                       return false;
+
+               if (val & 3)
+                       line->flags |= MapData::Poly::Dashed;
+               if ((val >> 3) & 3)
+                       line->flags |= MapData::Poly::Direction;
+               if ((val >> 3) & 2)
+                       line->flags |= MapData::Poly::Invert;
+
+               return true;
+       } else {
+               if ((flags >> 4) & 3)
+                       line->flags |= MapData::Poly::Dashed;
+               return (!size);
+       }
+}
+
+bool RGNFile::readRecommendedRoute(Handle &hdl, quint8 flags, quint32 size,
+  MapData::Poly *line) const
+{
+       quint32 f2;
+
+       if (!(size >= 1 && readUInt8(hdl, f2)))
+               return false;
+       size--;
+
+       if ((flags >> 5) == 7) {
+               quint32 f3;
+               if (!(size >= 1 && readUInt8(hdl, f3)))
+                       return false;
+               size--;
+
+               if (f3 & 1) {
+                       quint32 v1;
+                       if (!(size >= 1 && readUInt8(hdl, v1)))
+                               return false;
+                       size--;
+                       if (v1 & 1) {
+                               quint32 v2;
+                               if (!(size >= 1 && readUInt8(hdl, v2)))
+                                       return false;
+                               size--;
+                       }
+               }
+               if (f3 & 2) {
+                       quint32 angle;
+                       if (!(size >= 2 && readUInt16(hdl, angle)))
+                               return false;
+                       size -= 2;
+                       line->label = Label(QString::number(angle / 10.0) + 
QChar(0x00B0));
+               }
+               if (f3 & 4) {
+                       quint32 v;
+                       if (!(size >= 1 && readUInt8(hdl, v)))
+                               return false;
+                       size--;
+
+                       if ((v >> 4) & 3) {
+                               line->flags |= MapData::Poly::Dashed;
+                               line->label = Label();
+                       }
+               }
+       } else {
+               if ((f2 & 0xe)) {
+                       quint32 angle;
+                       if (!(size >= 2 && readUInt16(hdl, angle)))
+                               return false;
+                       size -= 2;
+                       line->label = Label(QString::number(angle / 10.0) + 
QChar(0x00B0));
+               } else if (f2 & 0x70) {
+                       quint32 v1;
+                       if (!(size >= 1 && readUInt8(hdl, v1)))
+                               return false;
+                       size--;
+                       if (v1 & 1) {
+                               quint32 v2;
+                               if (!(size >= 1 && readUInt8(hdl, v2)))
+                                       return false;
+                               size--;
+                       }
+               }
+       }
+
+       return (size == 0);
+}
+
 bool RGNFile::readClassFields(Handle &hdl, SegmentType segmentType,
   void *object, LBLFile *lbl, Handle &lblHdl) const
 {
@@ -251,6 +346,8 @@
        quint32 rs = 0;
        MapData::Poly *poly = (segmentType == Polygon)
          ? (MapData::Poly *) object : 0;
+       MapData::Poly *line = (segmentType == Line)
+         ? (MapData::Poly *) object : 0;
        MapData::Point *point = (segmentType == Point)
          ? (MapData::Point *) object : 0;
 
@@ -277,9 +374,9 @@
 
        if (poly && Style::isRaster(poly->type))
                readRasterInfo(hdl, lbl, rs, poly);
+
        if (point && !Style::isMarinePoint(point->type))
                readLabel(hdl, lbl, lblHdl, flags, rs, point);
-
        if (point && Style::isDepthPoint(point->type))
                readDepthInfo(hdl, flags, rs, point);
        if (point && Style::isObstructionPoint(point->type))
@@ -288,6 +385,13 @@
                readBuoyInfo(hdl, flags, rs, point);
        if (point && Style::isLight(point->type))
                readLightInfo(hdl, flags, rs, point);
+       if (point && Style::isLabelPoint(point->type))
+               point->flags |= (flags & 0xf)<<20;
+
+       if (line && Style::isStyledLine(line->type))
+               readLineStyle(hdl, flags, rs, line);
+       if (line && Style::isRecommendedRoute(line->type))
+               readRecommendedRoute(hdl, flags, rs, line);
 
        return seek(hdl, off + rs);
 }
@@ -597,8 +701,7 @@
                poly.type = (segmentType == Polygon)
                  ? ((quint32)(type & 0x7F)) << 8 : ((quint32)(type & 0x3F)) << 
8;
                if (segmentType == Line && type & 0x40)
-                       poly.oneway = true;
-
+                       poly.flags |= MapData::Poly::OneWay;
 
                QPoint pos(subdiv->lon() + LS(lon, 24-subdiv->bits()),
                  subdiv->lat() + LS(lat, 24-subdiv->bits()));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/rgnfile.h 
new/GPXSee-13.43/src/map/IMG/rgnfile.h
--- old/GPXSee-13.42/src/map/IMG/rgnfile.h      2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/rgnfile.h      2025-05-20 21:03:34.000000000 
+0200
@@ -69,6 +69,10 @@
          MapData::Point *point) const;
        bool readLightInfo(Handle &hdl, quint8 flags, quint32 size,
          MapData::Point *point) const;
+       bool readLineStyle(Handle &hdl, quint8 flags, quint32 size,
+         MapData::Poly *line) const;
+       bool readRecommendedRoute(Handle &hdl, quint8 flags, quint32 size,
+         MapData::Poly *line) const;
        bool readLabel(Handle &hdl, LBLFile *lbl, Handle &lblHdl,
          quint8 flags, quint32 size, MapData::Point *point) const;
        bool readLclNavaid(Handle &hdl, quint32 size,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/style.cpp 
new/GPXSee-13.43/src/map/IMG/style.cpp
--- old/GPXSee-13.42/src/map/IMG/style.cpp      2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/style.cpp      2025-05-20 21:03:34.000000000 
+0200
@@ -7,8 +7,8 @@
 using namespace IMG;
 using namespace Util;
 
-#define PNT(type, color, img, dx, dy) \
-  _points[(type) | (color)<<24] = Point(QImage(img), QPoint(dx, dy));
+#define PNT(type, index, img, dx, dy) \
+       _points[(type) | (index)<<24] = Point(QImage(img), QPoint(dx, dy));
 
 #define COLORSET(type, name, dx, dy) \
        PNT(type, 0, ":/marine/" name ".png", dx, dy); \
@@ -351,13 +351,13 @@
        _polygons[0x10307] = Polygon(QBrush(QColor(0xff, 0xff, 0xff)));
        _polygons[0x10308] = Polygon(QBrush(QColor(0xff, 0xff, 0xff)));
        _polygons[0x10407] = Polygon(QBrush(QColor(0xa3, 0xa3, 0xa3),
-         Qt::Dense3Pattern));
+         Qt::Dense5Pattern));
+       _polygons[0x10408] = Polygon(QBrush(QColor(0xff, 0x40, 0x40),
+         Qt::Dense5Pattern));
        _polygons[0x10409] = Polygon(QBrush(QColor(0xff, 0x40, 0x40),
          Qt::FDiagPattern));
        _polygons[0x10503] = Polygon(QBrush(QColor(0xff, 0x40, 0x40),
          Qt::FDiagPattern));
-       _polygons[0x10504] = Polygon(QBrush(QColor(0xff, 0x40, 0x40),
-         Qt::FDiagPattern));
        _polygons[0x10601] = Polygon(QBrush(QColor(0xaa, 0xaa, 0xaa)));
        _polygons[0x1060a] = Polygon(QBrush(QColor(0xfc, 0xb4, 0xfc)));
        _polygons[0x10614] = Polygon(QBrush(QColor(0xff, 0xff, 0xff)));
@@ -366,7 +366,7 @@
        _drawOrder
          << TYPE(0x4b) << 0x10d01 << 0x10106 << 0x10104 << TYPE(0x4a) << 
0x10614
          << 0x10101 << 0x10102 << 0x10301 << 0x10302 << 0x10303 << 0x10304
-         << 0x10305 << 0x10306 << 0x10307 << 0x10308 << 0x10601 << 0x10105
+         << 0x10305 << 0x10306 << 0x10307 << 0x10308 << 0x10601
          << TYPE(0x01) << 0x10800 << TYPE(0x02) << 0x10801 << TYPE(0x03) << 
0x10802
          << TYPE(0x17) << 0x10a04 << TYPE(0x18) << 0x1090c << TYPE(0x1a) << 
0x1090e
          << TYPE(0x28) << 0x10b01 << TYPE(0x32) << 0x10b02 << TYPE(0x3c) << 
0x10b03
@@ -381,10 +381,11 @@
          << TYPE(0x04) << 0x10901 << TYPE(0x05) << 0x10902 << TYPE(0x06) << 
0x10903
          << TYPE(0x07) << 0x10904 << TYPE(0x08) << 0x10905 << TYPE(0x09) << 
0x10906
          << TYPE(0x0a) << 0x10907 << TYPE(0x0b) << 0x10908 << TYPE(0x0c) << 
0x10909
-         << TYPE(0x26) << TYPE(0x0d) << 0x1090a << TYPE(0x0e) << 0x1090b << 
TYPE(0x0f)
-         << TYPE(0x10) << TYPE(0x11) << TYPE(0x12) << TYPE(0x19) << 0x1090d
-         << TYPE(0x13) << 0x10900 << 0x10613 << 0x10407 << 0x10409 << 0x10503
-         << 0x10504 << 0x1060a;
+         << TYPE(0x26) << TYPE(0x0d) << 0x1090a << TYPE(0x0e) << 0x1090b
+         << TYPE(0x0f) << TYPE(0x10) << TYPE(0x11) << TYPE(0x12)
+         << TYPE(0x19) << 0x1090d << TYPE(0x13) << 0x10900
+         << 0x10613 /*raster*/ << 0x1060a << 0x10407 << 0x10408 << 0x10409
+         << 0x10503 << 0x10105;
 }
 
 void Style::defaultLineStyle(qreal ratio)
@@ -489,28 +490,103 @@
        _lines[0x10106] = Line(QImage(":/marine/cable-line.png"));
        _lines[0x10107] = Line(QPen(QColor(0xa5, 0x81, 0x40), 3, 
Qt::SolidLine));
        _lines[0x10108] = Line(QPen(QColor(0, 0, 0), 1, Qt::SolidLine));
+       _lines[0x110108] = Line(QPen(QColor(0, 0, 0), 1, Qt::DashLine));
+
        _lines[0x10301] = Line(QPen(QColor(0x0e, 0x10, 0x87), 1, 
Qt::SolidLine));
        _lines[0x10307] = Line(QPen(QColor(0x05, 0x62, 0x0e), 1, 
Qt::SolidLine));
        _lines[0x10309] = Line(QPen(QColor(0x0e, 0x10, 0x87), 1, 
Qt::SolidLine));
+
        _lines[0x10401] = Line(QImage(":/marine/cable.png"));
        _lines[0x10402] = Line(QImage(":/marine/pipeline.png"));
-       _lines[0x10404] = Line(QImage(":/marine/fishing-farm-line.png"));
-       _lines[0x10405] = Line(QImage(":/marine/pipeline-area-line.png"));
-       _lines[0x10406] = Line(QImage(":/marine/cable-area-line.png"));
+       _lines[0x10403] = Line(QPen(QColor(0, 0, 0), 2, Qt::DotLine));
+       _lines[0x10404] = Line(QPen(QColor(0, 0, 0), 1, Qt::DashLine));
+       _lines[0x210404] = Line(QImage(":/marine/fishing-farm-line.png"));
+       _lines[0x10405] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210405] = Line(QImage(":/marine/pipeline-area-line.png"));
+       _lines[0x10406] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210406] = Line(QImage(":/marine/cable-area-line.png"));
        _lines[0x10407] = Line(QPen(QColor(0xa3, 0xa3, 0xa3), 1, Qt::DashLine));
+       _lines[0x210407] = Line(QImage(":/marine/dumping-ground-line.png"));
+       _lines[0x10408] = Line(QPen(QColor(0xff, 0x40, 0x40), 1, Qt::DashLine));
+       _lines[0x210408] = Line(QImage(":/marine/minefield-line.png"));
        _lines[0x10409] = Line(QPen(QColor(0, 0, 0), 1, Qt::DotLine));
-       _lines[0x10501] = Line(QImage(":/marine/noanchor-line.png"));
-       _lines[0x10503] = Line(QImage(":/marine/entry-prohibited-line.png"));
+       _lines[0x210409] = Line(QPen(QColor(0, 0, 0), 1, Qt::DotLine));
+       _lines[0x1040b] = Line(QPen(QColor(0, 0, 0), 2, Qt::DashLine));
+       _lines[0x21040b] = Line(QPen(QColor(0, 0, 0), 2, Qt::DashLine));
+       _lines[0x1040c] = Line(QPen(QColor(0, 0, 0), 2));
+       _lines[0x21040c] = Line(QPen(QColor(0, 0, 0), 2));
+
+       _lines[0x10501] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210501] = Line(QImage(":/marine/noanchor-line.png"));
+       _lines[0x10502] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210502] = Line(QImage(":/marine/nofishing-line.png"));
+       _lines[0x10503] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210503] = Line(QImage(":/marine/entry-prohibited-line.png"));
        _lines[0x10504] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
-       _lines[0x10505] = Line(QImage(":/marine/safety-zone-line.png"));
-       _lines[0x10506] = Line(QImage(":/marine/nature-reserve-line.png"));
-       _lines[0x10507] = Line(QImage(":/marine/safety-zone-line.png"));
-       _lines[0x10601] = Line(QPen(QColor(0, 0, 0), 1, Qt::SolidLine));
-       _lines[0x10603] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 2, 
Qt::DashDotLine));
-       _lines[0x10606] = Line(QImage(":/marine/anchor-line.png"));
+       _lines[0x210504] = Line(QImage(":/marine/entry-prohibited-line.png"));
+       _lines[0x10505] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210505] = Line(QImage(":/marine/noanchor-line.png"));
+       _lines[0x10506] = Line(QPen(QColor(0x30, 0xa0, 0x1b), 1, Qt::DashLine));
+       _lines[0x210506] = Line(QImage(":/marine/nature-reserve-line.png"));
+       _lines[0x10507] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210507] = Line(QImage(":/marine/safety-zone-line.png"));
+       _lines[0x10508] = Line(QPen(QColor(0xff, 0x40, 0x40), 1, Qt::DashLine));
+       _lines[0x210508] = Line(QImage(":/marine/minefield-line.png"));
+
+       _lines[0x10601] = Line(QPen(QColor(0, 0, 0), 1));
+       _lines[0x110601] = Line(QPen(QColor(0, 0, 0), 1, Qt::DashLine));
+       _lines[0x10601 | 1<<24] = Line(QPen(QColor(0, 0x90, 0xfc), 1));
+       _lines[0x110601 | 1<<24] = Line(QPen(QColor(0, 0x90, 0xfc), 1, 
Qt::DashLine));
+       _lines[0x10601 | 2<<24] = Line(QPen(QColor(0x30, 0xa0, 0x1b), 1));
+       _lines[0x110601 | 2<<24] = Line(QPen(QColor(0x30, 0xa0, 0x1b), 1, 
Qt::DashLine));
+       _lines[0x10601 | 3<<24] = Line(QPen(QColor(0xa7, 0xf1, 0xfc), 1));
+       _lines[0x110601 | 3<<24] = Line(QPen(QColor(0xa7, 0xf1, 0xfc), 1, 
Qt::DashLine));
+       _lines[0x10601 | 4<<24] = Line(QPen(QColor(0xff, 0x40, 0x40), 1));
+       _lines[0x110601 | 4<<24] = Line(QPen(QColor(0xff, 0x40, 0x40), 1, 
Qt::DashLine));
+       _lines[0x10601 | 5<<24] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1));
+       _lines[0x110601 | 5<<24] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, 
Qt::DashLine));
+       _lines[0x10601 | 6<<24] = Line(QPen(QColor(0xfc, 0xe0, 0x1f), 1));
+       _lines[0x110601 | 6<<24] = Line(QPen(QColor(0xfc, 0xe0, 0x1f), 1, 
Qt::DashLine));
+       _lines[0x10601 | 7<<24] = Line(QPen(QColor(0xfc, 0x79, 0x1e), 1));
+       _lines[0x110601 | 7<<24] = Line(QPen(QColor(0xfc, 0x79, 0x1e), 1, 
Qt::DashLine));
+       _lines[0x10601 | 8<<24] = Line(QPen(QColor(0x40, 0x40, 0x40), 1));
+       _lines[0x110601 | 8<<24] = Line(QPen(QColor(0x40, 0x40, 0x40), 1, 
Qt::DashLine));
+       _lines[0x10601 | 9<<24] = Line(QPen(QColor(0x84, 0xe6, 0xfc), 1));
+       _lines[0x110601 | 9<<24] = Line(QPen(QColor(0x84, 0xe6, 0xfc), 1, 
Qt::DashLine));
+       _lines[0x10601 | 10<<24] = Line(QPen(QColor(0x83, 0x53, 0x15), 1));
+       _lines[0x110601 | 10<<24] = Line(QPen(QColor(0x83, 0x53, 0x15), 1, 
Qt::DashLine));
+       _lines[0x10601 | 11<<24] = Line(QPen(QColor(0xd2, 0xfc, 0xfc), 1));
+       _lines[0x110601 | 11<<24] = Line(QPen(QColor(0xd2, 0xfc, 0xfc), 1, 
Qt::DashLine));
+       _lines[0x10601 | 12<<24] = Line(QPen(QColor(0xc5, 0xf1, 0xc2), 1));
+       _lines[0x110601 | 12<<24] = Line(QPen(QColor(0xc5, 0xf1, 0xc2), 1, 
Qt::DashLine));
+       _lines[0x10601 | 13<<24] = Line(QPen(QColor(0xfc, 0xc6, 0xfc), 1));
+       _lines[0x110601 | 13<<24] = Line(QPen(QColor(0xfc, 0xc6, 0xfc), 1, 
Qt::DashLine));
+       _lines[0x10601 | 14<<24] = Line(QPen(QColor(0xe2, 0xdc, 0xa9), 1));
+       _lines[0x110601 | 14<<24] = Line(QPen(QColor(0xe2, 0xdc, 0xa9), 1, 
Qt::DashLine));
+       _lines[0x10601 | 15<<24] = Line(QPen(QColor(0xcd, 0xcd, 0xcd), 1));
+       _lines[0x110601 | 15<<24] = Line(QPen(QColor(0xcd, 0xcd, 0xcd), 1, 
Qt::DashLine));
+       _lines[0x10602] = Line(QPen(QColor(0xfc, 0xb4, 0xfc), 2));
+       _lines[0x210602] = Line(QPen(QColor(0xfc, 0xb4, 0xfc), 2));
+       _lines[0x10603] = 
Line(QImage(":/marine/international-maritime-boundary.png"));
+       _lines[0x210603] = 
Line(QImage(":/marine/international-maritime-boundary.png"));
+       _lines[0x10604] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1));
+       _lines[0x210604] = 
Line(QImage(":/marine/straight-territorial-sea-baseline.png"));
+       _lines[0x10605] = 
Line(QImage(":/marine/seaward-limit-of-territorial-sea.png"));
+       _lines[0x210605] = 
Line(QImage(":/marine/seaward-limit-of-territorial-sea.png"));
+       _lines[0x10606] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210606] = Line(QImage(":/marine/anchor-line.png"));
+       _lines[0x10608] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, Qt::DashLine));
+       _lines[0x210608] = Line(QImage(":/marine/fishing-line.png"));
+       _lines[0x1060b] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, 
Qt::DashDotDotLine));
+       _lines[0x21060b] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, 
Qt::DashDotDotLine));
        _lines[0x1060c] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, 
Qt::SolidLine));
+       _lines[0x21060c] = Line(QPen(QColor(0xe7, 0x28, 0xe7), 1, 
Qt::SolidLine));
        _lines[0x1060d] = Line(QPen(QColor(0xeb, 0x49, 0xeb), 1, Qt::DashLine));
+       _lines[0x21060d] = Line(QPen(QColor(0xeb, 0x49, 0xeb), 1, 
Qt::DashLine));
+       _lines[0x1060e] = Line(QPen(QColor(0xff, 0x40, 0x40), 1, Qt::DashLine));
+       _lines[0x21060e] = Line(QPen(QColor(0xff, 0x40, 0x40), 1, 
Qt::DashLine));
        _lines[0x10611] = Line(QPen(QColor(0xeb, 0x49, 0xeb), 1, Qt::DashLine));
+       _lines[0x210611] = Line(QPen(QColor(0xeb, 0x49, 0xeb), 1, 
Qt::DashLine));
 }
 
 void Style::defaultPointStyle(qreal ratio)
@@ -790,6 +866,8 @@
        COLORSET(0x10214, "beacon", 0, -8);
        COLORSET(0x10215, "beacon", 0, -8);
        _points[0x10216] = Point(QImage(":/marine/mooring-buoy.png"), QPoint(0, 
-5));
+       _points[0x10217] = Point(QImage(":/marine/pylon.png"));
+       _points[0x10218] = Point(QImage(":/marine/pylon.png"));
 
        _points[0x10304] = Point(QImage(":/marine/building.png"));
        _points[0x10305] = Point(QImage(":/marine/chimney.png"), QPoint(0, 
-11));
@@ -803,15 +881,35 @@
        _points[0x10401] = Point(QImage(":/marine/obstruction.png"));
        _points[0x10402] = Point(QImage(":/marine/wreck.png"));
        _points[0x10403] = Point(QImage(":/marine/wreck-exposed.png"), 
QPoint(0, -4));
+       _points[0x10405] = Point(QImage(":/marine/foul.png"));
        _points[0x10408] = Point(QImage(":/marine/obstruction-covers.png"));
+       _points[0x10409] = Point(QImage(":/marine/fishing-farm.png"));
        _points[0x1040a] = Point(QImage(":/marine/rock-dangerous.png"));
        _points[0x1040c] = Point(QImage(":/marine/rock-exposed.png"));
 
+       _points[0x10500] = Point(Small, QColor(0, 0, 0));
+       _points[0x10500 | 1<<20] = Point(Small, QColor(0, 0x90, 0xfc));
+       _points[0x10500 | 2<<20] = Point(Small, QColor(0x30, 0xa0, 0x1b));
+       _points[0x10500 | 3<<20] = Point(Small, QColor(0xa7, 0xf1, 0xfc));
+       _points[0x10500 | 4<<20] = Point(Small, QColor(0xff, 0x40, 0x40));
+       _points[0x10500 | 5<<20] = Point(Small, QColor(0xe7, 0x28, 0xe7));
+       _points[0x10500 | 6<<20] = Point(Small, QColor(0xfc, 0xe0, 0x1f));
+       _points[0x10500 | 7<<20] = Point(Small, QColor(0xfc, 0x79, 0x1e));
+       _points[0x10500 | 8<<20] = Point(Small, QColor(0x40, 0x40, 0x40));
+       _points[0x10500 | 9<<20] = Point(Small, QColor(0x84, 0xe6, 0xfc));
+       _points[0x10500 | 10<<20] = Point(Small, QColor(0x83, 0x53, 0x15));
+       _points[0x10500 | 11<<20] = Point(Small, QColor(0xd2, 0xfc, 0xfc));
+       _points[0x10500 | 12<<20] = Point(Small, QColor(0xc5, 0xf1, 0xc2));
+       _points[0x10500 | 13<<20] = Point(Small, QColor(0xfc, 0xc6, 0xfc));
+       _points[0x10500 | 14<<20] = Point(Small, QColor(0xe2, 0xdc, 0xa9));
+       _points[0x10500 | 15<<20] = Point(Small, QColor(0xcd, 0xcd, 0xcd));
+
        _points[0x10701] = Point(QImage(":/marine/anchorage.png"));
        _points[0x10702] = Point(QImage(":/marine/boarding-place.png"));
        _points[0x10703] = Point(QImage(":/marine/yacht-harbor.png"));
        _points[0x10704] = Point(QImage(":/marine/pile.png"));
        _points[0x10705] = Point(QImage(":/marine/anchoring-prohibited.png"));
+       _points[0x10708] = Point(QImage(":/marine/radio-call-garmin.png"));
        _points[0x1070a] = Point(QImage(":/marine/rescue-station.png"));
        _points[0x1070b] = Point(QImage(":/marine/fishing-harbor.png"));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/IMG/style.h 
new/GPXSee-13.43/src/map/IMG/style.h
--- old/GPXSee-13.42/src/map/IMG/style.h        2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/IMG/style.h        2025-05-20 21:03:34.000000000 
+0200
@@ -142,6 +142,8 @@
          {return (type >= 0x1400 && type <= 0x153f);}
        static bool isState(quint32 type)
          {return (type == TYPE(0x1e));}
+       static bool isMarina(quint32 type)
+         {return type == 0x10703;}
        static bool isRaster(quint32 type)
          {return (type == 0x10613);}
        static bool isDepthPoint(quint32 type)
@@ -152,12 +154,19 @@
          {return (type >= 0x10200 && type < 0x10300);}
        static bool isLight(quint32 type)
          {return (type >= 0x10100 && type < 0x10200);}
+       static bool isLabelPoint(quint32 type)
+         {return type == 0x10500;}
        static bool isMarinePoint(quint32 type)
          {return type >= 0x10100 && type < 0x10a00;}
-       static bool isMarina(quint32 type)
-         {return type == 0x10703;}
+       static bool isStyledLine(quint32 type)
+         {return type >= 0x10400 && type < 0x10700;}
+       static bool isCartographicLine(quint32 type)
+         {return type == 0x10601;}
+       static bool isRecommendedRoute(quint32 type)
+         {return type == 0x10108;}
+
        static bool hasColorset(quint32 type)
-         {return (isBuoy(type) && !(type == 0x1020d || type == 0x10216));}
+         {return (isBuoy(type) && !(type == 0x1020d || type >= 0x10216));}
 
        static QColor color(Light::Color c);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/bitmapline.cpp 
new/GPXSee-13.43/src/map/bitmapline.cpp
--- old/GPXSee-13.42/src/map/bitmapline.cpp     2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/bitmapline.cpp     2025-05-20 21:03:34.000000000 
+0200
@@ -53,6 +53,26 @@
        }
 }
 
+void BitmapLine::drawR(QPainter *painter, const QPolygonF &line,
+  const QImage &img)
+{
+       int offset = 0;
+
+       for (int i = line.size() - 1; i > 0; i--) {
+               QLineF segment(line.at(i).x(), line.at(i).y(), line.at(i-1).x(),
+                 line.at(i-1).y());
+               int len = qCeil(segment.length() * img.devicePixelRatio());
+
+               painter->save();
+               painter->translate(segment.p1());
+               painter->rotate(-segment.angle());
+               painter->drawImage(0.0, -img.height()/2.0, img2line(img, len, 
offset));
+               painter->restore();
+
+               offset = (len + offset) % img.width();
+       }
+}
+
 void BitmapLine::draw(QPainter *painter, const QVector<QPolygonF> &lines,
   const QImage &img)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/bitmapline.h 
new/GPXSee-13.43/src/map/bitmapline.h
--- old/GPXSee-13.42/src/map/bitmapline.h       2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/bitmapline.h       2025-05-20 21:03:34.000000000 
+0200
@@ -11,6 +11,7 @@
 namespace BitmapLine
 {
        void draw(QPainter *painter, const QPolygonF &line, const QImage &img);
+       void drawR(QPainter *painter, const QPolygonF &line, const QImage &img);
        void draw(QPainter *painter, const QVector<QPolygonF> &lines,
          const QImage &img);
        void draw(QPainter *painter, const QPainterPath &line, const QImage 
&img);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/GPXSee-13.42/src/map/textpointitem.cpp 
new/GPXSee-13.43/src/map/textpointitem.cpp
--- old/GPXSee-13.42/src/map/textpointitem.cpp  2025-05-07 22:47:07.000000000 
+0200
+++ new/GPXSee-13.43/src/map/textpointitem.cpp  2025-05-20 21:03:34.000000000 
+0200
@@ -8,7 +8,7 @@
 
 
 #define FLAGS (Qt::AlignCenter | Qt::TextWordWrap | Qt::TextDontClip)
-#define MAX_TEXT_WIDTH 8
+#define MAX_TEXT_WIDTH 10
 #define MIN_BOX_WIDTH 2
 
 

++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.bEkA66/_old  2025-05-22 16:56:30.096980767 +0200
+++ /var/tmp/diff_new_pack.bEkA66/_new  2025-05-22 16:56:30.100980937 +0200
@@ -1,5 +1,5 @@
 pkgname=gpxsee
-pkgver=13.42
+pkgver=13.43
 pkgrel=1
 pkgdesc='GPS log files visualizing and analyzing tool'
 arch=('i686' 'x86_64')

++++++ debian.changelog ++++++
--- /var/tmp/diff_new_pack.bEkA66/_old  2025-05-22 16:56:30.120981785 +0200
+++ /var/tmp/diff_new_pack.bEkA66/_new  2025-05-22 16:56:30.124981954 +0200
@@ -1,3 +1,10 @@
+gpxsee (13.43) stable; urgency=low
+
+  * Improved marine charts (ENC,IMG) style/rendering.
+  * Added OpenFreeMap to the default maps list.
+
+ -- Martin Tuma <tu...@cbox.cz>  Tue, 20 May 2025 22:44:23 +0200
+
 gpxsee (13.42) stable; urgency=low
 
   * Significantly improved marine charts (ENC,IMG) style/rendering.

++++++ gpxsee.dsc ++++++
--- /var/tmp/diff_new_pack.bEkA66/_old  2025-05-22 16:56:30.192984837 +0200
+++ /var/tmp/diff_new_pack.bEkA66/_new  2025-05-22 16:56:30.196985007 +0200
@@ -1,10 +1,10 @@
 Format: 1.0
 Source: gpxsee
-Version: 13.42-1
+Version: 13.43-1
 Binary: gpxsee
 Maintainer: Martin Tuma <tu...@cbox.cz>
 Architecture: any
 Build-Depends: debhelper (>= 9), qtbase5-dev, qtbase5-private-dev, 
qtbase5-dev-tools, qt5-qmake, qttools5-dev-tools, libqt5opengl5-dev, 
qtpositioning5-dev, libqt5svg5-dev, libqt5serialport5-dev
 Files:
- 00000000000000000000000000000000 0 GPXSee-13.42.tar.gz
+ 00000000000000000000000000000000 0 GPXSee-13.43.tar.gz
 

Reply via email to