1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-06-08 19:23:01 +02:00

Compare commits

...

2 Commits

Author SHA1 Message Date
54d6016b1a A better point items layout algorithm 2023-03-24 09:18:13 +01:00
65afd802ce A better "entry prohibited" line 2023-03-24 09:17:28 +01:00
2 changed files with 25 additions and 6 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

After

Width:  |  Height:  |  Size: 147 B

View File

@ -136,6 +136,27 @@ static QImage *image(uint type, const QVariant &param)
return 0; return 0;
} }
static TextPointItem *pointItem(const QPoint &pos, const QString *label,
const QFont *fnt, const QImage *img, const QColor *color,
const QColor *hColor, const QList<TextItem*> &textItems)
{
TextPointItem *item = new TextPointItem(pos, label, fnt, img, color,
hColor, 0, ICON_PADDING);
if (item->isValid() && !item->collides(textItems))
return item;
delete item;
if (!img)
return 0;
item = new TextPointItem(pos, 0, 0, img, 0, 0, 0, 0);
if (item->isValid() && !item->collides(textItems))
return item;
delete item;
return 0;
}
QPainterPath RasterTile::painterPath(const Polygon &polygon) const QPainterPath RasterTile::painterPath(const Polygon &polygon) const
{ {
QPainterPath path; QPainterPath path;
@ -317,9 +338,9 @@ void RasterTile::processPoints(QList<TextItem*> &textItems,
continue; continue;
QPoint pos(ll2xy(point->pos()).toPoint()); QPoint pos(ll2xy(point->pos()).toPoint());
TextPointItem *item = new TextPointItem(pos, label, fnt, img, color, TextPointItem *item = pointItem(pos, label, fnt, img, color, hColor,
hColor, 0, ICON_PADDING); textItems);
if (item->isValid() && !item->collides(textItems)) { if (item) {
textItems.append(item); textItems.append(item);
if (rimg) if (rimg)
images.append(rimg); images.append(rimg);
@ -327,10 +348,8 @@ void RasterTile::processPoints(QList<TextItem*> &textItems,
lights.append(new TextPointItem(pos, 0, 0, light(), 0, 0, 0, 0)); lights.append(new TextPointItem(pos, 0, 0, light(), 0, 0, 0, 0));
if (signalsMap.contains(point->pos())) if (signalsMap.contains(point->pos()))
lights.append(new TextPointItem(pos, 0, 0, signal(), 0, 0, 0, 0)); lights.append(new TextPointItem(pos, 0, 0, signal(), 0, 0, 0, 0));
} else { } else
delete item;
delete rimg; delete rimg;
}
} }
} }