diff --git a/gpxsee.qrc b/gpxsee.qrc
index 0a75cbfa..1dd6164d 100644
--- a/gpxsee.qrc
+++ b/gpxsee.qrc
@@ -176,6 +176,9 @@
icons/map/marine/fence-line.png
icons/map/marine/crane.png
icons/map/marine/distance-mark.png
+ icons/map/marine/conveyor-line.png
+ icons/map/marine/pipeline-overhead.png
+ icons/map/marine/coast-guard.png
diff --git a/icons/map/marine/coast-guard.png b/icons/map/marine/coast-guard.png
new file mode 100644
index 00000000..2e578de2
Binary files /dev/null and b/icons/map/marine/coast-guard.png differ
diff --git a/icons/map/marine/conveyor-line.png b/icons/map/marine/conveyor-line.png
new file mode 100644
index 00000000..38e88999
Binary files /dev/null and b/icons/map/marine/conveyor-line.png differ
diff --git a/icons/map/marine/pipeline-overhead.png b/icons/map/marine/pipeline-overhead.png
new file mode 100644
index 00000000..e1331f92
Binary files /dev/null and b/icons/map/marine/pipeline-overhead.png differ
diff --git a/src/map/ENC/iso8211.cpp b/src/map/ENC/iso8211.cpp
index df7dcffc..05d809ae 100644
--- a/src/map/ENC/iso8211.cpp
+++ b/src/map/ENC/iso8211.cpp
@@ -194,7 +194,7 @@ bool ISO8211::readDDR(QFile &file)
int len = readDR(file, fields);
if (len < 0) {
- _errorString = "Not a ENC file";
+ _errorString = "Not a ISO8211 file";
return false;
}
diff --git a/src/map/ENC/mapdata.cpp b/src/map/ENC/mapdata.cpp
index 7387155e..40432464 100644
--- a/src/map/ENC/mapdata.cpp
+++ b/src/map/ENC/mapdata.cpp
@@ -717,8 +717,10 @@ MapData::MapData(const QString &path): _fileName(path)
_errorString = ddf.errorString();
return;
}
- if (!processRecord(record, gv, COMF, _name))
+ if (!processRecord(record, gv, COMF, _name)) {
+ _errorString = "Invalid S-57 record";
return;
+ }
}
Rect b;
diff --git a/src/map/ENC/objects.h b/src/map/ENC/objects.h
index 053a9707..f73bb4a3 100644
--- a/src/map/ENC/objects.h
+++ b/src/map/ENC/objects.h
@@ -22,7 +22,9 @@
#define CBLOHD 21
#define CBLSUB 22
#define CANALS 23
+#define CGUSTA 29
#define COALNE 30
+#define CONVYR 34
#define CRANES 35
#define DAMCON 38
#define DWRTPT 41
@@ -49,6 +51,7 @@
#define OBSTRN 86
#define OFSPLF 87
#define PILPNT 90
+#define PIPOHD 93
#define PIPSOL 94
#define PONTON 95
#define PRCARE 96
@@ -60,6 +63,7 @@
#define RIVERS 114
#define ROADWY 116
#define SLCONS 122
+#define SILTNK 125
#define SLOTOP 126
#define SOUNDG 129
#define TSELNE 145
@@ -81,6 +85,7 @@
#define I_FERYRT 17013
#define I_HULKES 17020
#define I_PONTON 17021
+#define I_PIPOHD 17024
#define I_FLODOC 17025
#define I_BCNLAT 17028
#define I_BOYLAT 17029
diff --git a/src/map/ENC/style.cpp b/src/map/ENC/style.cpp
index 848baa43..571f9396 100644
--- a/src/map/ENC/style.cpp
+++ b/src/map/ENC/style.cpp
@@ -36,6 +36,8 @@ void Style::defaultPolygonStyle()
Qt::DashDotDotLine));
_polygons[TYPE(OBSTRN)] = Polygon(Qt::NoBrush, QPen(QColor("#000000"), 1.5,
Qt::DotLine));
+ _polygons[TYPE(UWTROC)] = Polygon(Qt::NoBrush, QPen(QColor("#000000"), 1.5,
+ Qt::DotLine));
_polygons[TYPE(PONTON)] = Polygon(QBrush("#333333"));
_polygons[TYPE(I_PONTON)] = Polygon(QBrush("#333333"));
_polygons[TYPE(HULKES)] = Polygon(QBrush("#333333"));
@@ -82,6 +84,8 @@ void Style::defaultPolygonStyle()
_polygons[TYPE(I_GATCON)] = Polygon(QBrush("#000000"));
_polygons[TYPE(I_TERMNL)] = Polygon(QBrush(QColor("#b8b04b")),
QPen(QColor("#966118")));
+ _polygons[TYPE(SILTNK)] = Polygon(QBrush("#d98b21"), QPen(QColor("#966118"),
+ 2));
_drawOrder
<< TYPE(M_COVR) << TYPE(LNDARE) << SUBTYPE(DEPARE, 0)
@@ -89,14 +93,15 @@ void Style::defaultPolygonStyle()
<< TYPE(UNSARE) << SUBTYPE(DEPARE, 4) << SUBTYPE(DEPARE, 5)
<< SUBTYPE(DEPARE, 6) << TYPE(LAKARE) << TYPE(CANALS) << TYPE(DYKCON)
<< TYPE(RIVERS) << TYPE(DRGARE) << TYPE(FAIRWY) << TYPE(BUAARE)
- << TYPE(BUISGL) << TYPE(AIRARE) << TYPE(BRIDGE) << TYPE(I_BRIDGE)
- << 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(DMPGRD)
- << TYPE(TSEZNE) << TYPE(OBSTRN) << TYPE(DWRTPT) << SUBTYPE(ACHARE, 1)
- << SUBTYPE(I_ACHARE, 1) << SUBTYPE(RESARE, 9) << SUBTYPE(RESARE, 2)
- << SUBTYPE(I_RESARE, 2) << TYPE(PRCARE);
+ << TYPE(BUISGL) << TYPE(SILTNK) << TYPE(AIRARE) << TYPE(BRIDGE)
+ << TYPE(I_BRIDGE) << 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(DMPGRD) << TYPE(TSEZNE) << TYPE(OBSTRN) << TYPE(UWTROC)
+ << TYPE(DWRTPT) << SUBTYPE(ACHARE, 1) << SUBTYPE(I_ACHARE, 1)
+ << SUBTYPE(RESARE, 9) << SUBTYPE(RESARE, 2) << SUBTYPE(I_RESARE, 2)
+ << TYPE(PRCARE);
}
void Style::defaultLineStyle()
@@ -141,6 +146,9 @@ void Style::defaultLineStyle()
_lines[TYPE(BERTHS)] = Line(QPen(QColor("#333333"), 2));
_lines[TYPE(I_BERTHS)] = Line(QPen(QColor("#333333"), 2));
_lines[TYPE(FNCLNE)] = Line(QImage(":/marine/fence-line.png"));
+ _lines[TYPE(CONVYR)] = Line(QImage(":/marine/conveyor-line.png"));
+ _lines[TYPE(PIPOHD)] = Line(QImage(":/marine/pipeline-overhead.png"));
+ _lines[TYPE(I_PIPOHD)] = Line(QImage(":/marine/pipeline-overhead.png"));
}
void Style::defaultPointStyle()
@@ -200,6 +208,7 @@ void Style::defaultPointStyle()
_points[SUBTYPE(I_DISMAR, 1)] = Point(QImage(":/marine/distance-mark.png"));
_points[SUBTYPE(I_DISMAR, 1)].setTextColor(QColor("#ffffff"));
_points[SUBTYPE(I_DISMAR, 1)].setTextFontSize(Small);
+ _points[TYPE(CGUSTA)] = Point(QImage(":/marine/coast-guard.png"));
}
Style::Style()