summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@live.com>2015-02-20 07:57:29 -0600
committerMichael Brasser <michael.brasser@live.com>2015-02-25 14:35:46 +0000
commitbf16940d33208409d17b76bceb6d27b77675bea6 (patch)
treefd84a807633498cfc481406cd25f3e37220218ed /src/gui/text
parent33403f2c79d678afc5b76add2c517d99b9708c32 (diff)
Allow QDistanceField to be directly constructed from a QPainterPath.
Enables optimization in the case of an already existing QPainterPath. Change-Id: I7f038673ce245ea19e400e6d2c728f07cb55e366 Task-number: QTBUG-42853 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qdistancefield.cpp11
-rw-r--r--src/gui/text/qdistancefield_p.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/gui/text/qdistancefield.cpp b/src/gui/text/qdistancefield.cpp
index 471a39a6e1..4d189786a1 100644
--- a/src/gui/text/qdistancefield.cpp
+++ b/src/gui/text/qdistancefield.cpp
@@ -833,6 +833,17 @@ QDistanceField::QDistanceField(QFontEngine *fontEngine, glyph_t glyph, bool doub
setGlyph(fontEngine, glyph, doubleResolution);
}
+QDistanceField::QDistanceField(const QPainterPath &path, glyph_t glyph, bool doubleResolution)
+{
+ QPainterPath dfPath = path;
+ dfPath.translate(-dfPath.boundingRect().topLeft());
+ dfPath.setFillRule(Qt::WindingFill);
+
+ d = QDistanceFieldData::create(dfPath, doubleResolution);
+ d->glyph = glyph;
+}
+
+
QDistanceField::QDistanceField(QDistanceFieldData *data)
: d(data)
{
diff --git a/src/gui/text/qdistancefield_p.h b/src/gui/text/qdistancefield_p.h
index 95bb3b11c7..c376e93abe 100644
--- a/src/gui/text/qdistancefield_p.h
+++ b/src/gui/text/qdistancefield_p.h
@@ -97,6 +97,7 @@ public:
QDistanceField(int width, int height);
QDistanceField(const QRawFont &font, glyph_t glyph, bool doubleResolution = false);
QDistanceField(QFontEngine *fontEngine, glyph_t glyph, bool doubleResolution = false);
+ QDistanceField(const QPainterPath &path, glyph_t glyph, bool doubleResolution = false);
QDistanceField(const QDistanceField &other);
bool isNull() const;