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;
147801faaab9bf7dd0ac67e859c4e284e74f7bd46fcommit-bot@chromium.orgclass GrAtlasMgr;
15c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
16c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com/*
17c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com * This class implements GrTextContext using standard bitmap fonts
18c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com */
19c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comclass GrBitmapTextContext : public GrTextContext {
20c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.compublic:
21cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    GrBitmapTextContext(GrContext*, const SkDeviceProperties&);
229f94b9104a02c5918720517de3ffd547f354900acommit-bot@chromium.org    virtual ~GrBitmapTextContext();
239f94b9104a02c5918720517de3ffd547f354900acommit-bot@chromium.org
244c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com    virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
25cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org                          SkScalar x, SkScalar y) SK_OVERRIDE;
264c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com    virtual void drawPosText(const GrPaint&, const SkPaint&,
27cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org                             const char text[], size_t byteLength,
28e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                             const SkScalar pos[], SkScalar constY,
29e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                             int scalarsPerPosition) SK_OVERRIDE;
30c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
31cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    virtual bool canDraw(const SkPaint& paint) SK_OVERRIDE;
324c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com
33c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comprivate:
34c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    GrTextStrike*          fStrike;
35c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
36cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    void init(const GrPaint&, const SkPaint&);
37972f9cd7a063d0544f8c919fd12b9a3adbd12b24commit-bot@chromium.org    void drawPackedGlyph(GrGlyph::PackedID, SkFixed left, SkFixed top, GrFontScaler*);
38c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    void flushGlyphs();                 // automatically called by destructor
39cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    void finish();
40c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
41c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    enum {
42c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kMinRequestedGlyphs      = 1,
43c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kDefaultRequestedGlyphs  = 64,
44c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kMinRequestedVerts       = kMinRequestedGlyphs * 4,
45c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com        kDefaultRequestedVerts   = kDefaultRequestedGlyphs * 4,
46c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com    };
47c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
488b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    void*                       fVertices;
498b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    int32_t                     fMaxVertices;
508b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    GrTexture*                  fCurrTexture;
518b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    SkAutoTUnref<GrEffectRef>   fCachedEffect;
528b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    uint32_t                    fEffectTextureGenID;
538b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    int                         fCurrVertex;
548b2fac4b25dfb8180c54707f8e19698a9fddde07bsalomon    SkRect                      fVertexBounds;
55c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com};
56c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com
57c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com#endif
58