aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkTextBlob.cpp
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/SkTextBlob.cpp
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/SkTextBlob.cpp')
-rw-r--r--src/core/SkTextBlob.cpp26
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;
}