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/SkTextBlob.cpp | |
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/SkTextBlob.cpp')
-rw-r--r-- | src/core/SkTextBlob.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp index fcaeec8613..72e7da8011 100644 --- a/src/core/SkTextBlob.cpp +++ b/src/core/SkTextBlob.cpp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -#include "SkTextBlobRunIterator.h" +#include "SkTextBlob.h" #include "SkGlyphRun.h" #include "SkPaintPriv.h" @@ -333,7 +333,7 @@ namespace { union PositioningAndExtended { int32_t intValue; struct { - SkTextBlob::GlyphPositioning positioning; + uint8_t positioning; uint8_t extended; uint16_t padding; }; @@ -343,6 +343,12 @@ static_assert(sizeof(PositioningAndExtended) == sizeof(int32_t), ""); } // namespace +enum SkTextBlob::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. +}; + unsigned SkTextBlob::ScalarsPerGlyph(GlyphPositioning pos) { // GlyphPositioning values are directly mapped to scalars-per-glyph. SkASSERT(pos <= 2); @@ -400,9 +406,16 @@ const SkPoint& SkTextBlobRunIterator::offset() const { return fCurrentRun->offset(); } -SkTextBlob::GlyphPositioning SkTextBlobRunIterator::positioning() const { +SkTextBlobRunIterator::GlyphPositioning SkTextBlobRunIterator::positioning() const { SkASSERT(!this->done()); - return fCurrentRun->positioning(); + static_assert(static_cast<GlyphPositioning>(SkTextBlob::kDefault_Positioning) == + kDefault_Positioning, ""); + static_assert(static_cast<GlyphPositioning>(SkTextBlob::kHorizontal_Positioning) == + kHorizontal_Positioning, ""); + static_assert(static_cast<GlyphPositioning>(SkTextBlob::kFull_Positioning) == + kFull_Positioning, ""); + + return SkTo<GlyphPositioning>(fCurrentRun->positioning()); } void SkTextBlobRunIterator::applyFontToPaint(SkPaint* paint) const { @@ -792,7 +805,8 @@ void SkTextBlobPriv::Flatten(const SkTextBlob& blob, SkWriteBuffer& buffer) { buffer.writeByteArray(it.glyphs(), it.glyphCount() * sizeof(uint16_t)); buffer.writeByteArray(it.pos(), it.glyphCount() * sizeof(SkScalar) * - SkTextBlob::ScalarsPerGlyph(it.positioning())); + SkTextBlob::ScalarsPerGlyph( + SkTo<SkTextBlob::GlyphPositioning>(it.positioning()))); if (pe.extended) { buffer.writeByteArray(it.clusters(), sizeof(uint32_t) * it.glyphCount()); buffer.writeByteArray(it.text(), it.textSize()); @@ -820,7 +834,7 @@ sk_sp<SkTextBlob> SkTextBlobPriv::MakeFromBuffer(SkReadBuffer& reader) { PositioningAndExtended pe; pe.intValue = reader.read32(); - SkTextBlob::GlyphPositioning pos = pe.positioning; + const auto pos = SkTo<SkTextBlob::GlyphPositioning>(pe.positioning); if (glyphCount <= 0 || pos > SkTextBlob::kFull_Positioning) { return nullptr; } |