1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-07-30 10:24:24 +02:00

Compare commits

..

6 Commits

Author SHA1 Message Date
531b37bc70 Always draw the light icon of lights, not only when class data is present
Some charts have the lights info in the lcl data section that we do not
parse.
2024-09-17 21:25:17 +02:00
87c5a255c8 Merge remote-tracking branch 'weblate/master' 2024-09-16 23:27:45 +02:00
raf
ce826966cf Translated using Weblate (Catalan)
Currently translated at 100.0% (488 of 488 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/ca/
2024-09-16 23:27:33 +02:00
a56a558f37 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (488 of 488 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/uk/
2024-09-16 23:27:33 +02:00
e3d603e8d7 Added missing building point style 2024-09-16 23:25:58 +02:00
344e665bed Use a cleaner vector/raster layer filtering code 2024-09-16 23:25:15 +02:00
7 changed files with 29 additions and 41 deletions

View File

@ -486,17 +486,17 @@
<message>
<location filename="../src/GUI/gui.cpp" line="370"/>
<source>All</source>
<translation type="unfinished"></translation>
<translation>Tot</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<source>Raster only</source>
<translation type="unfinished"></translation>
<translation>Només ràster</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="378"/>
<source>Vector only</source>
<translation type="unfinished"></translation>
<translation>Només vector</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="385"/>
@ -733,7 +733,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="695"/>
<source>Layers</source>
<translation type="unfinished"></translation>
<translation>Capes</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="704"/>

View File

@ -486,17 +486,17 @@
<message>
<location filename="../src/GUI/gui.cpp" line="370"/>
<source>All</source>
<translation type="unfinished"></translation>
<translation>Все</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<source>Raster only</source>
<translation type="unfinished"></translation>
<translation>Лише растр</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="378"/>
<source>Vector only</source>
<translation type="unfinished"></translation>
<translation>Лише вектор</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="385"/>
@ -723,7 +723,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="695"/>
<source>Layers</source>
<translation type="unfinished"></translation>
<translation>Шари</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="704"/>
@ -1894,12 +1894,12 @@
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="388"/>
<source>Detect pauses</source>
<translation type="unfinished"></translation>
<translation>Визначити паузи</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="537"/>
<source>Detection:</source>
<translation type="unfinished"></translation>
<translation>Визначення:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="656"/>

View File

@ -114,11 +114,8 @@ const QFont *RasterTile::poiFont(Style::FontSize size, int zoom,
}
}
void RasterTile::ll2xy(QList<MapData::Poly> &polys, bool polygons) const
void RasterTile::ll2xy(QList<MapData::Poly> &polys) const
{
if (!_vectors && !polygons)
return;
for (int i = 0; i < polys.size(); i++) {
MapData::Poly &poly = polys[i];
for (int j = 0; j < poly.points.size(); j++) {
@ -130,9 +127,6 @@ void RasterTile::ll2xy(QList<MapData::Poly> &polys, bool polygons) const
void RasterTile::ll2xy(QList<MapData::Point> &points) const
{
if (!_vectors)
return;
for (int i = 0; i < points.size(); i++) {
QPointF p(ll2xy(points.at(i).coordinates));
points[i].coordinates = Coordinates(p.x(), p.y());
@ -198,9 +192,6 @@ void RasterTile::drawPolygons(QPainter *painter,
void RasterTile::drawLines(QPainter *painter,
const QList<MapData::Poly> &lines) const
{
if (!_vectors)
return;
painter->setBrush(Qt::NoBrush);
for (int i = 0; i < lines.size(); i++) {
@ -290,9 +281,6 @@ void RasterTile::processPolygons(const QList<MapData::Poly> &polygons,
void RasterTile::processLines(QList<MapData::Poly> &lines,
QList<TextItem*> &textItems, const QImage (&arrows)[2])
{
if (!_vectors)
return;
std::stable_sort(lines.begin(), lines.end());
if (_zoom >= 22)
@ -411,9 +399,6 @@ void RasterTile::processShields(const QList<MapData::Poly> &lines,
void RasterTile::processPoints(QList<MapData::Point> &points,
QList<TextItem*> &textItems)
{
if (!_vectors)
return;
std::sort(points.begin(), points.end());
for (int i = 0; i < points.size(); i++) {
@ -444,7 +429,7 @@ void RasterTile::processPoints(QList<MapData::Point> &points,
color, hcolor, 0, ICON_PADDING);
if (item->isValid() && !item->collides(textItems)) {
textItems.append(item);
if (point.flags & MapData::Point::Light)
if (Style::isLight(point.type) || point.flags & MapData::Point::Light)
textItems.append(new TextPointItem(pos + style->lightOffset(),
0, 0, style->light(), 0, 0, 0, 0));
} else
@ -462,14 +447,16 @@ void RasterTile::fetchData(QList<MapData::Poly> &polygons,
RectD polyRectD(_transform.img2proj(polyRect.topLeft()),
_transform.img2proj(polyRect.bottomRight()));
_data->polys(polyRectD.toRectC(_proj, 20), _zoom,
&polygons, &lines);
&polygons, _vectors ? &lines : 0);
QRectF pointRect(QPointF(ttl.x() - TEXT_EXTENT, ttl.y() - TEXT_EXTENT),
QPointF(ttl.x() + _rect.width() + TEXT_EXTENT, ttl.y() + _rect.height()
+ TEXT_EXTENT));
RectD pointRectD(_transform.img2proj(pointRect.topLeft()),
_transform.img2proj(pointRect.bottomRight()));
_data->points(pointRectD.toRectC(_proj, 20), _zoom, &points);
if (_vectors) {
QRectF pointRect(QPointF(ttl.x() - TEXT_EXTENT, ttl.y() - TEXT_EXTENT),
QPointF(ttl.x() + _rect.width() + TEXT_EXTENT, ttl.y() + _rect.height()
+ TEXT_EXTENT));
RectD pointRectD(_transform.img2proj(pointRect.topLeft()),
_transform.img2proj(pointRect.bottomRight()));
_data->points(pointRectD.toRectC(_proj, 20), _zoom, &points);
}
}
MatrixD RasterTile::elevation(int extend) const
@ -540,8 +527,8 @@ void RasterTile::render()
arrows[WATER] = HIDPI_IMG(":/map", "water-arrow", _ratio);
fetchData(polygons, lines, points);
ll2xy(polygons, true);
ll2xy(lines, false);
ll2xy(polygons);
ll2xy(lines);
ll2xy(points);
processPoints(points, textItems);

View File

@ -54,7 +54,7 @@ private:
{return _transform.proj2img(_proj.ll2xy(c));}
Coordinates xy2ll(const QPointF &p) const
{return _proj.xy2ll(_transform.img2proj(p));}
void ll2xy(QList<MapData::Poly> &polys, bool polygons) const;
void ll2xy(QList<MapData::Poly> &polys) const;
void ll2xy(QList<MapData::Point> &points) const;
void drawPolygons(QPainter *painter, const QList<MapData::Poly> &polygons) const;

View File

@ -184,8 +184,6 @@ bool RGNFile::readClassFields(Handle &hdl, SegmentType segmentType,
readObstructionInfo(hdl, flags, rs, point);
if (point && Style::isBuoy(point->type))
readBuoyInfo(hdl, flags, point);
if (point && Style::isLight(point->type))
point->flags |= MapData::Point::Light;
return seek(hdl, off + rs);
}

View File

@ -709,6 +709,7 @@ void Style::defaultPointStyle(qreal ratio)
_points[0x10214] = Point(QImage(":/marine/beacon.png"), QPoint(0, -8));
_points[0x10215] = Point(QImage(":/marine/beacon.png"), QPoint(0, -8));
_points[0x10216] = Point(QImage(":/marine/mooring-buoy.png"), QPoint(0, -5));
_points[0x10304] = Point(QImage(":/marine/building.png"));
_points[0x10305] = Point(QImage(":/marine/chimney.png"), QPoint(0, -11));
_points[0x10306] = Point(QImage(":/marine/church.png"));
_points[0x10307] = Point(QImage(":/marine/silo.png"));

View File

@ -183,12 +183,14 @@ void VectorTile::polys(const RectC &rect, const Zoom &zoom,
}
copyPolys(rect, &polys->polygons, polygons);
copyPolys(rect, &polys->lines, lines);
if (lines)
copyPolys(rect, &polys->lines, lines);
cache->insert(subdiv, polys);
} else {
copyPolys(rect, &polys->polygons, polygons);
copyPolys(rect, &polys->lines, lines);
if (lines)
copyPolys(rect, &polys->lines, lines);
}
}