Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / gpu / GrDistanceFieldTextContext.h
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
13 class GrTextStrike;
14
15 /*
16  * This class implements GrTextContext using distance field fonts
17  */
18 class GrDistanceFieldTextContext : public GrTextContext {
19 public:
20     GrDistanceFieldTextContext(GrContext*, const SkDeviceProperties&);
21     virtual ~GrDistanceFieldTextContext();
22
23     virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
24                           SkScalar x, SkScalar y) SK_OVERRIDE;
25     virtual void drawPosText(const GrPaint&, const SkPaint&,
26                              const char text[], size_t byteLength,
27                              const SkScalar pos[], SkScalar constY,
28                              int scalarsPerPosition) SK_OVERRIDE;
29
30     virtual bool canDraw(const SkPaint& paint) SK_OVERRIDE;
31
32 private:
33     GrTextStrike*           fStrike;
34     SkScalar                fTextRatio;
35
36     void init(const GrPaint&, const SkPaint&);
37     void drawPackedGlyph(GrGlyph::PackedID, GrFixed left, GrFixed 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     SkPoint*                fVertices;
49     int32_t                 fMaxVertices;
50     GrTexture*              fCurrTexture;
51     int                     fCurrVertex;
52 };
53
54 #endif