Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Unified Diff: src/gpu/text/GrBatchFontCache.h

Issue 1985163002: Remove GrFontScaler class (Closed) Base URL: https://chromium.googlesource.com/skia.git@rmkey
Patch Set: remove comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/text/GrBatchFontCache.h
diff --git a/src/gpu/text/GrBatchFontCache.h b/src/gpu/text/GrBatchFontCache.h
index 442988519328aca8e8189810a168d6d33d3d914e..42612fe8b67b0d0caea9eed3445ccb6683a15dcf 100644
--- a/src/gpu/text/GrBatchFontCache.h
+++ b/src/gpu/text/GrBatchFontCache.h
@@ -9,9 +9,8 @@
#define GrBatchFontCache_DEFINED
#include "GrBatchAtlas.h"
-#include "GrFontScaler.h"
#include "GrGlyph.h"
-#include "SkGlyph.h"
+#include "SkGlyphCache.h"
#include "SkTDynamicHash.h"
#include "SkVarAlloc.h"
@@ -20,9 +19,9 @@ class GrGpu;
/**
* The GrBatchTextStrike manages a pool of CPU backing memory for GrGlyphs. This backing memory
- * is indexed by a PackedID and GrFontScaler. The GrFontScaler is what actually creates the mask.
- * The GrBatchTextStrike may outlive the generating GrFontScaler. However, it retains a copy
- * of it's SkDescriptor as a key to access (or regenerate) the GrFontScaler. GrBatchTextStrikes are
+ * is indexed by a PackedID and SkGlyphCache. The SkGlyphCache is what actually creates the mask.
+ * The GrBatchTextStrike may outlive the generating SkGlyphCache. However, it retains a copy
+ * of it's SkDescriptor as a key to access (or regenerate) the SkGlyphCache. GrBatchTextStrikes are
* created by and owned by a GrBatchFontCache.
*/
class GrBatchTextStrike : public SkNVRefCnt<GrBatchTextStrike> {
@@ -32,10 +31,10 @@ public:
~GrBatchTextStrike();
inline GrGlyph* getGlyph(const SkGlyph& skGlyph, GrGlyph::PackedID packed,
- GrFontScaler* scaler) {
+ SkGlyphCache* cache) {
GrGlyph* glyph = fCache.find(packed);
if (nullptr == glyph) {
- glyph = this->generateGlyph(skGlyph, packed, scaler);
+ glyph = this->generateGlyph(skGlyph, packed, cache);
}
return glyph;
}
@@ -46,14 +45,14 @@ public:
// skbug:4143 crbug:510931
inline GrGlyph* getGlyph(GrGlyph::PackedID packed,
GrMaskFormat expectedMaskFormat,
- GrFontScaler* scaler) {
+ SkGlyphCache* cache) {
GrGlyph* glyph = fCache.find(packed);
if (nullptr == glyph) {
// We could return this to the caller, but in practice it adds code complexity for
// potentially little benefit(ie, if the glyph is not in our font cache, then its not
// in the atlas and we're going to be doing a texture upload anyways).
- const SkGlyph& skGlyph = scaler->grToSkGlyph(packed);
- glyph = this->generateGlyph(skGlyph, packed, scaler);
+ const SkGlyph& skGlyph = GrToSkGlyph(cache, packed);
+ glyph = this->generateGlyph(skGlyph, packed, cache);
glyph->fMaskFormat = expectedMaskFormat;
}
return glyph;
@@ -64,7 +63,7 @@ public:
// happen.
// TODO we can handle some of these cases if we really want to, but the long term solution is to
// get the actual glyph image itself when we get the glyph metrics.
- bool addGlyphToAtlas(GrDrawBatch::Target*, GrGlyph*, GrFontScaler*,
+ bool addGlyphToAtlas(GrDrawBatch::Target*, GrGlyph*, SkGlyphCache*,
GrMaskFormat expectedMaskFormat);
// testing
@@ -91,13 +90,19 @@ private:
int fAtlasedGlyphs;
bool fIsAbandoned;
- GrGlyph* generateGlyph(const SkGlyph&, GrGlyph::PackedID, GrFontScaler*);
+ static const SkGlyph& GrToSkGlyph(SkGlyphCache* cache, GrGlyph::PackedID id) {
+ return cache->getGlyphIDMetrics(GrGlyph::UnpackID(id),
+ GrGlyph::UnpackFixedX(id),
+ GrGlyph::UnpackFixedY(id));
+ }
+
+ GrGlyph* generateGlyph(const SkGlyph&, GrGlyph::PackedID, SkGlyphCache*);
friend class GrBatchFontCache;
};
/*
- * GrBatchFontCache manages strikes which are indexed by a GrFontScaler. These strikes can then be
+ * GrBatchFontCache manages strikes which are indexed by a SkGlyphCache. These strikes can then be
* used to individual Glyph Masks. The GrBatchFontCache also manages GrBatchAtlases, though this is
* more or less transparent to the client(aside from atlasGeneration, described below).
* Note - we used to initialize the backing atlas for the GrBatchFontCache at initialization time.
@@ -112,10 +117,10 @@ public:
// another client of the cache may cause the strike to be purged while it is still reffed.
// Therefore, the caller must check GrBatchTextStrike::isAbandoned() if there are other
// interactions with the cache since the strike was received.
- inline GrBatchTextStrike* getStrike(GrFontScaler* scaler) {
- GrBatchTextStrike* strike = fCache.find(scaler->getKey());
+ inline GrBatchTextStrike* getStrike(const SkGlyphCache* cache) {
+ GrBatchTextStrike* strike = fCache.find(cache->getDescriptor());
if (nullptr == strike) {
- strike = this->generateStrike(scaler);
+ strike = this->generateStrike(cache);
}
return strike;
}
@@ -207,8 +212,8 @@ private:
bool initAtlas(GrMaskFormat);
- GrBatchTextStrike* generateStrike(GrFontScaler* scaler) {
- GrBatchTextStrike* strike = new GrBatchTextStrike(this, scaler->getKey());
+ GrBatchTextStrike* generateStrike(const SkGlyphCache* cache) {
+ GrBatchTextStrike* strike = new GrBatchTextStrike(this, cache->getDescriptor());
fCache.add(strike);
return strike;
}

Powered by Google App Engine
This is Rietveld 408576698