From 44c33742c26dcf9387b5c837c161e33ddc5eb060 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Fri, 28 Jun 2013 16:36:16 +0300 Subject: Profile: add white outline to all text Goal: no blending between profile text and graph lines Qt doesn't seem to provide an easy-to-go solution in terms of styling the z-order of the pen and brush layers of a QAbstractGraphicsShapeItem (or alternatively pen offset), which is needed if for example one likes the pen not to cover the text fill. Calling QGraphicsSimpleTextItem->setPen() on small text can cover bigger portions of the text, as the pen ends on top of the fill and given the pen stroke path ends up scaling exactly at the fill path border but not on the outside, for example. Since we don't get quick control over that (and to avoid the issue in a naive way), we set the text as bold and the white outline lands over the "bold-ed" area of glyphs. Signed-off-by: Dirk Hohndel --- qt-ui/profilegraphics.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp index cb69bc1ba..f04d2d1fc 100644 --- a/qt-ui/profilegraphics.cpp +++ b/qt-ui/profilegraphics.cpp @@ -1135,16 +1135,20 @@ void ProfileGraphicsView::plot_depth_profile() QGraphicsSimpleTextItem *ProfileGraphicsView::plot_text(text_render_options_t *tro,const QPointF& pos, const QString& text, QGraphicsItem *parent) { - QFontMetrics fm(font()); + QFont fnt(font()); + fnt.setBold(true); + QFontMetrics fm(fnt); double dx = tro->hpos * (fm.width(text)); double dy = tro->vpos * (fm.height()); QGraphicsSimpleTextItem *item = new QGraphicsSimpleTextItem(text, parent); + item->setFont(fnt); QPointF point(SCALEGC(pos.x(), pos.y())); // This is neded because of the SCALE macro. item->setPos(point.x() + dx, point.y() + dy); item->setBrush(QBrush(profile_color[tro->color].first())); + item->setPen(QPen(profile_color[TEXT_BACKGROUND].first())); item->setFlag(QGraphicsItem::ItemIgnoresTransformations); if (!parent) -- cgit v1.2.3-70-g09d2