aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkTextBlobPriv.h
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-07-27 09:47:15 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-27 14:10:17 +0000
commitab54e7394d81438f5256b632c71724b480a7f66b (patch)
treeaedbae9659b1d67b069751ae730fb8c09e73f96d /src/core/SkTextBlobPriv.h
parent504dd052b94c318afeadc5c68e1c3b233d7571c1 (diff)
Hide SkTextBlob::GlyphPositioning from public API
Make private, add corresponding SkTextBlobRunIterator enum. Also move SkTextBlobRunIterator to SkTextBlobPriv.h. Change-Id: If3e0beabb0e8484b1ac73c6fc0827e920ca1f93b Reviewed-on: https://skia-review.googlesource.com/142501 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Herb Derby <herb@google.com> Reviewed-by: Cary Clark <caryclark@google.com>
Diffstat (limited to 'src/core/SkTextBlobPriv.h')
-rw-r--r--src/core/SkTextBlobPriv.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/core/SkTextBlobPriv.h b/src/core/SkTextBlobPriv.h
index 70fdf5a57e..bec6b882a0 100644
--- a/src/core/SkTextBlobPriv.h
+++ b/src/core/SkTextBlobPriv.h
@@ -30,4 +30,41 @@ public:
static sk_sp<SkTextBlob> MakeFromBuffer(SkReadBuffer&);
};
+/**
+ * Iterate through all of the text runs of the text blob. For example:
+ * for (SkTextBlobRunIterator it(blob); !it.done(); it.next()) {
+ * .....
+ * }
+ */
+class SkTextBlobRunIterator {
+public:
+ SkTextBlobRunIterator(const SkTextBlob* blob);
+
+ enum GlyphPositioning : uint8_t {
+ kDefault_Positioning = 0, // Default glyph advances -- zero scalars per glyph.
+ kHorizontal_Positioning = 1, // Horizontal positioning -- one scalar per glyph.
+ kFull_Positioning = 2 // Point positioning -- two scalars per glyph.
+ };
+
+ bool done() const;
+ void next();
+
+ uint32_t glyphCount() const;
+ const uint16_t* glyphs() const;
+ const SkScalar* pos() const;
+ const SkPoint& offset() const;
+ void applyFontToPaint(SkPaint*) const;
+ GlyphPositioning positioning() const;
+ uint32_t* clusters() const;
+ uint32_t textSize() const;
+ char* text() const;
+
+ bool isLCD() const;
+
+private:
+ const SkTextBlob::RunRecord* fCurrentRun;
+
+ SkDEBUGCODE(uint8_t* fStorageTop;)
+};
+
#endif // SkTextBlobPriv_DEFINED