Change GrTextContext fallbacks to be a linked list chain.
Preliminary work for getting color emoji working with
distance field text.
BUG=skia:2887
Review URL: https://codereview.chromium.org/650273003
diff --git a/src/gpu/GrBitmapTextContext.h b/src/gpu/GrBitmapTextContext.h
index a9805cb..7a93820 100644
--- a/src/gpu/GrBitmapTextContext.h
+++ b/src/gpu/GrBitmapTextContext.h
@@ -18,18 +18,10 @@
*/
class GrBitmapTextContext : public GrTextContext {
public:
- GrBitmapTextContext(GrContext*, const SkDeviceProperties&);
+ static GrBitmapTextContext* Create(GrContext*, const SkDeviceProperties&);
+
virtual ~GrBitmapTextContext();
- virtual bool canDraw(const SkPaint& paint) SK_OVERRIDE;
-
- virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
- SkScalar x, SkScalar y) SK_OVERRIDE;
- virtual void drawPosText(const GrPaint&, const SkPaint&,
- const char text[], size_t byteLength,
- const SkScalar pos[], int scalarsPerPosition,
- const SkPoint& offset) SK_OVERRIDE;
-
private:
enum {
kMinRequestedGlyphs = 1,
@@ -49,6 +41,17 @@
// Used to check whether fCachedEffect is still valid.
uint32_t fEffectTextureUniqueID;
+ GrBitmapTextContext(GrContext*, const SkDeviceProperties&);
+
+ virtual bool canDraw(const SkPaint& paint) SK_OVERRIDE;
+
+ virtual void onDrawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
+ SkScalar x, SkScalar y) SK_OVERRIDE;
+ virtual void onDrawPosText(const GrPaint&, const SkPaint&,
+ const char text[], size_t byteLength,
+ const SkScalar pos[], int scalarsPerPosition,
+ const SkPoint& offset) SK_OVERRIDE;
+
void init(const GrPaint&, const SkPaint&);
void appendGlyph(GrGlyph::PackedID, SkFixed left, SkFixed top, GrFontScaler*);
void flush(); // automatically called by destructor