Index: src/core/SkPaint.cpp |
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp |
index d2ea8eeda09612835691c7093b6f561df05218ed..d3384a628d05dc421758816d893bbbb7800fe403 100644 |
--- a/src/core/SkPaint.cpp |
+++ b/src/core/SkPaint.cpp |
@@ -682,8 +682,8 @@ static const SkGlyph& sk_getAdvance_glyph_next(SkGlyphCache* cache, |
return cache->getGlyphIDAdvance(glyphID); |
} |
-SkMeasureCacheProc SkPaint::getMeasureCacheProc(bool needFullMetrics) const { |
- static const SkMeasureCacheProc gMeasureCacheProcs[] = { |
+SkPaint::GlyphCacheProc SkPaint::getGlyphCacheProc(bool needFullMetrics) const { |
+ static const GlyphCacheProc gGlyphCacheProcs[] = { |
sk_getMetrics_utf8_next, |
sk_getMetrics_utf16_next, |
sk_getMetrics_utf32_next, |
@@ -701,111 +701,8 @@ SkMeasureCacheProc SkPaint::getMeasureCacheProc(bool needFullMetrics) const { |
index += 4; |
} |
- SkASSERT(index < SK_ARRAY_COUNT(gMeasureCacheProcs)); |
- return gMeasureCacheProcs[index]; |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-static const SkGlyph& sk_getMetrics_utf8_00(SkGlyphCache* cache, |
- const char** text, SkFixed, SkFixed) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- return cache->getUnicharMetrics(SkUTF8_NextUnichar(text)); |
-} |
- |
-static const SkGlyph& sk_getMetrics_utf8_xy(SkGlyphCache* cache, |
- const char** text, SkFixed x, SkFixed y) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- return cache->getUnicharMetrics(SkUTF8_NextUnichar(text), x, y); |
-} |
- |
-static const SkGlyph& sk_getMetrics_utf16_00(SkGlyphCache* cache, |
- const char** text, SkFixed, SkFixed) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- return cache->getUnicharMetrics(SkUTF16_NextUnichar((const uint16_t**)text)); |
-} |
- |
-static const SkGlyph& sk_getMetrics_utf16_xy(SkGlyphCache* cache, |
- const char** text, SkFixed x, SkFixed y) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- return cache->getUnicharMetrics(SkUTF16_NextUnichar((const uint16_t**)text), |
- x, y); |
-} |
- |
-static const SkGlyph& sk_getMetrics_utf32_00(SkGlyphCache* cache, |
- const char** text, SkFixed, SkFixed) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- const int32_t* ptr = *(const int32_t**)text; |
- SkUnichar uni = *ptr++; |
- *text = (const char*)ptr; |
- return cache->getUnicharMetrics(uni); |
-} |
- |
-static const SkGlyph& sk_getMetrics_utf32_xy(SkGlyphCache* cache, |
- const char** text, SkFixed x, SkFixed y) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- const int32_t* ptr = *(const int32_t**)text; |
- SkUnichar uni = *ptr++; |
- *text = (const char*)ptr; |
- return cache->getUnicharMetrics(uni, x, y); |
-} |
- |
-static const SkGlyph& sk_getMetrics_glyph_00(SkGlyphCache* cache, |
- const char** text, SkFixed, SkFixed) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- const uint16_t* ptr = *(const uint16_t**)text; |
- unsigned glyphID = *ptr; |
- ptr += 1; |
- *text = (const char*)ptr; |
- return cache->getGlyphIDMetrics(glyphID); |
-} |
- |
-static const SkGlyph& sk_getMetrics_glyph_xy(SkGlyphCache* cache, |
- const char** text, SkFixed x, SkFixed y) { |
- SkASSERT(cache != nullptr); |
- SkASSERT(text != nullptr); |
- |
- const uint16_t* ptr = *(const uint16_t**)text; |
- unsigned glyphID = *ptr; |
- ptr += 1; |
- *text = (const char*)ptr; |
- return cache->getGlyphIDMetrics(glyphID, x, y); |
-} |
- |
-SkDrawCacheProc SkPaint::getDrawCacheProc() const { |
- static const SkDrawCacheProc gDrawCacheProcs[] = { |
- sk_getMetrics_utf8_00, |
- sk_getMetrics_utf16_00, |
- sk_getMetrics_utf32_00, |
- sk_getMetrics_glyph_00, |
- |
- sk_getMetrics_utf8_xy, |
- sk_getMetrics_utf16_xy, |
- sk_getMetrics_utf32_xy, |
- sk_getMetrics_glyph_xy |
- }; |
- |
- unsigned index = this->getTextEncoding(); |
- if (fBitfields.fFlags & kSubpixelText_Flag) { |
- index += 4; |
- } |
- |
- SkASSERT(index < SK_ARRAY_COUNT(gDrawCacheProcs)); |
- return gDrawCacheProcs[index]; |
+ SkASSERT(index < SK_ARRAY_COUNT(gGlyphCacheProcs)); |
+ return gGlyphCacheProcs[index]; |
} |
/////////////////////////////////////////////////////////////////////////////// |
@@ -900,7 +797,7 @@ SkScalar SkPaint::measure_text(SkGlyphCache* cache, |
return 0; |
} |
- SkMeasureCacheProc glyphCacheProc = this->getMeasureCacheProc(nullptr != bounds); |
+ GlyphCacheProc glyphCacheProc = this->getGlyphCacheProc(nullptr != bounds); |
int xyIndex; |
JoinBoundsProc joinBoundsProc; |
@@ -1025,7 +922,7 @@ size_t SkPaint::breakText(const void* textD, size_t length, SkScalar maxWidth, |
SkAutoGlyphCache autoCache(paint, nullptr, nullptr); |
SkGlyphCache* cache = autoCache.getCache(); |
- SkMeasureCacheProc glyphCacheProc = paint.getMeasureCacheProc(false); |
+ GlyphCacheProc glyphCacheProc = paint.getGlyphCacheProc(false); |
const int xyIndex = paint.isVerticalText() ? 1 : 0; |
// use 64bits for our accumulator, to avoid overflowing 16.16 |
Sk48Dot16 max = SkScalarToFixed(maxWidth); |
@@ -1143,8 +1040,7 @@ int SkPaint::getTextWidths(const void* textData, size_t byteLength, |
SkAutoGlyphCache autoCache(paint, nullptr, nullptr); |
SkGlyphCache* cache = autoCache.getCache(); |
- SkMeasureCacheProc glyphCacheProc; |
- glyphCacheProc = paint.getMeasureCacheProc(nullptr != bounds); |
+ GlyphCacheProc glyphCacheProc = paint.getGlyphCacheProc(nullptr != bounds); |
const char* text = (const char*)textData; |
const char* stop = text + byteLength; |
@@ -2397,7 +2293,7 @@ SkTextBaseIter::SkTextBaseIter(const char text[], size_t length, |
const SkPaint& paint, |
bool applyStrokeAndPathEffects) |
: fPaint(paint) { |
- fGlyphCacheProc = paint.getMeasureCacheProc(true); |
+ fGlyphCacheProc = paint.getGlyphCacheProc(true); |
fPaint.setLinearText(true); |
fPaint.setMaskFilter(nullptr); // don't want this affecting our path-cache lookup |