1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-12-03 16:09:08 +01:00

Compare commits

...

2 Commits

Author SHA1 Message Date
04ef7ba092 If there are multiple labels for a point, use the one with the highest priority 2023-08-19 13:36:20 +02:00
f683525fce Fixed/improved map info background rendering settings
All text items on the map (including path marker info) have now the same
background color (the map background color) and the "info background" option
also applies to all items now.
2023-08-19 11:01:12 +02:00
7 changed files with 61 additions and 13 deletions

View File

@ -118,6 +118,7 @@ MapView::MapView(Map *map, POI *poi, QWidget *parent) : QGraphicsView(parent)
_showPosition = false;
_showPositionCoordinates = false;
_showMotionInfo = false;
_infoBackground = false;
_opengl = false;
_plot = false;
@ -156,6 +157,8 @@ PathItem *MapView::addTrack(const Track &track)
ti->setVisible(_showTracks);
ti->setDigitalZoom(_digitalZoom);
ti->setMarkerColor(_markerColor);
ti->setMarkerBackgroundColor(_backgroundColor);
ti->drawMarkerBackground(_infoBackground);
ti->showMarker(_showMarkers);
ti->showMarkerInfo(_markerInfoType);
ti->showTicks(_showPathTicks);
@ -186,6 +189,8 @@ PathItem *MapView::addRoute(const Route &route)
ri->showWaypointIcons(_showWaypointIcons);
ri->setDigitalZoom(_digitalZoom);
ri->setMarkerColor(_markerColor);
ri->setMarkerBackgroundColor(_backgroundColor);
ri->drawMarkerBackground(_infoBackground);
ri->showMarker(_showMarkers);
ri->showMarkerInfo(_markerInfoType);
ri->showTicks(_showPathTicks);
@ -1086,6 +1091,11 @@ void MapView::setBackgroundColor(const QColor &color)
_positionCoordinates->setBackgroundColor(color);
_motionInfo->setBackgroundColor(color);
for (int i = 0; i < _tracks.size(); i++)
_tracks.at(i)->setMarkerBackgroundColor(color);
for (int i = 0; i < _routes.size(); i++)
_routes.at(i)->setMarkerBackgroundColor(color);
reloadMap();
}
@ -1378,9 +1388,16 @@ void MapView::setInfoColor(const QColor &color)
void MapView::drawInfoBackground(bool draw)
{
_infoBackground = draw;
_cursorCoordinates->drawBackground(draw);
_positionCoordinates->drawBackground(draw);
_motionInfo->drawBackground(draw);
for (int i = 0; i < _tracks.size(); i++)
_tracks.at(i)->drawMarkerBackground(draw);
for (int i = 0; i < _routes.size(); i++)
_routes.at(i)->drawMarkerBackground(draw);
}
void MapView::setHidpi(bool hidpi)

View File

@ -203,6 +203,7 @@ private:
int _waypointSize, _poiSize;
QColor _backgroundColor, _waypointColor, _poiColor, _markerColor;
qreal _areaOpacity;
bool _infoBackground;
int _digitalZoom;
bool _plot;

View File

@ -13,6 +13,8 @@ CoordinatesFormat MarkerInfoItem::_format = DecimalDegrees;
MarkerInfoItem::MarkerInfoItem(QGraphicsItem *parent) : QGraphicsItem(parent)
{
_color = Qt::red;
_bgColor = Qt::white;
_drawBackground = false;
_font.setPixelSize(FONT_SIZE);
_font.setFamily(FONT_FAMILY);
@ -62,13 +64,15 @@ void MarkerInfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
QRectF r2(OFFSET, 0, fm.boundingRect(_s2).width(), fm.height()
- fm.descent());
painter->setPen(Qt::NoPen);
QColor bc(painter->background().color());
bc.setAlpha(196);
painter->setBrush(QBrush(bc));
painter->drawRect(r2);
painter->drawRect(r1);
painter->setBrush(Qt::NoBrush);
if (_drawBackground) {
painter->setPen(Qt::NoPen);
QColor bc(_bgColor);
bc.setAlpha(196);
painter->setBrush(QBrush(bc));
painter->drawRect(r2);
painter->drawRect(r1);
painter->setBrush(Qt::NoBrush);
}
painter->setFont(_font);
painter->setPen(_color);
@ -84,3 +88,15 @@ void MarkerInfoItem::setColor(const QColor &color)
_color = color;
update();
}
void MarkerInfoItem::setBackgroundColor(const QColor &color)
{
_bgColor = color;
update();
}
void MarkerInfoItem::drawBackground(bool draw)
{
_drawBackground = draw;
update();
}

View File

@ -26,6 +26,8 @@ public:
void setCoordinates(const Coordinates &c);
void setColor(const QColor &color);
void setBackgroundColor(const QColor &color);
void drawBackground(bool draw);
static void setCoordinatesFormat(const CoordinatesFormat &format)
{_format = format;}
@ -35,8 +37,9 @@ private:
QString _s1, _s2;
QRectF _boundingRect;
QColor _color;
QColor _color, _bgColor;
QFont _font;
bool _drawBackground;
static CoordinatesFormat _format;
};

View File

@ -365,6 +365,16 @@ void PathItem::setMarkerColor(const QColor &color)
_markerInfo->setColor(color);
}
void PathItem::setMarkerBackgroundColor(const QColor &color)
{
_markerInfo->setBackgroundColor(color);
}
void PathItem::drawMarkerBackground(bool draw)
{
_markerInfo->drawBackground(draw);
}
void PathItem::hover(bool hover)
{
if (hover) {

View File

@ -41,6 +41,8 @@ public:
void setPenStyle(Qt::PenStyle style);
void setDigitalZoom(int zoom);
void setMarkerColor(const QColor &color);
void setMarkerBackgroundColor(const QColor &color);
void drawMarkerBackground(bool draw);
void showMarker(bool show);
void showMarkerInfo(MarkerInfoItem::Type type);
void showTicks(bool show);

View File

@ -10,7 +10,7 @@ using namespace Mapsforge;
#define PATHS_EXTENT 20
#define SEARCH_EXTENT -0.5
static double limit = cos(deg2rad(170));
static double LIMIT = cos(deg2rad(170));
static qreal area(const QPainterPath &polygon)
{
@ -78,7 +78,7 @@ static QPainterPath parallelPath(const QPainterPath &p, double dy)
if (k == 0)
continue;
if (u.at(k).x() * u.at(k-1).x() + u.at(k).y() * u.at(k-1).y() < limit)
if (u.at(k).x() * u.at(k-1).x() + u.at(k).y() * u.at(k-1).y() < LIMIT)
return p;
}
@ -127,9 +127,8 @@ void RasterTile::processPointLabels(const QList<MapData::Point> &points,
if ((lbl = label(ri->key(), point.tags))) {
if (si && si->id() != ri->symbolId())
continue;
ti = ri;
break;
if (!ti || ti->priority() < ri->priority())
ti = ri;
}
}
}