diff options
author | Florin Malita <fmalita@chromium.org> | 2018-07-27 09:47:15 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-27 14:10:17 +0000 |
commit | ab54e7394d81438f5256b632c71724b480a7f66b (patch) | |
tree | aedbae9659b1d67b069751ae730fb8c09e73f96d /src/core/SkTextBlobPriv.h | |
parent | 504dd052b94c318afeadc5c68e1c3b233d7571c1 (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.h | 37 |
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 |