GrBitmapTextContext.h revision 972f9cd7a063d0544f8c919fd12b9a3adbd12b24
1c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com/*
2c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com * Copyright 2013 Google Inc.
3c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com *
4c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com * Use of this source code is governed by a BSD-style license that can be
5c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com * found in the LICENSE file.
6c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com */
7c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
8c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com#ifndef GrBitmapTextContext_DEFINED
9c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com#define GrBitmapTextContext_DEFINED
10c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
11c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com#include "GrTextContext.h"
12c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
13c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comclass GrTextStrike;
14c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
15c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com/*
16c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com * This class implements GrTextContext using standard bitmap fonts
17c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com */
18c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comclass GrBitmapTextContext : public GrTextContext {
19c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.compublic:
20cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    GrBitmapTextContext(GrContext*, const SkDeviceProperties&);
219f94b9104a02c5918720517de3ffd547f354900acommit-bot@chromium.org    virtual ~GrBitmapTextContext();
229f94b9104a02c5918720517de3ffd547f354900acommit-bot@chromium.org
234c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com    virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
24cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org                          SkScalar x, SkScalar y) SK_OVERRIDE;
254c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com    virtual void drawPosText(const GrPaint&, const SkPaint&,
26cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org                             const char text[], size_t byteLength,
27e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                             const SkScalar pos[], SkScalar constY,
28e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                             int scalarsPerPosition) SK_OVERRIDE;
29c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
30cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    virtual bool canDraw(const SkPaint& paint) SK_OVERRIDE;
314c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com
32c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comprivate:
33c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    GrTextStrike*          fStrike;
34c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
35cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    void init(const GrPaint&, const SkPaint&);
36972f9cd7a063d0544f8c919fd12b9a3adbd12b24commit-bot@chromium.org    void drawPackedGlyph(GrGlyph::PackedID, SkFixed left, SkFixed top, GrFontScaler*);
37c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    void flushGlyphs();                 // automatically called by destructor
38cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    void finish();
39c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
40c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    enum {
41c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kMinRequestedGlyphs      = 1,
42c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kDefaultRequestedGlyphs  = 64,
43c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kMinRequestedVerts       = kMinRequestedGlyphs * 4,
44c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kDefaultRequestedVerts   = kDefaultRequestedGlyphs * 4,
45c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    };
46c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
47c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    SkPoint*                fVertices;
48c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    int32_t                 fMaxVertices;
49c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    GrTexture*              fCurrTexture;
50c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    int                     fCurrVertex;
513ae0e6c2b213d45c370846a4d4182a6754ca493ecommit-bot@chromium.org    SkRect                  fVertexBounds;
52c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com};
53c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
54c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com#endif
55