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 | |
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>
-rw-r--r-- | include/core/SkTextBlob.h | 8 | ||||
-rw-r--r-- | src/core/SkDevice.cpp | 10 | ||||
-rw-r--r-- | src/core/SkGlyphRun.cpp | 10 | ||||
-rw-r--r-- | src/core/SkGlyphRun.h | 6 | ||||
-rw-r--r-- | src/core/SkOverdrawCanvas.cpp | 11 | ||||
-rw-r--r-- | src/core/SkPaint.cpp | 8 | ||||
-rw-r--r-- | src/core/SkRemoteGlyphCache.cpp | 6 | ||||
-rw-r--r-- | src/core/SkTextBlob.cpp | 26 | ||||
-rw-r--r-- | src/core/SkTextBlobPriv.h | 37 | ||||
-rw-r--r-- | src/core/SkTextBlobRunIterator.h | 43 | ||||
-rw-r--r-- | src/gpu/text/GrTextBlob.cpp | 1 | ||||
-rw-r--r-- | src/gpu/text/GrTextBlobCache.h | 2 | ||||
-rw-r--r-- | src/gpu/text/GrTextContext.cpp | 2 | ||||
-rw-r--r-- | src/gpu/text/GrTextContext.h | 1 | ||||
-rw-r--r-- | src/gpu/text/GrTextUtils.cpp | 1 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.cpp | 2 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.h | 3 | ||||
-rw-r--r-- | tests/TextBlobTest.cpp | 110 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.cpp | 11 |
19 files changed, 147 insertions, 151 deletions
diff --git a/include/core/SkTextBlob.h b/include/core/SkTextBlob.h index cf77a78ca5..8ed66da2df 100644 --- a/include/core/SkTextBlob.h +++ b/include/core/SkTextBlob.h @@ -36,12 +36,6 @@ public: static sk_sp<SkTextBlob> MakeAsDrawText( const void* text, size_t byteLength, const SkPaint& paint); - 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. - }; - /** * Similar to serialize above, but writes directly into |memory|. Returns bytes written or 0u * if serialization failed due to insufficient size. @@ -57,6 +51,8 @@ private: friend class SkNVRefCnt<SkTextBlob>; class RunRecord; + enum GlyphPositioning : uint8_t; + explicit SkTextBlob(const SkRect& bounds); ~SkTextBlob(); diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp index f0829dc4da..b52a82efc1 100644 --- a/src/core/SkDevice.cpp +++ b/src/core/SkDevice.cpp @@ -26,7 +26,7 @@ #include "SkShader.h" #include "SkSpecialImage.h" #include "SkTLazy.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTextToPathIter.h" #include "SkTo.h" #include "SkUtils.h" @@ -153,7 +153,7 @@ void SkBaseDevice::drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, it.applyFontToPaint(&runPaint); switch (it.positioning()) { - case SkTextBlob::kDefault_Positioning: { + case SkTextBlobRunIterator::kDefault_Positioning: { auto origin = SkPoint::Make(x + offset.x(), y + offset.y()); SkGlyphRunBuilder builder; builder.drawText(runPaint, (const char*) it.glyphs(), textLen, origin); @@ -161,16 +161,14 @@ void SkBaseDevice::drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, glyphRunList.temporaryShuntToDrawPosText(this, SkPoint::Make(0, 0)); } break; - case SkTextBlob::kHorizontal_Positioning: + case SkTextBlobRunIterator::kHorizontal_Positioning: this->drawPosText(it.glyphs(), textLen, it.pos(), 1, SkPoint::Make(x, y + offset.y()), runPaint); break; - case SkTextBlob::kFull_Positioning: + case SkTextBlobRunIterator::kFull_Positioning: this->drawPosText(it.glyphs(), textLen, it.pos(), 2, SkPoint::Make(x, y), runPaint); break; - default: - SK_ABORT("unhandled positioning mode"); } } } diff --git a/src/core/SkGlyphRun.cpp b/src/core/SkGlyphRun.cpp index ca52289ea9..7683325c5b 100644 --- a/src/core/SkGlyphRun.cpp +++ b/src/core/SkGlyphRun.cpp @@ -24,7 +24,7 @@ #include "SkRasterClip.h" #include "SkStrikeCache.h" #include "SkTextBlob.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTo.h" #include "SkUtils.h" @@ -503,14 +503,14 @@ void SkGlyphRunBuilder::drawTextBlob(const SkPaint& paint, const SkTextBlob& blo size_t uniqueGlyphIDsSize = 0; switch (it.positioning()) { - case SkTextBlob::kDefault_Positioning: { + case SkTextBlobRunIterator::kDefault_Positioning: { uniqueGlyphIDsSize = this->simplifyDrawText( runPaint, glyphIDs, offset, currentDenseIndices, currentUniqueGlyphIDs, currentPositions, text, clusters); } break; - case SkTextBlob::kHorizontal_Positioning: { + case SkTextBlobRunIterator::kHorizontal_Positioning: { auto constY = offset.y(); uniqueGlyphIDsSize = this->simplifyDrawPosTextH( runPaint, glyphIDs, it.pos(), constY, @@ -518,14 +518,12 @@ void SkGlyphRunBuilder::drawTextBlob(const SkPaint& paint, const SkTextBlob& blo text, clusters); } break; - case SkTextBlob::kFull_Positioning: + case SkTextBlobRunIterator::kFull_Positioning: uniqueGlyphIDsSize = this->simplifyDrawPosText( runPaint, glyphIDs, (const SkPoint*)it.pos(), currentDenseIndices, currentUniqueGlyphIDs, currentPositions, text, clusters); break; - default: - SK_ABORT("unhandled positioning mode"); } currentDenseIndices += runSize; diff --git a/src/core/SkGlyphRun.h b/src/core/SkGlyphRun.h index b2d1aad265..1456e6c290 100644 --- a/src/core/SkGlyphRun.h +++ b/src/core/SkGlyphRun.h @@ -19,7 +19,7 @@ #include "SkPoint.h" #include "SkSurfaceProps.h" #include "SkTemplates.h" -#include "SkTextBlob.h" +#include "SkTextBlobPriv.h" #include "SkTypes.h" class SkBaseDevice; @@ -203,7 +203,9 @@ public: const SkScalar* pos() const { return (const SkScalar*)fList[fIndex].positions().data(); } const SkPoint& offset() const { return fZero; } void applyFontToPaint(SkPaint* paint) const { *paint = fList[fIndex].paint(); } - SkTextBlob::GlyphPositioning positioning() const { return SkTextBlob::kFull_Positioning; } + SkTextBlobRunIterator::GlyphPositioning positioning() const { + return SkTextBlobRunIterator::kFull_Positioning; + } const uint32_t* clusters() const { return fList[fIndex].clusters().data(); } uint32_t textSize() const { return fList[fIndex].text().size(); } const char* text() const { return fList[fIndex].text().data(); } diff --git a/src/core/SkOverdrawCanvas.cpp b/src/core/SkOverdrawCanvas.cpp index 35656e0829..249723e494 100644 --- a/src/core/SkOverdrawCanvas.cpp +++ b/src/core/SkOverdrawCanvas.cpp @@ -19,7 +19,7 @@ #include "SkRSXform.h" #include "SkStrikeCache.h" #include "SkTextBlob.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTo.h" namespace { @@ -154,20 +154,17 @@ void SkOverdrawCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScal const SkPoint& offset = it.offset(); it.applyFontToPaint(&runPaint); switch (it.positioning()) { - case SkTextBlob::kDefault_Positioning: + case SkTextBlobRunIterator::kDefault_Positioning: this->onDrawText(it.glyphs(), textLen, x + offset.x(), y + offset.y(), runPaint); break; - case SkTextBlob::kHorizontal_Positioning: + case SkTextBlobRunIterator::kHorizontal_Positioning: this->drawPosTextCommon(it.glyphs(), textLen, it.pos(), 1, SkPoint::Make(x, y + offset.y()), runPaint); break; - case SkTextBlob::kFull_Positioning: + case SkTextBlobRunIterator::kFull_Positioning: this->drawPosTextCommon(it.glyphs(), textLen, it.pos(), 2, SkPoint::Make(x, y), runPaint); break; - default: - SkASSERT(false); - break; } } } diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index 0fdf58b6e5..9b8431e591 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -33,7 +33,7 @@ #include "SkSurfacePriv.h" #include "SkTLazy.h" #include "SkTextBlob.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTextFormatParams.h" #include "SkTextToPathIter.h" #include "SkTo.h" @@ -1095,15 +1095,15 @@ int SkPaint::getTextBlobIntercepts(const SkTextBlob* blob, const SkScalar bounds SkScalar* runIntervals = intervals ? intervals + count : nullptr; switch (it.positioning()) { - case SkTextBlob::kDefault_Positioning: + case SkTextBlobRunIterator::kDefault_Positioning: count += runPaint.getTextIntercepts(it.glyphs(), runByteCount, it.offset().x(), it.offset().y(), bounds, runIntervals); break; - case SkTextBlob::kHorizontal_Positioning: + case SkTextBlobRunIterator::kHorizontal_Positioning: count += runPaint.getPosTextHIntercepts(it.glyphs(), runByteCount, it.pos(), it.offset().y(), bounds, runIntervals); break; - case SkTextBlob::kFull_Positioning: + case SkTextBlobRunIterator::kFull_Positioning: count += runPaint.getPosTextIntercepts(it.glyphs(), runByteCount, reinterpret_cast<const SkPoint*>(it.pos()), bounds, runIntervals); diff --git a/src/core/SkRemoteGlyphCache.cpp b/src/core/SkRemoteGlyphCache.cpp index 58422627f5..9aa43ad049 100644 --- a/src/core/SkRemoteGlyphCache.cpp +++ b/src/core/SkRemoteGlyphCache.cpp @@ -267,7 +267,7 @@ private: FAIL_AND_RETURN } - if (it.positioning() == SkTextBlob::kDefault_Positioning) { + if (it.positioning() == SkTextBlobRunIterator::kDefault_Positioning) { // Default positioning needs advances. Can't do that. TRACE_EVENT0("skia", "kDefault_Positioning"); FAIL_AND_RETURN @@ -291,13 +291,13 @@ private: SkSTArenaAlloc<120> arena; SkFindAndPlaceGlyph::MapperInterface* mapper = nullptr; switch (it.positioning()) { - case SkTextBlob::kHorizontal_Positioning: + case SkTextBlobRunIterator::kHorizontal_Positioning: posFn = [](int index, const SkScalar* pos) { return SkPoint{pos[index], 0}; }; mapper = SkFindAndPlaceGlyph::CreateMapper( runMatrix, SkPoint::Make(position.x(), position.y() + it.offset().y()), 1, &arena); break; - case SkTextBlob::kFull_Positioning: + case SkTextBlobRunIterator::kFull_Positioning: posFn = [](int index, const SkScalar* pos) { return SkPoint{pos[2 * index], pos[2 * index + 1]}; }; 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; } 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 diff --git a/src/core/SkTextBlobRunIterator.h b/src/core/SkTextBlobRunIterator.h deleted file mode 100644 index 18f41d7dcb..0000000000 --- a/src/core/SkTextBlobRunIterator.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#ifndef SkTextBlobRunIterator_DEFINED -#define SkTextBlobRunIterator_DEFINED - -#include "SkTextBlob.h" - -/** - * 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); - - 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; - SkTextBlob::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 // SkTextBlobRunIterator_DEFINED diff --git a/src/gpu/text/GrTextBlob.cpp b/src/gpu/text/GrTextBlob.cpp index 7b4507eab0..6bd4c1c3bb 100644 --- a/src/gpu/text/GrTextBlob.cpp +++ b/src/gpu/text/GrTextBlob.cpp @@ -14,7 +14,6 @@ #include "SkGlyphCache.h" #include "SkMaskFilterBase.h" #include "SkPaintPriv.h" -#include "SkTextBlobRunIterator.h" #include "SkTextToPathIter.h" #include "ops/GrAtlasTextOp.h" #include <new> diff --git a/src/gpu/text/GrTextBlobCache.h b/src/gpu/text/GrTextBlobCache.h index 110e0ad7fc..fe245c99d3 100644 --- a/src/gpu/text/GrTextBlobCache.h +++ b/src/gpu/text/GrTextBlobCache.h @@ -12,7 +12,7 @@ #include "SkMessageBus.h" #include "SkRefCnt.h" #include "SkTArray.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTHash.h" class GrTextBlobCache { diff --git a/src/gpu/text/GrTextContext.cpp b/src/gpu/text/GrTextContext.cpp index aeb99f1548..d57055a511 100644 --- a/src/gpu/text/GrTextContext.cpp +++ b/src/gpu/text/GrTextContext.cpp @@ -196,7 +196,7 @@ void GrTextContext::regenerateGlyphRunList(GrTextBlob* cacheBlob, } cacheBlob->setRunPaintFlags(run, runPaint.skPaint().getFlags()); - SkASSERT(it.positioning() == SkTextBlob::kFull_Positioning); + SkASSERT(it.positioning() == SkTextBlobRunIterator::kFull_Positioning); if (CanDrawAsDistanceFields(runPaint, viewMatrix, props, shaderCaps.supportsDistanceFieldText(), fOptions)) { this->drawDFPosText(cacheBlob, run, glyphCache, props, runPaint, diff --git a/src/gpu/text/GrTextContext.h b/src/gpu/text/GrTextContext.h index aa4626e411..0093f846b4 100644 --- a/src/gpu/text/GrTextContext.h +++ b/src/gpu/text/GrTextContext.h @@ -12,7 +12,6 @@ #include "GrDistanceFieldAdjustTable.h" #include "GrGeometryProcessor.h" #include "GrTextUtils.h" -#include "SkTextBlobRunIterator.h" #if GR_TEST_UTILS #include "GrDrawOpTest.h" diff --git a/src/gpu/text/GrTextUtils.cpp b/src/gpu/text/GrTextUtils.cpp index ec5389c464..ba033aaaa5 100644 --- a/src/gpu/text/GrTextUtils.cpp +++ b/src/gpu/text/GrTextUtils.cpp @@ -10,7 +10,6 @@ #include "SkGlyphCache.h" #include "SkGr.h" #include "SkPaint.h" -#include "SkTextBlobRunIterator.h" void GrTextUtils::Paint::initFilteredColor() { GrColor4f filteredColor = SkColorToUnpremulGrColor4f(fPaint->getColor(), *fDstColorSpaceInfo); diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index cdaeef0418..9cd2892a05 100644 --- a/src/pdf/SkPDFDevice.cpp +++ b/src/pdf/SkPDFDevice.cpp @@ -43,7 +43,7 @@ #include "SkString.h" #include "SkSurface.h" #include "SkTemplates.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlob.h" #include "SkTextFormatParams.h" #include "SkTo.h" #include "SkUtils.h" diff --git a/src/pdf/SkPDFDevice.h b/src/pdf/SkPDFDevice.h index 2075202cb9..7bd1a0ee11 100644 --- a/src/pdf/SkPDFDevice.h +++ b/src/pdf/SkPDFDevice.h @@ -19,7 +19,7 @@ #include "SkSinglyLinkedList.h" #include "SkStream.h" #include "SkTDArray.h" -#include "SkTextBlob.h" +#include "SkTextBlobPriv.h" #include "SkKeyedImage.h" class SkGlyphRunList; @@ -241,7 +241,6 @@ private: int getFontResourceIndex(SkTypeface* typeface, uint16_t glyphID); - void internalDrawGlyphRun(const SkGlyphRun& glyphRun, SkPoint offset); void internalDrawPaint(const SkPaint& paint, ContentEntry* contentEntry); diff --git a/tests/TextBlobTest.cpp b/tests/TextBlobTest.cpp index 5018d7a79b..2c34a78e51 100644 --- a/tests/TextBlobTest.cpp +++ b/tests/TextBlobTest.cpp @@ -8,7 +8,7 @@ #include "SkPaint.h" #include "SkPoint.h" #include "SkSerialProcs.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTo.h" #include "SkTypeface.h" @@ -26,74 +26,74 @@ public: RunBuilderTest(reporter, builder, nullptr, 0, nullptr, 0); RunDef set1[] = { - { 128, SkTextBlob::kDefault_Positioning, 100, 100 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 100 }, }; RunBuilderTest(reporter, builder, set1, SK_ARRAY_COUNT(set1), set1, SK_ARRAY_COUNT(set1)); RunDef set2[] = { - { 128, SkTextBlob::kHorizontal_Positioning, 100, 100 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 100, 100 }, }; RunBuilderTest(reporter, builder, set2, SK_ARRAY_COUNT(set2), set2, SK_ARRAY_COUNT(set2)); RunDef set3[] = { - { 128, SkTextBlob::kFull_Positioning, 100, 100 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 100, 100 }, }; RunBuilderTest(reporter, builder, set3, SK_ARRAY_COUNT(set3), set3, SK_ARRAY_COUNT(set3)); RunDef set4[] = { - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, }; RunBuilderTest(reporter, builder, set4, SK_ARRAY_COUNT(set4), set4, SK_ARRAY_COUNT(set4)); RunDef set5[] = { - { 128, SkTextBlob::kHorizontal_Positioning, 100, 150 }, - { 128, SkTextBlob::kHorizontal_Positioning, 200, 150 }, - { 128, SkTextBlob::kHorizontal_Positioning, 300, 250 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 200, 150 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 300, 250 }, }; RunDef mergedSet5[] = { - { 256, SkTextBlob::kHorizontal_Positioning, 0, 150 }, - { 128, SkTextBlob::kHorizontal_Positioning, 0, 250 }, + { 256, SkTextBlobRunIterator::kHorizontal_Positioning, 0, 150 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 0, 250 }, }; RunBuilderTest(reporter, builder, set5, SK_ARRAY_COUNT(set5), mergedSet5, SK_ARRAY_COUNT(mergedSet5)); RunDef set6[] = { - { 128, SkTextBlob::kFull_Positioning, 100, 100 }, - { 128, SkTextBlob::kFull_Positioning, 200, 200 }, - { 128, SkTextBlob::kFull_Positioning, 300, 300 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 100, 100 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 200, 200 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 300, 300 }, }; RunDef mergedSet6[] = { - { 384, SkTextBlob::kFull_Positioning, 0, 0 }, + { 384, SkTextBlobRunIterator::kFull_Positioning, 0, 0 }, }; RunBuilderTest(reporter, builder, set6, SK_ARRAY_COUNT(set6), mergedSet6, SK_ARRAY_COUNT(mergedSet6)); RunDef set7[] = { - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, - { 128, SkTextBlob::kHorizontal_Positioning, 100, 150 }, - { 128, SkTextBlob::kHorizontal_Positioning, 200, 150 }, - { 128, SkTextBlob::kFull_Positioning, 400, 350 }, - { 128, SkTextBlob::kFull_Positioning, 400, 350 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 450 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 450 }, - { 128, SkTextBlob::kHorizontal_Positioning, 100, 550 }, - { 128, SkTextBlob::kHorizontal_Positioning, 200, 650 }, - { 128, SkTextBlob::kFull_Positioning, 400, 750 }, - { 128, SkTextBlob::kFull_Positioning, 400, 850 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 200, 150 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 400, 350 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 400, 350 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 450 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 450 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 100, 550 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 200, 650 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 400, 750 }, + { 128, SkTextBlobRunIterator::kFull_Positioning, 400, 850 }, }; RunDef mergedSet7[] = { - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 150 }, - { 256, SkTextBlob::kHorizontal_Positioning, 0, 150 }, - { 256, SkTextBlob::kFull_Positioning, 0, 0 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 450 }, - { 128, SkTextBlob::kDefault_Positioning, 100, 450 }, - { 128, SkTextBlob::kHorizontal_Positioning, 0, 550 }, - { 128, SkTextBlob::kHorizontal_Positioning, 0, 650 }, - { 256, SkTextBlob::kFull_Positioning, 0, 0 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 150 }, + { 256, SkTextBlobRunIterator::kHorizontal_Positioning, 0, 150 }, + { 256, SkTextBlobRunIterator::kFull_Positioning, 0, 0 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 450 }, + { 128, SkTextBlobRunIterator::kDefault_Positioning, 100, 450 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 0, 550 }, + { 128, SkTextBlobRunIterator::kHorizontal_Positioning, 0, 650 }, + { 256, SkTextBlobRunIterator::kFull_Positioning, 0, 0 }, }; RunBuilderTest(reporter, builder, set7, SK_ARRAY_COUNT(set7), mergedSet7, SK_ARRAY_COUNT(mergedSet7)); @@ -210,14 +210,16 @@ public: REPORTER_ASSERT(reporter, defaultPaint.isLinearText() != font.isLinearText()); REPORTER_ASSERT(reporter, defaultPaint.isSubpixelText() != font.isSubpixelText()); REPORTER_ASSERT(reporter, defaultPaint.isLCDRenderText() != font.isLCDRenderText()); - REPORTER_ASSERT(reporter, defaultPaint.isEmbeddedBitmapText() != font.isEmbeddedBitmapText()); + REPORTER_ASSERT(reporter, + defaultPaint.isEmbeddedBitmapText() != font.isEmbeddedBitmapText()); REPORTER_ASSERT(reporter, defaultPaint.isAutohinted() != font.isAutohinted()); REPORTER_ASSERT(reporter, defaultPaint.isVerticalText() != font.isVerticalText()); SkTextBlobBuilder builder; - AddRun(font, 1, SkTextBlob::kDefault_Positioning, SkPoint::Make(0, 0), builder); - AddRun(font, 1, SkTextBlob::kHorizontal_Positioning, SkPoint::Make(0, 0), builder); - AddRun(font, 1, SkTextBlob::kFull_Positioning, SkPoint::Make(0, 0), builder); + AddRun(font, 1, SkTextBlobRunIterator::kDefault_Positioning, SkPoint::Make(0, 0), builder); + AddRun(font, 1, SkTextBlobRunIterator::kHorizontal_Positioning, SkPoint::Make(0, 0), + builder); + AddRun(font, 1, SkTextBlobRunIterator::kFull_Positioning, SkPoint::Make(0, 0), builder); sk_sp<SkTextBlob> blob(builder.make()); SkTextBlobRunIterator it(blob.get()); @@ -247,9 +249,9 @@ public: private: struct RunDef { - unsigned count; - SkTextBlob::GlyphPositioning pos; - SkScalar x, y; + unsigned count; + SkTextBlobRunIterator::GlyphPositioning pos; + SkScalar x, y; }; static void RunBuilderTest(skiatest::Reporter* reporter, SkTextBlobBuilder& builder, @@ -278,18 +280,18 @@ private: REPORTER_ASSERT(reporter, !it.done()); REPORTER_ASSERT(reporter, out[i].pos == it.positioning()); REPORTER_ASSERT(reporter, out[i].count == it.glyphCount()); - if (SkTextBlob::kDefault_Positioning == out[i].pos) { + if (SkTextBlobRunIterator::kDefault_Positioning == out[i].pos) { REPORTER_ASSERT(reporter, out[i].x == it.offset().x()); REPORTER_ASSERT(reporter, out[i].y == it.offset().y()); - } else if (SkTextBlob::kHorizontal_Positioning == out[i].pos) { + } else if (SkTextBlobRunIterator::kHorizontal_Positioning == out[i].pos) { REPORTER_ASSERT(reporter, out[i].y == it.offset().y()); } for (unsigned k = 0; k < it.glyphCount(); ++k) { REPORTER_ASSERT(reporter, k % 128 == it.glyphs()[k]); - if (SkTextBlob::kHorizontal_Positioning == it.positioning()) { + if (SkTextBlobRunIterator::kHorizontal_Positioning == it.positioning()) { REPORTER_ASSERT(reporter, SkIntToScalar(k % 128) == it.pos()[k]); - } else if (SkTextBlob::kFull_Positioning == it.positioning()) { + } else if (SkTextBlobRunIterator::kFull_Positioning == it.positioning()) { REPORTER_ASSERT(reporter, SkIntToScalar(k % 128) == it.pos()[k * 2]); REPORTER_ASSERT(reporter, -SkIntToScalar(k % 128) == it.pos()[k * 2 + 1]); } @@ -301,18 +303,18 @@ private: REPORTER_ASSERT(reporter, it.done()); } - static void AddRun(const SkPaint& font, int count, SkTextBlob::GlyphPositioning pos, + static void AddRun(const SkPaint& font, int count, SkTextBlobRunIterator::GlyphPositioning pos, const SkPoint& offset, SkTextBlobBuilder& builder, const SkRect* bounds = nullptr) { switch (pos) { - case SkTextBlob::kDefault_Positioning: { + case SkTextBlobRunIterator::kDefault_Positioning: { const SkTextBlobBuilder::RunBuffer& rb = builder.allocRun(font, count, offset.x(), offset.y(), bounds); for (int i = 0; i < count; ++i) { rb.glyphs[i] = i; } } break; - case SkTextBlob::kHorizontal_Positioning: { + case SkTextBlobRunIterator::kHorizontal_Positioning: { const SkTextBlobBuilder::RunBuffer& rb = builder.allocRunPosH(font, count, offset.y(), bounds); for (int i = 0; i < count; ++i) { @@ -320,7 +322,7 @@ private: rb.pos[i] = SkIntToScalar(i); } } break; - case SkTextBlob::kFull_Positioning: { + case SkTextBlobRunIterator::kFull_Positioning: { const SkTextBlobBuilder::RunBuffer& rb = builder.allocRunPos(font, count, bounds); for (int i = 0; i < count; ++i) { rb.glyphs[i] = i; @@ -369,7 +371,7 @@ DEF_TEST(TextBlob_extended, reporter) { for (uint32_t i = 0; i < it.glyphCount(); ++i) { REPORTER_ASSERT(reporter, it.glyphs()[i] == glyphs[i]); } - REPORTER_ASSERT(reporter, SkTextBlob::kDefault_Positioning == it.positioning()); + REPORTER_ASSERT(reporter, SkTextBlobRunIterator::kDefault_Positioning == it.positioning()); REPORTER_ASSERT(reporter, (SkPoint{0.0f, 0.0f}) == it.offset()); REPORTER_ASSERT(reporter, it.textSize() > 0); REPORTER_ASSERT(reporter, it.clusters()); @@ -475,7 +477,7 @@ DEF_TEST(TextBlob_MakeAsDrawText, reporter) { int runs = 0; for(SkTextBlobRunIterator it(blob.get()); !it.done(); it.next()) { REPORTER_ASSERT(reporter, it.glyphCount() == strlen(text)); - REPORTER_ASSERT(reporter, it.positioning() == SkTextBlob::kFull_Positioning); + REPORTER_ASSERT(reporter, it.positioning() == SkTextBlobRunIterator::kFull_Positioning); runs += 1; } REPORTER_ASSERT(reporter, runs == 1); diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp index 743a8d7920..27b2009bb8 100644 --- a/tools/debugger/SkDrawCommand.cpp +++ b/tools/debugger/SkDrawCommand.cpp @@ -21,8 +21,7 @@ #include "SkPicture.h" #include "SkReadBuffer.h" #include "SkRectPriv.h" -#include "SkTextBlob.h" -#include "SkTextBlobRunIterator.h" +#include "SkTextBlobPriv.h" #include "SkTHash.h" #include "SkTypeface.h" #include "SkWriteBuffer.h" @@ -1950,19 +1949,19 @@ Json::Value SkDrawTextBlobCommand::toJSON(UrlDataManager& urlDataManager) const const uint16_t* iterGlyphs = iter.glyphs(); for (uint32_t i = 0; i < iter.glyphCount(); i++) { switch (iter.positioning()) { - case SkTextBlob::kFull_Positioning: + case SkTextBlobRunIterator::kFull_Positioning: jsonPositions.append(MakeJsonPoint(iterPositions[i * 2], iterPositions[i * 2 + 1])); break; - case SkTextBlob::kHorizontal_Positioning: + case SkTextBlobRunIterator::kHorizontal_Positioning: jsonPositions.append(Json::Value(iterPositions[i])); break; - case SkTextBlob::kDefault_Positioning: + case SkTextBlobRunIterator::kDefault_Positioning: break; } jsonGlyphs.append(Json::Value(iterGlyphs[i])); } - if (iter.positioning() != SkTextBlob::kDefault_Positioning) { + if (iter.positioning() != SkTextBlobRunIterator::kDefault_Positioning) { run[SKDEBUGCANVAS_ATTRIBUTE_POSITIONS] = jsonPositions; } run[SKDEBUGCANVAS_ATTRIBUTE_GLYPHS] = jsonGlyphs; |