flag to convert to SkTextEncoding
Bug: skia:
Change-Id: I9628bcabc5c6f902b79009e4f21badff3e8cca94
Reviewed-on: https://skia-review.googlesource.com/c/173980
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/src/atlastext/SkAtlasTextTarget.cpp b/src/atlastext/SkAtlasTextTarget.cpp
index a61d647..68b19ed 100644
--- a/src/atlastext/SkAtlasTextTarget.cpp
+++ b/src/atlastext/SkAtlasTextTarget.cpp
@@ -151,7 +151,7 @@
paint.setTypeface(font.refTypeface());
paint.setTextSize(font.size());
paint.setStyle(SkPaint::kFill_Style);
- paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ paint.setTextEncoding(kGlyphID_SkTextEncoding);
// The atlas text context does munging of the paint color. We store the client's color here
// and then overwrite the generated op's color when addDrawOp() is called.
diff --git a/src/core/SkFindAndPlaceGlyph.h b/src/core/SkFindAndPlaceGlyph.h
index 76fd9ba..8aa3da9 100644
--- a/src/core/SkFindAndPlaceGlyph.h
+++ b/src/core/SkFindAndPlaceGlyph.h
@@ -37,7 +37,7 @@
// This routine handles all of them using inline polymorphic variable (no heap allocation).
template<typename ProcessOneGlyph>
static void ProcessPosText(
- SkPaint::TextEncoding, const char text[], size_t byteLength,
+ SkTextEncoding, const char text[], size_t byteLength,
SkPoint offset, const SkMatrix& matrix, const SkScalar pos[], int scalarsPerPosition,
SkGlyphCache* cache, ProcessOneGlyph&& processOneGlyph);
@@ -205,15 +205,15 @@
};
static GlyphFinderInterface* getGlyphFinder(
- SkArenaAlloc* arena, SkPaint::TextEncoding encoding, SkGlyphCache* cache) {
+ SkArenaAlloc* arena, SkTextEncoding encoding, SkGlyphCache* cache) {
switch(encoding) {
- case SkPaint::kUTF8_TextEncoding:
+ case kUTF8_SkTextEncoding:
return arena->make<Utf8GlyphFinder>(cache);
- case SkPaint::kUTF16_TextEncoding:
+ case kUTF16_SkTextEncoding:
return arena->make<Utf16GlyphFinder>(cache);
- case SkPaint::kUTF32_TextEncoding:
+ case kUTF32_SkTextEncoding:
return arena->make<Utf32GlyphFinder>(cache);
- case SkPaint::kGlyphID_TextEncoding:
+ case kGlyphID_SkTextEncoding:
return arena->make<GlyphIdGlyphFinder>(cache);
}
SK_ABORT("Should not get here.");
@@ -428,7 +428,7 @@
template<typename ProcessOneGlyph>
inline void SkFindAndPlaceGlyph::ProcessPosText(
- SkPaint::TextEncoding textEncoding, const char text[], size_t byteLength,
+ SkTextEncoding textEncoding, const char text[], size_t byteLength,
SkPoint offset, const SkMatrix& matrix, const SkScalar pos[], int scalarsPerPosition,
SkGlyphCache* cache, ProcessOneGlyph&& processOneGlyph) {
@@ -436,7 +436,7 @@
uint32_t mtype = matrix.getType();
// Specialized code for handling the most common case for blink.
- if (textEncoding == SkPaint::kGlyphID_TextEncoding
+ if (textEncoding == kGlyphID_SkTextEncoding
&& axisAlignment == kX_SkAxisAlignment
&& cache->isSubpixel()
&& mtype <= SkMatrix::kTranslate_Mask)
diff --git a/src/core/SkGlyphRun.cpp b/src/core/SkGlyphRun.cpp
index 5415719..1e487e3 100644
--- a/src/core/SkGlyphRun.cpp
+++ b/src/core/SkGlyphRun.cpp
@@ -17,11 +17,11 @@
#include "SkUtils.h"
namespace {
-static SkTypeface::Encoding convert_encoding(SkPaint::TextEncoding encoding) {
+static SkTypeface::Encoding convert_encoding(SkTextEncoding encoding) {
switch (encoding) {
- case SkPaint::kUTF8_TextEncoding: return SkTypeface::kUTF8_Encoding;
- case SkPaint::kUTF16_TextEncoding: return SkTypeface::kUTF16_Encoding;
- case SkPaint::kUTF32_TextEncoding: return SkTypeface::kUTF32_Encoding;
+ case kUTF8_SkTextEncoding: return SkTypeface::kUTF8_Encoding;
+ case kUTF16_SkTextEncoding: return SkTypeface::kUTF16_Encoding;
+ case kUTF32_SkTextEncoding: return SkTypeface::kUTF32_Encoding;
default: return SkTypeface::kUTF32_Encoding;
}
}
@@ -309,8 +309,8 @@
SkSpan<const SkGlyphID> SkGlyphRunBuilder::textToGlyphIDs(
const SkPaint& paint, const void* bytes, size_t byteLength) {
- auto encoding = paint.getTextEncoding();
- if (encoding != SkPaint::kGlyphID_TextEncoding) {
+ SkTextEncoding encoding = (SkTextEncoding)paint.getTextEncoding();
+ if (encoding != kGlyphID_SkTextEncoding) {
auto tfEncoding = convert_encoding(encoding);
int utfSize = SkUTFN_CountUnichars(tfEncoding, bytes, byteLength);
if (utfSize > 0) {
diff --git a/src/core/SkOverdrawCanvas.cpp b/src/core/SkOverdrawCanvas.cpp
index 9c1f38f..0d3596e 100644
--- a/src/core/SkOverdrawCanvas.cpp
+++ b/src/core/SkOverdrawCanvas.cpp
@@ -75,7 +75,8 @@
auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
SkFont::LEGACY_ExtractFromPaint(paint), paint, props,
SkScalerContextFlags::kNone, this->getTotalMatrix());
- SkFindAndPlaceGlyph::ProcessPosText(paint.getTextEncoding(), (const char*) text, byteLength,
+ SkFindAndPlaceGlyph::ProcessPosText((SkTextEncoding)paint.getTextEncoding(),
+ (const char*)text, byteLength,
SkPoint::Make(0, 0), SkMatrix(), (const SkScalar*) pos, 2,
cache.get(), processBounds);
}
@@ -109,17 +110,17 @@
const SkPaint& paint) {
const char* stop = (const char*)text + byteLength;
CountTextProc proc = nullptr;
- switch (paint.getTextEncoding()) {
- case SkPaint::kUTF8_TextEncoding:
+ switch ((SkTextEncoding)paint.getTextEncoding()) {
+ case kUTF8_SkTextEncoding:
proc = count_utf8;
break;
- case SkPaint::kUTF16_TextEncoding:
+ case kUTF16_SkTextEncoding:
proc = count_utf16;
break;
- case SkPaint::kUTF32_TextEncoding:
+ case kUTF32_SkTextEncoding:
proc = return_4;
break;
- case SkPaint::kGlyphID_TextEncoding:
+ case kGlyphID_SkTextEncoding:
proc = return_2;
break;
}
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index e7ed230..2b39c38 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -58,7 +58,7 @@
fBitfields.fCapType = kDefault_Cap;
fBitfields.fJoinType = kDefault_Join;
fBitfields.fStyle = kFill_Style;
- fBitfields.fTextEncoding = kUTF8_TextEncoding;
+ fBitfields.fTextEncoding = static_cast<unsigned>(kUTF8_SkTextEncoding);
fBitfields.fHinting = static_cast<unsigned>(SkPaintDefaults_Hinting);
}
@@ -326,9 +326,9 @@
fTextSkewX = skewX;
}
-void SkPaint::setTextEncoding(TextEncoding encoding) {
- if ((unsigned)encoding <= kGlyphID_TextEncoding) {
- fBitfields.fTextEncoding = encoding;
+void SkPaint::setTextEncoding(SkTextEncoding encoding) {
+ if ((unsigned)encoding <= (unsigned)kGlyphID_SkTextEncoding) {
+ fBitfields.fTextEncoding = (unsigned)encoding;
} else {
#ifdef SK_REPORT_API_RANGE_CHECK
SkDebugf("SkPaint::setTextEncoding(%d) out of range\n", encoding);
@@ -445,7 +445,7 @@
buffer.writeUInt(pack_paint_flags(paint.getFlags(), static_cast<unsigned>(paint.getHinting()),
paint.getFilterQuality(), flatFlags));
buffer.writeUInt(pack_4(paint.getStrokeCap(), paint.getStrokeJoin(),
- (paint.getStyle() << 4) | paint.getTextEncoding(),
+ (paint.getStyle() << 4) | (unsigned)paint.getTextEncoding(),
paint.fBlendMode));
buffer.writeTypeface(tf);
@@ -483,7 +483,7 @@
paint->setStrokeCap(safe.checkLE((tmp >> 24) & 0xFF, SkPaint::kLast_Cap));
paint->setStrokeJoin(safe.checkLE((tmp >> 16) & 0xFF, SkPaint::kLast_Join));
paint->setStyle(safe.checkLE((tmp >> 12) & 0xF, SkPaint::kStrokeAndFill_Style));
- paint->setTextEncoding(safe.checkLE((tmp >> 8) & 0xF, SkPaint::kGlyphID_TextEncoding));
+ paint->setTextEncoding(safe.checkLE((tmp >> 8) & 0xF, kGlyphID_SkTextEncoding));
paint->setBlendMode(safe.checkLE(tmp & 0xFF, SkBlendMode::kLastMode));
if (flatFlags & kHasTypeface_FlatFlag) {
diff --git a/src/core/SkPaintPriv.cpp b/src/core/SkPaintPriv.cpp
index 8718cf1..12e49bb 100644
--- a/src/core/SkPaintPriv.cpp
+++ b/src/core/SkPaintPriv.cpp
@@ -90,12 +90,12 @@
|| !p.getShader() || !as_SB(p.getShader())->isConstant();
}
-int SkPaintPriv::ValidCountText(const void* text, size_t length, SkPaint::TextEncoding encoding) {
+int SkPaintPriv::ValidCountText(const void* text, size_t length, SkTextEncoding encoding) {
switch (encoding) {
- case SkPaint::kUTF8_TextEncoding: return SkUTF::CountUTF8((const char*)text, length);
- case SkPaint::kUTF16_TextEncoding: return SkUTF::CountUTF16((const uint16_t*)text, length);
- case SkPaint::kUTF32_TextEncoding: return SkUTF::CountUTF32((const int32_t*)text, length);
- case SkPaint::kGlyphID_TextEncoding:
+ case kUTF8_SkTextEncoding: return SkUTF::CountUTF8((const char*)text, length);
+ case kUTF16_SkTextEncoding: return SkUTF::CountUTF16((const uint16_t*)text, length);
+ case kUTF32_SkTextEncoding: return SkUTF::CountUTF32((const int32_t*)text, length);
+ case kGlyphID_SkTextEncoding:
if (!SkIsAlign2(intptr_t(text)) || !SkIsAlign2(length)) {
return -1;
}
diff --git a/src/core/SkPaintPriv.h b/src/core/SkPaintPriv.h
index 9181e35..d3a0c35 100644
--- a/src/core/SkPaintPriv.h
+++ b/src/core/SkPaintPriv.h
@@ -69,7 +69,7 @@
static bool ShouldDither(const SkPaint&, SkColorType);
// returns -1 if buffer is invalid for specified encoding
- static int ValidCountText(const void* text, size_t length, SkPaint::TextEncoding);
+ static int ValidCountText(const void* text, size_t length, SkTextEncoding);
static SkTypeface* GetTypefaceOrDefault(const SkPaint& paint) {
return paint.getTypeface() ? paint.getTypeface() : SkTypeface::GetDefaultTypeface();
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp
index 260ea90..c204b5d 100644
--- a/src/core/SkPicturePlayback.cpp
+++ b/src/core/SkPicturePlayback.cpp
@@ -77,7 +77,8 @@
if (fByteLength == 0) {
fCount = 0;
} else {
- fCount = SkPaintPriv::ValidCountText(fText, fByteLength, paint->getTextEncoding());
+ fCount = SkPaintPriv::ValidCountText(fText, fByteLength,
+ (SkTextEncoding)paint->getTextEncoding());
reader->validate(fCount > 0);
}
}
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp
index eadb07c..4fa9f69 100644
--- a/src/core/SkTextBlob.cpp
+++ b/src/core/SkTextBlob.cpp
@@ -31,7 +31,7 @@
, fFlags(paint.getFlags() & kFlagsMask) { }
void SkRunFont::applyToPaint(SkPaint* paint) const {
- paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ paint->setTextEncoding(kGlyphID_SkTextEncoding);
paint->setTypeface(fTypeface);
paint->setTextSize(fSize);
paint->setTextScaleX(fScaleX);
@@ -478,7 +478,9 @@
SkTextBlob::GlyphPositioning positioning,
int count, int textSize, SkPoint offset,
const SkRect* bounds) {
- if (count <= 0 || textSize < 0 || font.getTextEncoding() != SkPaint::kGlyphID_TextEncoding) {
+ if (count <= 0 || textSize < 0 ||
+ (SkTextEncoding)font.getTextEncoding() != kGlyphID_SkTextEncoding)
+ {
fCurrentRunBuffer = { nullptr, nullptr, nullptr, nullptr };
return;
}
@@ -530,7 +532,7 @@
const SkRect* bounds) {
SkPaint legacyPaint;
font.LEGACY_applyToPaint(&legacyPaint);
- legacyPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ legacyPaint.setTextEncoding(kGlyphID_SkTextEncoding);
return this->allocRunText(legacyPaint, count, x, y, 0, SkString(), bounds);
}
@@ -540,7 +542,7 @@
const SkRect* bounds) {
SkPaint legacyPaint;
font.LEGACY_applyToPaint(&legacyPaint);
- legacyPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ legacyPaint.setTextEncoding(kGlyphID_SkTextEncoding);
return this->allocRunTextPosH(legacyPaint, count, y, 0, SkString(), bounds);
}
@@ -549,7 +551,7 @@
const SkRect* bounds) {
SkPaint legacyPaint;
font.LEGACY_applyToPaint(&legacyPaint);
- legacyPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ legacyPaint.setTextEncoding(kGlyphID_SkTextEncoding);
return this->allocRunTextPos(legacyPaint, count, 0, SkString(), bounds);
}
@@ -756,7 +758,7 @@
}
sk_sp<SkTextBlob> SkTextBlob::MakeFromText(const void* text, size_t byteLength, const SkFont& font,
- SkPaint::TextEncoding encoding) {
+ SkTextEncoding encoding) {
SkPaint legacyPaint;
font.LEGACY_applyToPaint(&legacyPaint);
legacyPaint.setTextEncoding(encoding);
diff --git a/src/core/SkTextBlobPriv.h b/src/core/SkTextBlobPriv.h
index 149e652..582c301 100644
--- a/src/core/SkTextBlobPriv.h
+++ b/src/core/SkTextBlobPriv.h
@@ -237,7 +237,7 @@
, fMiterLimit{basePaint.fMiterLimit}
, fBlendMode{basePaint.fBlendMode}
, fBitfieldsUInt{(basePaint.fBitfieldsUInt & ~SkRunFont::kFlagsMask) | runFont.fFlags} {
- fBitfields.fTextEncoding = kGlyphID_TextEncoding;
+ fBitfields.fTextEncoding = (unsigned)kGlyphID_SkTextEncoding;
fBitfields.fHinting = runFont.fHinting;
}
diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp
index ce22a66..c9c60cc 100644
--- a/src/effects/SkLayerDrawLooper.cpp
+++ b/src/effects/SkLayerDrawLooper.cpp
@@ -79,7 +79,7 @@
sk_srgb_singleton());
BitFlags bits = info.fPaintBits;
- SkPaint::TextEncoding encoding = dst->getTextEncoding();
+ SkTextEncoding encoding = (SkTextEncoding)dst->getTextEncoding();
if (0 == bits) {
return;
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 41503af..d5fff5d 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -1033,9 +1033,8 @@
void SkPDFDevice::drawGlyphRunAsPath(const SkGlyphRun& glyphRun, SkPoint offset) {
SkPaint paint{glyphRun.paint()};
- paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ paint.setTextEncoding(kGlyphID_SkTextEncoding);
SkPath path;
- SkASSERT(paint.getTextEncoding() == SkPaint::kGlyphID_TextEncoding);
paint.getPosTextPath(glyphRun.glyphsIDs().data(),
glyphRun.glyphsIDs().size() * sizeof(SkGlyphID),
@@ -1047,7 +1046,7 @@
SkPaint transparent;
transparent.setTypeface(paint.getTypeface() ? paint.refTypeface()
: SkTypeface::MakeDefault());
- transparent.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ transparent.setTextEncoding(kGlyphID_SkTextEncoding);
transparent.setColor(SK_ColorTRANSPARENT);
transparent.setTextSize(paint.getTextSize());
transparent.setTextScaleX(paint.getTextScaleX());
@@ -1087,7 +1086,7 @@
const SkGlyphID* glyphs = glyphRun.glyphsIDs().data();
uint32_t glyphCount = SkToU32(glyphRun.glyphsIDs().size());
SkPaint srcPaint{glyphRun.paint()};
- srcPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ srcPaint.setTextEncoding(kGlyphID_SkTextEncoding);
if (!glyphCount || !glyphs || srcPaint.getTextSize() <= 0 || this->hasEmptyClip()) {
return;
diff --git a/src/ports/SkFontMgr_android.cpp b/src/ports/SkFontMgr_android.cpp
index 6e3425e..b6cb6c4 100644
--- a/src/ports/SkFontMgr_android.cpp
+++ b/src/ports/SkFontMgr_android.cpp
@@ -399,7 +399,7 @@
SkPaint paint;
paint.setTypeface(face);
- paint.setTextEncoding(SkPaint::kUTF32_TextEncoding);
+ paint.setTextEncoding(kUTF32_SkTextEncoding);
uint16_t glyphID;
paint.textToGlyphs(&character, sizeof(character), &glyphID);
diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp
index 074493c..4ff6c6e 100644
--- a/src/utils/SkLua.cpp
+++ b/src/utils/SkLua.cpp
@@ -869,7 +869,7 @@
}
static int lpaint_getTextEncoding(lua_State* L) {
- SkLua(L).pushU32(get_obj<SkPaint>(L, 1)->getTextEncoding());
+ SkLua(L).pushU32((unsigned)get_obj<SkPaint>(L, 1)->getTextEncoding());
return 1;
}
diff --git a/src/utils/SkLuaCanvas.cpp b/src/utils/SkLuaCanvas.cpp
index a9b3c0e..7f279ca 100644
--- a/src/utils/SkLuaCanvas.cpp
+++ b/src/utils/SkLuaCanvas.cpp
@@ -37,7 +37,12 @@
lua_settop(L, -1);
}
- void pushEncodedText(SkPaint::TextEncoding, const void*, size_t);
+#ifdef SK_SUPPORT_LEGACY_TEXTENCODINGENUM
+ void pushEncodedText(SkPaint::TextEncoding enc, const void* text, size_t length) {
+ this->pushEncodedText((SkTextEncoding)enc, text, length);
+ }
+#endif
+ void pushEncodedText(SkTextEncoding, const void*, size_t);
private:
typedef SkLua INHERITED;
@@ -48,20 +53,19 @@
///////////////////////////////////////////////////////////////////////////////
-void AutoCallLua::pushEncodedText(SkPaint::TextEncoding enc, const void* text,
- size_t length) {
+void AutoCallLua::pushEncodedText(SkTextEncoding enc, const void* text, size_t length) {
switch (enc) {
- case SkPaint::kUTF8_TextEncoding:
+ case kUTF8_SkTextEncoding:
this->pushString((const char*)text, length, "text");
break;
- case SkPaint::kUTF16_TextEncoding:
+ case kUTF16_SkTextEncoding:
this->pushString(SkStringFromUTF16((const uint16_t*)text, length), "text");
break;
- case SkPaint::kGlyphID_TextEncoding:
+ case kGlyphID_SkTextEncoding:
this->pushArrayU16((const uint16_t*)text, SkToInt(length >> 1),
"glyphs");
break;
- case SkPaint::kUTF32_TextEncoding:
+ case kUTF32_SkTextEncoding:
break;
}
}
diff --git a/src/utils/SkTextUtils.cpp b/src/utils/SkTextUtils.cpp
index cc1b48e..f33058e 100644
--- a/src/utils/SkTextUtils.cpp
+++ b/src/utils/SkTextUtils.cpp
@@ -18,11 +18,11 @@
SkAutoSTArray<32, uint16_t> glyphStorage;
const uint16_t* glyphs;
- if (paint.getTextEncoding() != SkPaint::kGlyphID_TextEncoding) {
+ if ((SkTextEncoding)paint.getTextEncoding() != kGlyphID_SkTextEncoding) {
glyphStorage.reset(count);
paint.textToGlyphs(text, size, glyphStorage.get());
glyphs = glyphStorage.get();
- paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+ paint.setTextEncoding(kGlyphID_SkTextEncoding);
} else {
glyphs = static_cast<const uint16_t*>(text);
}
diff --git a/src/xps/SkXPSDevice.cpp b/src/xps/SkXPSDevice.cpp
index b067c4f..63e7ca6 100644
--- a/src/xps/SkXPSDevice.cpp
+++ b/src/xps/SkXPSDevice.cpp
@@ -1975,11 +1975,11 @@
return S_OK;
}
-static int num_glyph_guess(SkPaint::TextEncoding encoding, const void* text, size_t byteLength) {
- static_assert((int)SkTypeface::kUTF8_Encoding == (int)SkPaint::kUTF8_TextEncoding, "");
- static_assert((int)SkTypeface::kUTF16_Encoding == (int)SkPaint::kUTF16_TextEncoding, "");
- static_assert((int)SkTypeface::kUTF32_Encoding == (int)SkPaint::kUTF32_TextEncoding, "");
- if (encoding == SkPaint::kGlyphID_TextEncoding) {
+static int num_glyph_guess(SkTextEncoding encoding, const void* text, size_t byteLength) {
+ static_assert((int)SkTypeface::kUTF8_Encoding == (int)kUTF8_SkTextEncoding, "");
+ static_assert((int)SkTypeface::kUTF16_Encoding == (int)kUTF16_SkTextEncoding, "");
+ static_assert((int)SkTypeface::kUTF32_Encoding == (int)kUTF32_SkTextEncoding, "");
+ if (encoding == kGlyphID_SkTextEncoding) {
return SkToInt(byteLength / 2);
}
return SkUTFN_CountUnichars((SkTypeface::Encoding)encoding, text, byteLength);