• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 GrBitmapTextContext_DEFINED
9 #define GrBitmapTextContext_DEFINED
10 
11 #include "GrTextContext.h"
12 
13 class GrTextStrike;
14 class GrAtlasMgr;
15 
16 /*
17  * This class implements GrTextContext using standard bitmap fonts
18  */
19 class GrBitmapTextContext : public GrTextContext {
20 public:
21     GrBitmapTextContext(GrContext*, const SkDeviceProperties&);
22     virtual ~GrBitmapTextContext();
23 
24     virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
25                           SkScalar x, SkScalar y) SK_OVERRIDE;
26     virtual void drawPosText(const GrPaint&, const SkPaint&,
27                              const char text[], size_t byteLength,
28                              const SkScalar pos[], SkScalar constY,
29                              int scalarsPerPosition) SK_OVERRIDE;
30 
31     virtual bool canDraw(const SkPaint& paint) SK_OVERRIDE;
32 
33 private:
34     GrTextStrike*          fStrike;
35 
36     void init(const GrPaint&, const SkPaint&);
37     void drawPackedGlyph(GrGlyph::PackedID, SkFixed left, SkFixed top, GrFontScaler*);
38     void flushGlyphs();                 // automatically called by destructor
39     void finish();
40 
41     enum {
42         kMinRequestedGlyphs      = 1,
43         kDefaultRequestedGlyphs  = 64,
44         kMinRequestedVerts       = kMinRequestedGlyphs * 4,
45         kDefaultRequestedVerts   = kDefaultRequestedGlyphs * 4,
46     };
47 
48     void*                       fVertices;
49     int32_t                     fMaxVertices;
50     GrTexture*                  fCurrTexture;
51     SkAutoTUnref<GrEffectRef>   fCachedEffect;
52     uint32_t                    fEffectTextureGenID;
53     int                         fCurrVertex;
54     SkRect                      fVertexBounds;
55 };
56 
57 #endif
58