aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/profilegraphics.cpp31
-rw-r--r--qt-ui/profilegraphics.h2
2 files changed, 23 insertions, 10 deletions
diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp
index 29d2a72af..543e0dbbc 100644
--- a/qt-ui/profilegraphics.cpp
+++ b/qt-ui/profilegraphics.cpp
@@ -1061,23 +1061,36 @@ void ProfileGraphicsView::plot_depth_profile()
}
}
-QGraphicsSimpleTextItem *ProfileGraphicsView::plot_text(text_render_options_t *tro,const QPointF& pos, const QString& text, QGraphicsItem *parent)
+QGraphicsItemGroup *ProfileGraphicsView::plot_text(text_render_options_t *tro,const QPointF& pos, const QString& text, QGraphicsItem *parent)
{
- QFontMetrics fm(font());
+ QFont fnt(font());
+ QFontMetrics fm(fnt);
+ QPointF point(SCALEGC(pos.x(), pos.y())); // This is neded because of the SCALE macro.
double dx = tro->hpos * (fm.width(text));
double dy = tro->vpos * (fm.height());
- QGraphicsSimpleTextItem *item = new QGraphicsSimpleTextItem(text, parent);
- QPointF point(SCALEGC(pos.x(), pos.y())); // This is neded because of the SCALE macro.
+ QGraphicsItemGroup *group = new QGraphicsItemGroup(parent);
+ QPainterPath textPath;
+ /* addText() uses bottom-left text baseline and the -3 offset is probably slightly off
+ * for different font sizes. */
+ textPath.addText(0, fm.height() - 3, fnt, text);
+ QPainterPathStroker stroker;
+ stroker.setWidth(3);
+ QGraphicsPathItem *strokedItem = new QGraphicsPathItem(stroker.createStroke(textPath), group);
+ strokedItem->setBrush(QBrush(profile_color[TEXT_BACKGROUND].first()));
+ strokedItem->setPen(Qt::NoPen);
- item->setPos(point.x() + dx, point.y() + dy);
- item->setBrush(QBrush(profile_color[tro->color].first()));
- item->setFlag(QGraphicsItem::ItemIgnoresTransformations);
+ QGraphicsPathItem *textItem = new QGraphicsPathItem(textPath, group);
+ textItem->setBrush(QBrush(profile_color[tro->color].first()));
+ textItem->setPen(Qt::NoPen);
+
+ group->setPos(point.x() + dx, point.y() + dy);
+ group->setFlag(QGraphicsItem::ItemIgnoresTransformations);
if (!parent)
- scene()->addItem(item);
- return item;
+ scene()->addItem(group);
+ return group;
}
void ProfileGraphicsView::resizeEvent(QResizeEvent *event)
diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h
index 6a5413d4f..c3cb4ef73 100644
--- a/qt-ui/profilegraphics.h
+++ b/qt-ui/profilegraphics.h
@@ -104,7 +104,7 @@ public slots:
private:
void plot_depth_profile();
- QGraphicsSimpleTextItem* plot_text(text_render_options_t *tro, const QPointF& pos, const QString &text, QGraphicsItem *parent = 0);
+ QGraphicsItemGroup *plot_text(text_render_options_t *tro, const QPointF& pos, const QString &text, QGraphicsItem *parent = 0);
void plot_events(struct divecomputer *dc);
void plot_one_event(struct event *event);
void plot_temperature_profile();