mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-28 05:34:47 +01:00
km/mi markers polishing
This commit is contained in:
parent
c688b5fc09
commit
8bec307e03
@ -46,6 +46,7 @@ PathItem::PathItem(const Path &path, Map *map, QGraphicsItem *parent)
|
|||||||
|
|
||||||
updatePainterPath();
|
updatePainterPath();
|
||||||
updateShape();
|
updateShape();
|
||||||
|
updateTickRects();
|
||||||
|
|
||||||
_markerDistance = _path.first().first().distance();
|
_markerDistance = _path.first().first().distance();
|
||||||
_marker = new MarkerItem(this);
|
_marker = new MarkerItem(this);
|
||||||
@ -53,8 +54,6 @@ PathItem::PathItem(const Path &path, Map *map, QGraphicsItem *parent)
|
|||||||
|
|
||||||
setCursor(Qt::ArrowCursor);
|
setCursor(Qt::ArrowCursor);
|
||||||
setAcceptHoverEvents(true);
|
setAcceptHoverEvents(true);
|
||||||
|
|
||||||
computeTickInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathItem::updateShape()
|
void PathItem::updateShape()
|
||||||
@ -132,17 +131,19 @@ void PathItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|||||||
painter->setRenderHint(QPainter::Antialiasing, false);
|
painter->setRenderHint(QPainter::Antialiasing, false);
|
||||||
|
|
||||||
for (int i = 1; i < _tickCount; i++) {
|
for (int i = 1; i < _tickCount; i++) {
|
||||||
QPointF pos(position(i * _tickSize * xInM()));
|
QPoint pos(position(i * _tickSize * xInM()).toPoint());
|
||||||
QPointF arrow[3] = {pos, QPointF(pos.x() + 3, pos.y() - 3),
|
QPointF arrow[3] = {QPointF(pos.x() - 0.5, pos.y()),
|
||||||
QPointF(pos.x() - 3, pos.y() - 3)};
|
QPointF(pos.x() + 2.5, pos.y() - 3),
|
||||||
|
QPointF(pos.x() - 3.5, pos.y() - 3)};
|
||||||
QString val(QString::number(i * _tickSize));
|
QString val(QString::number(i * _tickSize));
|
||||||
|
|
||||||
QRect br(_tickRect);
|
QRectF br(_tickRect);
|
||||||
br.moveCenter(QPoint(pos.x(), pos.y() - br.height()/2 - 5));
|
br.moveCenter(QPointF(pos.x() - 0.5, pos.y() - br.height()/2.0
|
||||||
|
- 2.5));
|
||||||
painter->setPen(Qt::white);
|
painter->setPen(Qt::white);
|
||||||
painter->setBrush(_pen.color());
|
painter->setBrush(_pen.color());
|
||||||
painter->drawPolygon(arrow, 3);
|
painter->drawPolygon(arrow, 3);
|
||||||
painter->drawRoundedRect(br, 2, 2);
|
painter->drawRoundedRect(br, 1.5, 1.5);
|
||||||
painter->drawText(br, Qt::AlignCenter, val);
|
painter->drawText(br, Qt::AlignCenter, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -162,6 +163,7 @@ void PathItem::setMap(Map *map)
|
|||||||
|
|
||||||
updatePainterPath();
|
updatePainterPath();
|
||||||
updateShape();
|
updateShape();
|
||||||
|
updateTickRects();
|
||||||
|
|
||||||
QPointF pos = position(_markerDistance);
|
QPointF pos = position(_markerDistance);
|
||||||
if (isValid(pos))
|
if (isValid(pos))
|
||||||
@ -332,15 +334,15 @@ unsigned PathItem::tickSize() const
|
|||||||
|
|
||||||
if (r < 1)
|
if (r < 1)
|
||||||
return 0;
|
return 0;
|
||||||
else if (r < 10)
|
else if (r < 15)
|
||||||
return 1;
|
return 1;
|
||||||
else if (r < 50)
|
else if (r < 50)
|
||||||
return 5;
|
return 5;
|
||||||
else if (r < 100)
|
else if (r < 150)
|
||||||
return 10;
|
return 10;
|
||||||
else if (r < 500)
|
else if (r < 500)
|
||||||
return 50;
|
return 50;
|
||||||
else if (r < 1000)
|
else if (r < 1500)
|
||||||
return 100;
|
return 100;
|
||||||
else if (r < 5000)
|
else if (r < 5000)
|
||||||
return 500;
|
return 500;
|
||||||
@ -348,7 +350,7 @@ unsigned PathItem::tickSize() const
|
|||||||
return 1000;
|
return 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathItem::computeTickInfo()
|
void PathItem::updateTickRects()
|
||||||
{
|
{
|
||||||
_tickSize = tickSize();
|
_tickSize = tickSize();
|
||||||
qreal f = xInM();
|
qreal f = xInM();
|
||||||
@ -358,6 +360,15 @@ void PathItem::computeTickInfo()
|
|||||||
_tickRect = fm.boundingRect(QRect(), Qt::AlignCenter,
|
_tickRect = fm.boundingRect(QRect(), Qt::AlignCenter,
|
||||||
QString::number(qMax(_tickSize * (_tickCount - 1), 10)))
|
QString::number(qMax(_tickSize * (_tickCount - 1), 10)))
|
||||||
.adjusted(-2, 0, 2, 0);
|
.adjusted(-2, 0, 2, 0);
|
||||||
|
|
||||||
|
_tickBoundingRect = QRectF();
|
||||||
|
for (int i = 1; i < _tickCount; i++) {
|
||||||
|
QPoint pos(position(i * _tickSize * xInM()).toPoint());
|
||||||
|
QRectF br(_tickRect);
|
||||||
|
br.moveCenter(QPointF(pos.x() - 0.5, pos.y() - br.height()/2.0
|
||||||
|
- 2.5));
|
||||||
|
_tickBoundingRect |= br;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathItem::showTicks(bool show)
|
void PathItem::showTicks(bool show)
|
||||||
@ -376,7 +387,7 @@ void PathItem::setUnits(Units units)
|
|||||||
|
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
_units = units;
|
_units = units;
|
||||||
computeTickInfo();
|
updateTickRects();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
void PathItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||||
@ -404,7 +415,6 @@ void PathItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
|||||||
QRectF PathItem::boundingRect() const
|
QRectF PathItem::boundingRect() const
|
||||||
{
|
{
|
||||||
return _showTicks
|
return _showTicks
|
||||||
? _shape.boundingRect().adjusted(-_tickRect.width()/2,
|
? _shape.boundingRect() | _tickBoundingRect
|
||||||
-(_tickRect.height() + 4), _tickRect.width()/2, 0)
|
|
||||||
: _shape.boundingRect();
|
: _shape.boundingRect();
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ private:
|
|||||||
|
|
||||||
qreal xInM() const;
|
qreal xInM() const;
|
||||||
unsigned tickSize() const;
|
unsigned tickSize() const;
|
||||||
void computeTickInfo();
|
void updateTickRects();
|
||||||
|
|
||||||
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
|
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
|
||||||
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
|
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
|
||||||
@ -73,6 +73,7 @@ private:
|
|||||||
bool _showMarker;
|
bool _showMarker;
|
||||||
bool _showTicks;
|
bool _showTicks;
|
||||||
QRect _tickRect;
|
QRect _tickRect;
|
||||||
|
QRectF _tickBoundingRect;
|
||||||
int _tickSize, _tickCount;
|
int _tickSize, _tickCount;
|
||||||
|
|
||||||
static QFont _font;
|
static QFont _font;
|
||||||
|
Loading…
Reference in New Issue
Block a user