mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <dirk@hohndel.org>
This commit is contained in:
parent
48cf2fd6bc
commit
44c33742c2
1 changed files with 5 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue