Move strike cache Find*() to strike cache
BUG=skia:7515
Change-Id: Ic1580d4752d51a62df5427a28f843bc7b3181797
Reviewed-on: https://skia-review.googlesource.com/122020
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index f205080..71d0d13 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -1543,7 +1543,7 @@
return;
}
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
paint, props, this->scalerContextFlags(), fMatrix);
// The Blitter Choose needs to be live while using the blitter below.
@@ -1575,7 +1575,7 @@
SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(paint.getTextEncoding(),
paint.isDevKernText(),
true);
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
paint, props, this->scalerContextFlags(), nullptr);
const char* stop = text + byteLength;
@@ -1623,7 +1623,7 @@
return;
}
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
paint, props, this->scalerContextFlags(), fMatrix);
// The Blitter Choose needs to be live while using the blitter below.
diff --git a/src/core/SkGlyphCache.cpp b/src/core/SkGlyphCache.cpp
index 5327d1a..3475b60 100644
--- a/src/core/SkGlyphCache.cpp
+++ b/src/core/SkGlyphCache.cpp
@@ -9,7 +9,6 @@
#include "SkGraphics.h"
#include "SkMutex.h"
#include "SkOnce.h"
-#include "SkPaintPriv.h"
#include "SkPath.h"
#include "SkTemplates.h"
#include "SkTypeface.h"
@@ -387,38 +386,6 @@
SkDebugf("%s\n", msg.c_str());
}
-SkExclusiveStrikePtr SkGlyphCache::FindStrikeExclusive(const SkDescriptor& desc) {
- return SkStrikeCache::FindStrikeExclusive(desc);
-}
-
-SkExclusiveStrikePtr SkGlyphCache::FindOrCreateStrikeExclusive(
- const SkDescriptor& desc, const SkScalerContextEffects& effects, const SkTypeface& typeface)
-{
- auto cache = SkGlyphCache::FindStrikeExclusive(desc);
- if (cache == nullptr) {
- auto scaler = SkStrikeCache::CreateScalerContext(desc, effects, typeface);
- cache = SkStrikeCache::CreateStrikeExclusive(desc, std::move(scaler));
- }
- return cache;
-}
-
-SkExclusiveStrikePtr SkGlyphCache::FindOrCreateStrikeExclusive(
- const SkPaint& paint,
- const SkSurfaceProps* surfaceProps,
- SkScalerContextFlags scalerContextFlags,
- const SkMatrix* deviceMatrix)
-{
- SkAutoDescriptor ad;
- SkScalerContextEffects effects;
-
- auto desc = SkScalerContext::CreateDescriptorAndEffectsUsingPaint(
- paint, surfaceProps, scalerContextFlags, deviceMatrix, &ad, &effects);
-
- auto tf = SkPaintPriv::GetTypefaceOrDefault(paint);
-
- return FindOrCreateStrikeExclusive(*desc, effects, *tf);
-}
-
#ifdef SK_DEBUG
void SkGlyphCache::validate() const {
diff --git a/src/core/SkGlyphCache.h b/src/core/SkGlyphCache.h
index ca6ae8f..8d5098a 100644
--- a/src/core/SkGlyphCache.h
+++ b/src/core/SkGlyphCache.h
@@ -123,24 +123,6 @@
SkScalerContext* getScalerContext() const { return fScalerContext.get(); }
- static SkExclusiveStrikePtr FindStrikeExclusive(const SkDescriptor& desc);
-
- static SkExclusiveStrikePtr FindOrCreateStrikeExclusive(
- const SkDescriptor& desc,
- const SkScalerContextEffects& effects,
- const SkTypeface& typeface);
-
- static SkExclusiveStrikePtr FindOrCreateStrikeExclusive(
- const SkPaint& paint,
- const SkSurfaceProps* surfaceProps,
- SkScalerContextFlags scalerContextFlags,
- const SkMatrix* deviceMatrix);
-
- static SkExclusiveStrikePtr FindOrCreateStrikeExclusive(const SkPaint& paint) {
- return FindOrCreateStrikeExclusive(
- paint, nullptr, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
- }
-
#ifdef SK_DEBUG
void validate() const;
#else
@@ -244,11 +226,9 @@
SkAutoGlyphCacheNoGamma(const SkPaint& paint,
const SkSurfaceProps* surfaceProps,
const SkMatrix* matrix)
- : INHERITED(SkGlyphCache::FindOrCreateStrikeExclusive(
+ : SkExclusiveStrikePtr(SkStrikeCache::FindOrCreateStrikeExclusive(
paint, surfaceProps, SkScalerContextFlags::kNone, matrix)) {}
-private:
- using INHERITED = SkExclusiveStrikePtr;
};
#define SkAutoGlyphCacheNoGamma(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCacheNoGamma)
#endif
diff --git a/src/core/SkOverdrawCanvas.cpp b/src/core/SkOverdrawCanvas.cpp
index eee7d83..118b943 100644
--- a/src/core/SkOverdrawCanvas.cpp
+++ b/src/core/SkOverdrawCanvas.cpp
@@ -63,7 +63,7 @@
ProcessOneGlyphBounds processBounds(this);
SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
this->getProps(&props);
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
paint, &props, SkScalerContextFlags::kNone, &this->getTotalMatrix());
SkFindAndPlaceGlyph::ProcessText(paint.getTextEncoding(), (const char*) text, byteLength,
SkPoint::Make(x, y), SkMatrix(), paint.getTextAlign(),
@@ -76,7 +76,7 @@
ProcessOneGlyphBounds processBounds(this);
SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
this->getProps(&props);
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
paint, &props, SkScalerContextFlags::kNone, &this->getTotalMatrix());
SkFindAndPlaceGlyph::ProcessPosText(paint.getTextEncoding(), (const char*) text, byteLength,
SkPoint::Make(0, 0), SkMatrix(), (const SkScalar*) pos, 2,
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 3dc0af6..141b60b 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -430,7 +430,7 @@
return SkToInt(byteLength >> 1);
}
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(*this);
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*this);
const char* text = (const char*)textData;
const char* stop = text + byteLength;
@@ -487,7 +487,7 @@
return true;
}
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(*this);
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*this);
switch (this->getTextEncoding()) {
case SkPaint::kUTF8_TextEncoding: {
@@ -536,7 +536,7 @@
SkASSERT(textData != nullptr);
SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
*this, &props, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
for (int index = 0; index < count; index++) {
@@ -801,7 +801,7 @@
const SkPaint& paint = canon.getPaint();
SkScalar scale = canon.getScale();
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(paint);
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(paint);
SkScalar width = 0;
@@ -854,7 +854,7 @@
maxWidth /= scale;
}
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(paint);
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(paint);
GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(paint.getTextEncoding(),
paint.isDevKernText(),
@@ -924,7 +924,7 @@
{
auto typeface = SkPaintPriv::GetTypefaceOrDefault(paint);
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(*desc, effects, *typeface);
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*desc, effects, *typeface);
*metrics = cache->getFontMetrics();
}
@@ -959,7 +959,7 @@
const SkPaint& paint = canon.getPaint();
SkScalar scale = canon.getScale();
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(paint);
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(paint);
GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(paint.getTextEncoding(),
paint.isDevKernText(),
nullptr != bounds);
@@ -1741,7 +1741,7 @@
}
// SRGBTODO: Is this correct?
- fCache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ fCache = SkStrikeCache::FindOrCreateStrikeExclusive(
fPaint, nullptr,
SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
diff --git a/src/core/SkRemoteGlyphCache.cpp b/src/core/SkRemoteGlyphCache.cpp
index 9252589..d736223 100644
--- a/src/core/SkRemoteGlyphCache.cpp
+++ b/src/core/SkRemoteGlyphCache.cpp
@@ -326,7 +326,7 @@
auto typefaceID = SkTypefaceProxy::DownCast(runPaint.getTypeface())->remoteTypefaceID();
auto& diffs = fStrikeCacheDiff->findStrikeDifferences(*desc, typefaceID);
- auto cache = SkGlyphCache::FindStrikeExclusive(*desc);
+ auto cache = SkStrikeCache::FindStrikeExclusive(*desc);
bool isSubpixel = SkToBool(rec.fFlags & SkScalerContext::kSubpixelPositioning_Flag);
SkAxisAlignment axisAlignment = SkAxisAlignment::kNone_SkAxisAlignment;
if (it.positioning() == SkTextBlob::kHorizontal_Positioning) {
@@ -480,7 +480,7 @@
// TODO: implement effects handling.
SkScalerContextEffects effects;
- auto strike = SkGlyphCache::FindStrikeExclusive(*desc);
+ auto strike = SkStrikeCache::FindStrikeExclusive(*desc);
if (strike == nullptr) {
auto scaler = SkStrikeCache::CreateScalerContext(*desc, effects, *tf);
strike = SkStrikeCache::CreateStrikeExclusive(*desc, std::move(scaler), fontMetrics);
diff --git a/src/core/SkStrikeCache.cpp b/src/core/SkStrikeCache.cpp
index 8d0b832..f5ae5bc 100644
--- a/src/core/SkStrikeCache.cpp
+++ b/src/core/SkStrikeCache.cpp
@@ -17,6 +17,7 @@
#include "SkTraceMemoryDump.h"
#include "SkTypeface.h"
#include "SkTypefaceCache.h"
+#include "SkPaintPriv.h"
// Returns the shared globals
static SkStrikeCache& get_globals() {
@@ -378,4 +379,37 @@
}
return SkExclusiveStrikePtr(new SkGlyphCache(desc, move(scaler), fontMetrics));
+}
+
+SkExclusiveStrikePtr SkStrikeCache::FindOrCreateStrikeExclusive(
+ const SkDescriptor& desc, const SkScalerContextEffects& effects, const SkTypeface& typeface)
+{
+ auto cache = FindStrikeExclusive(desc);
+ if (cache == nullptr) {
+ auto scaler = CreateScalerContext(desc, effects, typeface);
+ cache = CreateStrikeExclusive(desc, move(scaler));
+ }
+ return cache;
+}
+
+SkExclusiveStrikePtr SkStrikeCache::FindOrCreateStrikeExclusive(
+ const SkPaint& paint,
+ const SkSurfaceProps* surfaceProps,
+ SkScalerContextFlags scalerContextFlags,
+ const SkMatrix* deviceMatrix)
+{
+ SkAutoDescriptor ad;
+ SkScalerContextEffects effects;
+
+ auto desc = SkScalerContext::CreateDescriptorAndEffectsUsingPaint(
+ paint, surfaceProps, scalerContextFlags, deviceMatrix, &ad, &effects);
+
+ auto tf = SkPaintPriv::GetTypefaceOrDefault(paint);
+
+ return FindOrCreateStrikeExclusive(*desc, effects, *tf);
+}
+
+SkExclusiveStrikePtr SkStrikeCache::FindOrCreateStrikeExclusive(const SkPaint& paint) {
+ return FindOrCreateStrikeExclusive(
+ paint, nullptr, kFakeGammaAndBoostContrast, nullptr);
}
\ No newline at end of file
diff --git a/src/core/SkStrikeCache.h b/src/core/SkStrikeCache.h
index 078adfe..a72e71f 100644
--- a/src/core/SkStrikeCache.h
+++ b/src/core/SkStrikeCache.h
@@ -46,14 +46,27 @@
static ExclusiveStrikePtr FindStrikeExclusive(const SkDescriptor&);
- static std::unique_ptr<SkScalerContext> CreateScalerContext(
- const SkDescriptor&, const SkScalerContextEffects&, const SkTypeface&);
-
static ExclusiveStrikePtr CreateStrikeExclusive(
const SkDescriptor& desc,
std::unique_ptr<SkScalerContext> scaler,
SkPaint::FontMetrics* maybeMetrics = nullptr);
+ static ExclusiveStrikePtr FindOrCreateStrikeExclusive(
+ const SkDescriptor& desc,
+ const SkScalerContextEffects& effects,
+ const SkTypeface& typeface);
+
+ static ExclusiveStrikePtr FindOrCreateStrikeExclusive(
+ const SkPaint& paint,
+ const SkSurfaceProps* surfaceProps,
+ SkScalerContextFlags scalerContextFlags,
+ const SkMatrix* deviceMatrix);
+
+ static ExclusiveStrikePtr FindOrCreateStrikeExclusive(const SkPaint& paint);
+
+ static std::unique_ptr<SkScalerContext> CreateScalerContext(
+ const SkDescriptor&, const SkScalerContextEffects&, const SkTypeface&);
+
static void PurgeAll();
static void Dump();
diff --git a/src/gpu/text/GrAtlasTextBlob.cpp b/src/gpu/text/GrAtlasTextBlob.cpp
index 73c8721..611abf7 100644
--- a/src/gpu/text/GrAtlasTextBlob.cpp
+++ b/src/gpu/text/GrAtlasTextBlob.cpp
@@ -71,7 +71,7 @@
run->fTypeface = SkPaintPriv::RefTypefaceOrDefault(skPaint);
run->fPathEffect = sk_ref_sp(effects.fPathEffect);
run->fMaskFilter = sk_ref_sp(effects.fMaskFilter);
- return SkGlyphCache::FindOrCreateStrikeExclusive(*desc->getDesc(), effects, *run->fTypeface);
+ return SkStrikeCache::FindOrCreateStrikeExclusive(*desc->getDesc(), effects, *run->fTypeface);
}
void GrAtlasTextBlob::appendGlyph(int runIndex,
diff --git a/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp b/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
index 92d6eb0..e2d4fe1 100644
--- a/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
+++ b/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
@@ -245,7 +245,7 @@
effects.fPathEffect = fRun->fPathEffect.get();
effects.fMaskFilter = fRun->fMaskFilter.get();
*fLazyCache =
- SkGlyphCache::FindOrCreateStrikeExclusive(*desc, effects, *fRun->fTypeface);
+ SkStrikeCache::FindOrCreateStrikeExclusive(*desc, effects, *fRun->fTypeface);
}
if (regenGlyphs) {
diff --git a/src/gpu/text/GrAtlasTextContext.cpp b/src/gpu/text/GrAtlasTextContext.cpp
index b0f5405..6be6b5b 100644
--- a/src/gpu/text/GrAtlasTextContext.cpp
+++ b/src/gpu/text/GrAtlasTextContext.cpp
@@ -500,7 +500,7 @@
SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(pathPaint.getTextEncoding(),
pathPaint.isDevKernText(),
true);
- auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
pathPaint, &props, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
const char* stop = text + byteLength;
@@ -703,7 +703,7 @@
{
auto origPaintCache =
- SkGlyphCache::FindOrCreateStrikeExclusive(*desc.getDesc(), effects, *typeface);
+ SkStrikeCache::FindOrCreateStrikeExclusive(*desc.getDesc(), effects, *typeface);
SkAutoKern autokern;
const char* stop = text + byteLength;
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 95864d9..ff14c41 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -1368,7 +1368,7 @@
scaledGlyphCachePaint.setTextScaleX(paint.getTextScaleX());
scaledGlyphCachePaint.setTextSkewX(paint.getTextSkewX());
scaledGlyphCachePaint.setTypeface(sk_ref_sp(typeface));
- auto scaledGlyphCache = SkGlyphCache::FindOrCreateStrikeExclusive(scaledGlyphCachePaint);
+ auto scaledGlyphCache = SkStrikeCache::FindOrCreateStrikeExclusive(scaledGlyphCachePaint);
SkTHashMap<SkPDFCanon::BitmapGlyphKey, SkPDFCanon::BitmapGlyph>* map =
&this->getCanon()->fBitmapGlyphImages;
for (PositionedGlyph positionedGlyph : fMissingGlyphs) {
diff --git a/src/pdf/SkPDFFont.cpp b/src/pdf/SkPDFFont.cpp
index c9230f0..11c4b58 100644
--- a/src/pdf/SkPDFFont.cpp
+++ b/src/pdf/SkPDFFont.cpp
@@ -38,7 +38,7 @@
}
tmpPaint.setTextSize((SkScalar)unitsPerEm);
const SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
- return SkGlyphCache::FindOrCreateStrikeExclusive(
+ return SkStrikeCache::FindOrCreateStrikeExclusive(
tmpPaint, &props, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
}
diff --git a/src/xps/SkXPSDevice.cpp b/src/xps/SkXPSDevice.cpp
index 2cfb545..856cafe 100644
--- a/src/xps/SkXPSDevice.cpp
+++ b/src/xps/SkXPSDevice.cpp
@@ -1876,7 +1876,7 @@
newTypefaceUse.fontData = fontData;
newTypefaceUse.xpsFont = xpsFontResource.release();
auto glyphCache =
- SkGlyphCache::FindOrCreateStrikeExclusive(
+ SkStrikeCache::FindOrCreateStrikeExclusive(
paint, &this->surfaceProps(),
SkScalerContextFlags::kNone, nullptr);
unsigned int glyphCount = glyphCache->getGlyphCount();
@@ -2063,7 +2063,7 @@
HRV(CreateTypefaceUse(paint, &typeface));
auto cache =
- SkGlyphCache::FindOrCreateStrikeExclusive(
+ SkStrikeCache::FindOrCreateStrikeExclusive(
paint, &this->surfaceProps(),
SkScalerContextFlags::kNone, nullptr);
@@ -2121,7 +2121,7 @@
HRV(CreateTypefaceUse(paint, &typeface));
auto cache =
- SkGlyphCache::FindOrCreateStrikeExclusive(
+ SkStrikeCache::FindOrCreateStrikeExclusive(
paint, &this->surfaceProps(),
SkScalerContextFlags::kNone, nullptr);