diff --git a/src/map/ENC/attributes.h b/src/map/ENC/attributes.h index e5a3e1b6..1a29de5b 100644 --- a/src/map/ENC/attributes.h +++ b/src/map/ENC/attributes.h @@ -12,5 +12,6 @@ #define OBJNAM 116 #define RESTRN 131 #define VALDCO 174 +#define WATLEV 187 #endif // ENC_ATTRIBUTES_H diff --git a/src/map/ENC/mapdata.cpp b/src/map/ENC/mapdata.cpp index 8cfeaadb..b774e9c1 100644 --- a/src/map/ENC/mapdata.cpp +++ b/src/map/ENC/mapdata.cpp @@ -258,7 +258,7 @@ QVector MapData::lineGeometry(const ISO8211::Record &r, { QVector path; Coordinates c[2]; - uint ORNT, MASK; + uint ORNT; quint8 type; quint32 id; @@ -270,8 +270,6 @@ QVector MapData::lineGeometry(const ISO8211::Record &r, if (!parseNAME(FSPT, &type, &id, i) || type != RCNM_VE) return QVector(); ORNT = FSPT->data().at(i).at(1).toUInt(); - MASK = FSPT->data().at(i).at(3).toUInt(); - Q_ASSERT(MASK != 1); RecordMapIterator it = ve.find(id); if (it == ve.constEnd()) @@ -326,7 +324,7 @@ Polygon MapData::polyGeometry(const ISO8211::Record &r, const RecordMap &vc, Polygon path; QVector v; Coordinates c[2]; - uint ORNT, USAG, MASK; + uint ORNT, USAG; quint8 type; quint32 id; @@ -339,8 +337,6 @@ Polygon MapData::polyGeometry(const ISO8211::Record &r, const RecordMap &vc, return Polygon(); ORNT = FSPT->data().at(i).at(1).toUInt(); USAG = FSPT->data().at(i).at(2).toUInt(); - MASK = FSPT->data().at(i).at(3).toUInt(); - Q_ASSERT(MASK != 1); if (USAG == 2 && path.isEmpty()) { path.append(v); @@ -420,7 +416,8 @@ MapData::Attr MapData::pointAttr(const ISO8211::Record &r, uint OBJL) if ((OBJL == HRBFAC && key == CATHAF) || (OBJL == LNDMRK && key == CATLMK) || (OBJL == WRECKS && key == CATWRK) - || (OBJL == MORFAC && key == CATMOR)) + || (OBJL == MORFAC && key == CATMOR) + || (OBJL == UWTROC && key == WATLEV)) subtype = av.at(1).toString().toUInt(); } @@ -608,7 +605,7 @@ bool MapData::bounds(const QVector &gv, Rect &b) return true; } -bool MapData::fetchBoundsAndName() +MapData::MapData(const QString &path): _fileName(path) { QFile file(_fileName); QVector gv; @@ -617,42 +614,34 @@ bool MapData::fetchBoundsAndName() if (!file.open(QIODevice::ReadOnly)) { _errorString = file.errorString(); - return false; + return; } if (!ddf.readDDR(file)) { _errorString = ddf.errorString(); - return false; + return; } while (!file.atEnd()) { ISO8211::Record record; if (!ddf.readRecord(file, record)) { _errorString = ddf.errorString(); - return false; + return; } if (!processRecord(record, gv, COMF, _name)) - return false; + return; } Rect b; if (!bounds(gv, b)) { _errorString = "Error fetching geometries bounds"; - return false; + return; } RectC br(Coordinates(b.minX() / (double)COMF, b.maxY() / (double)COMF), Coordinates(b.maxX() / (double)COMF, b.minY() / (double)COMF)); - if (!br.isValid()) { + if (!br.isValid()) _errorString = "Invalid geometries bounds"; - return false; - } else + else _bounds = br; - - return true; -} - -MapData::MapData(const QString &path): _fileName(path) -{ - fetchBoundsAndName(); } MapData::~MapData() diff --git a/src/map/ENC/mapdata.h b/src/map/ENC/mapdata.h index 80781ff7..41be2e60 100644 --- a/src/map/ENC/mapdata.h +++ b/src/map/ENC/mapdata.h @@ -147,8 +147,6 @@ private: typedef RTree LineTree; typedef RTree PointTree; - bool fetchBoundsAndName(); - static QVector soundings(const ISO8211::Record &r, uint COMF, uint SOMF); static QVector soundingGeometry(const ISO8211::Record &r, diff --git a/src/map/ENC/style.cpp b/src/map/ENC/style.cpp index d9d0ae67..de5207f6 100644 --- a/src/map/ENC/style.cpp +++ b/src/map/ENC/style.cpp @@ -115,14 +115,22 @@ void Style::defaultPointStyle() _points[SUBTYPE(LNDMRK, 17)] = Point(QImage(":/marine/tower.png")); _points[TYPE(LNDELV)] = Point(QImage(":/marine/triangulation-point.png")); _points[TYPE(OBSTRN)] = Point(QImage(":/marine/obstruction.png"), Small); - _points[TYPE(WRECKS)] = Point(QImage(":/marine/wreck.png"), Small); _points[SUBTYPE(WRECKS, 1)] = Point(QImage(":/marine/wreck.png"), Small); _points[SUBTYPE(WRECKS, 2)] = Point(QImage(":/marine/wreck-dangerous.png"), Small); _points[SUBTYPE(WRECKS, 3)] = Point(QImage(":/marine/wreck.png"), Small); _points[SUBTYPE(WRECKS, 4)] = Point(QImage(":/marine/wreck.png"), Small); _points[SUBTYPE(WRECKS, 5)] = Point(QImage(":/marine/wreck-exposed.png")); - _points[TYPE(UWTROC)] = Point(QImage(":/marine/rock-dangerous.png"), Small); + _points[SUBTYPE(UWTROC, 1)] = Point(QImage(":/marine/rock-exposed.png"), + Small); + _points[SUBTYPE(UWTROC, 2)] = Point(QImage(":/marine/rock-exposed.png"), + Small); + _points[SUBTYPE(UWTROC, 3)] = Point(QImage(":/marine/rock-dangerous.png"), + Small); + _points[SUBTYPE(UWTROC, 4)] = Point(QImage(":/marine/rock-dangerous.png"), + Small); + _points[SUBTYPE(UWTROC, 5)] = Point(QImage(":/marine/rock-dangerous.png"), + Small); _points[SUBTYPE(HRBFAC, 5)] = Point(QImage(":/marine/yacht-harbor.png")); _points[TYPE(ACHBRT)] = Point(QImage(":/marine/anchorage.png")); _points[TYPE(OFSPLF)] = Point(QImage(":/marine/platform.png"));