| /* |
| * Copyright 2010 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrTextContext_DEFINED |
| #define GrTextContext_DEFINED |
| |
| #include "GrGlyph.h" |
| #include "GrPaint.h" |
| #include "SkDeviceProperties.h" |
| |
| #include "SkPostConfig.h" |
| |
| class GrContext; |
| class GrDrawTarget; |
| class GrFontScaler; |
| |
| /* |
| * This class wraps the state for a single text render |
| */ |
| class GrTextContext { |
| public: |
| virtual ~GrTextContext() {} |
| virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength, |
| SkScalar x, SkScalar y) = 0; |
| virtual void drawPosText(const GrPaint&, const SkPaint&, |
| const char text[], size_t byteLength, |
| const SkScalar pos[], SkScalar constY, |
| int scalarsPerPosition) = 0; |
| |
| virtual bool canDraw(const SkPaint& paint) = 0; |
| |
| protected: |
| GrTextContext(GrContext*, const SkDeviceProperties&); |
| |
| static GrFontScaler* GetGrFontScaler(SkGlyphCache* cache); |
| static void MeasureText(SkGlyphCache* cache, SkDrawCacheProc glyphCacheProc, |
| const char text[], size_t byteLength, SkVector* stopVector); |
| |
| void init(const GrPaint&, const SkPaint&); |
| void finish() { fDrawTarget = NULL; } |
| |
| GrContext* fContext; |
| SkDeviceProperties fDeviceProperties; |
| |
| GrDrawTarget* fDrawTarget; |
| SkIRect fClipRect; |
| GrPaint fPaint; |
| SkPaint fSkPaint; |
| }; |
| |
| #endif |