From 39ed798a48defb2baeb6110d0ad40307c417f9a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Sat, 8 Mar 2025 03:58:28 +0100 Subject: [PATCH] Some more code cleanup --- src/map/ENC/rastertile.cpp | 19 +++++++++---------- src/map/ENC/rastertile.h | 12 ++++++------ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/map/ENC/rastertile.cpp b/src/map/ENC/rastertile.cpp index 3abf4c7b..e9357f03 100644 --- a/src/map/ENC/rastertile.cpp +++ b/src/map/ENC/rastertile.cpp @@ -226,11 +226,11 @@ static QRectF lightRect(const QPointF &pos, double range) } void RasterTile::drawSectorLights(QPainter *painter, - const QList &lights) const + const QMap &lights) const { - for (int i = 0; i < lights.size(); i++) { - const SectorLight &l = lights.at(i); - QPointF pos(ll2xy(l.pos)); + for (auto it = lights.cbegin(); it != lights.cend(); ++it) { + const SectorLight &l = it.value(); + QPointF pos(ll2xy(it.key())); QRectF rect(lightRect(pos, (l.range == 0) ? 6 : l.range)); double a1 = -(l.end + 90); double a2 = -(l.start + 90); @@ -264,10 +264,10 @@ void RasterTile::drawSectorLights(QPainter *painter, void RasterTile::processPoints(const QList &points, QList &textItems, QList &lights, - QList §orLights, bool overZoom) const + QMap §orLights, bool overZoom) const { QMap lightsMap; - QSet signalsSet, sectorLightsSet; + QSet signalsSet; int i; /* Lights & Signals */ @@ -281,10 +281,9 @@ void RasterTile::processPoints(const QList &points, if (attr.contains(SECTR1) || (range >= MAJOR_RANGE && !(point.type() & 0xFFFF))) { - sectorLights.append(SectorLight(point.pos(), color, + sectorLights.insert(point.pos(), SectorLight(color, attr.value(LITVIS).toUInt(), range, attr.value(SECTR1).toDouble(), attr.value(SECTR2).toDouble())); - sectorLightsSet.insert(point.pos()); } else lightsMap.insert(point.pos(), color); } else if (point.type()>>16 == FOGSIG) @@ -315,7 +314,7 @@ void RasterTile::processPoints(const QList &points, TextPointItem *item = new TextPointItem(pos + offset, label, fnt, img, color, hColor, 0, 2, rotate); - if (item->isValid() && (sectorLightsSet.contains(point.pos()) + if (item->isValid() && (sectorLights.contains(point.pos()) || (point.polygon() && img) || !item->collides(textItems))) { textItems.append(item); if (lightsMap.contains(point.pos())) @@ -357,7 +356,7 @@ void RasterTile::drawLevels(QPainter *painter, const QList &levels) { for (int i = levels.size() - 1; i >= 0; i--) { QList textItems, lights; - QList sectorLights; + QMap sectorLights; const Level &l = levels.at(i); processPoints(l.points, textItems, lights, sectorLights, l.overZoom); diff --git a/src/map/ENC/rastertile.h b/src/map/ENC/rastertile.h index 24b6c839..db8266ab 100644 --- a/src/map/ENC/rastertile.h +++ b/src/map/ENC/rastertile.h @@ -39,11 +39,10 @@ public: private: struct SectorLight { - SectorLight(const Coordinates &pos, Style::Color color, uint visibility, - double range, double start, double end) : pos(pos), color(color), - visibility(visibility), range(range), start(start), end(end) {} + SectorLight(Style::Color color, uint visibility, double range, + double start, double end) : color(color), visibility(visibility), + range(range), start(start), end(end) {} - Coordinates pos; Style::Color color; uint visibility; double range; @@ -70,14 +69,15 @@ private: QPointF centroid(const QVector &polygon) const; void processPoints(const QList &points, QList &textItems, QList &lights, - QList §orLights, bool overZoom) const; + QMap §orLights, bool overZoom) const; void processLines(const QList &lines, QList &textItems) const; void drawArrows(QPainter *painter, const QList &points) const; void drawPolygons(QPainter *painter, const QList &polygons) const; void drawLines(QPainter *painter, const QList &lines) const; void drawTextItems(QPainter *painter, const QList &textItems) const; - void drawSectorLights(QPainter *painter, const QList &lights) const; + void drawSectorLights(QPainter *painter, + const QMap &lights) const; bool showLabel(const QImage *img, int type) const; void drawLevels(QPainter *painter, const QList &levels); QList fetchLevels();