GrDistanceFieldTextContext.h revision ddf2bfb190b2760ef6d28efe2cdc16c68287553d
1/* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#ifndef GrDistanceFieldTextContext_DEFINED 9#define GrDistanceFieldTextContext_DEFINED 10 11#include "GrTextContext.h" 12 13class GrTextStrike; 14 15/* 16 * This class implements GrTextContext using distance field fonts 17 */ 18class GrDistanceFieldTextContext : public GrTextContext { 19public: 20 virtual void drawText(const char text[], size_t byteLength, SkScalar x, SkScalar y) SK_OVERRIDE; 21 virtual void drawPosText(const char text[], size_t byteLength, 22 const SkScalar pos[], SkScalar constY, 23 int scalarsPerPosition) SK_OVERRIDE; 24 25 static bool CanDraw(const SkPaint& paint, const SkMatrix& ctm); 26 27private: 28 GrDistanceFieldTextContext(GrContext*, const GrPaint&, const SkPaint&, 29 const SkDeviceProperties&); 30 virtual ~GrDistanceFieldTextContext(); 31 friend class GrTTextContextManager<GrDistanceFieldTextContext>; 32 33 GrTextStrike* fStrike; 34 SkScalar fTextRatio; 35 36 void drawPackedGlyph(GrGlyph::PackedID, GrFixed left, GrFixed top, GrFontScaler*); 37 void flushGlyphs(); // automatically called by destructor 38 39 enum { 40 kMinRequestedGlyphs = 1, 41 kDefaultRequestedGlyphs = 64, 42 kMinRequestedVerts = kMinRequestedGlyphs * 4, 43 kDefaultRequestedVerts = kDefaultRequestedGlyphs * 4, 44 }; 45 46 SkPoint* fVertices; 47 int32_t fMaxVertices; 48 GrTexture* fCurrTexture; 49 int fCurrVertex; 50}; 51 52#endif 53