1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2010 Google Inc.
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
6ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com */
7ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
8ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#ifndef GrTextContext_DEFINED
9ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#define GrTextContext_DEFINED
10ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
11ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#include "GrGlyph.h"
12375ff85e96cf0f8438ea0b11be67e85474e42c29tomhudson@google.com#include "GrPaint.h"
13e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org#include "SkDeviceProperties.h"
14ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
15cc40f06db77a3a27f3d685c222086d245399bc0acommit-bot@chromium.org#include "SkPostConfig.h"
16cc40f06db77a3a27f3d685c222086d245399bc0acommit-bot@chromium.org
17ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.comclass GrContext;
18375ff85e96cf0f8438ea0b11be67e85474e42c29tomhudson@google.comclass GrDrawTarget;
19c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comclass GrFontScaler;
20ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
21c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com/*
22c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com * This class wraps the state for a single text render
23c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.com */
24375ff85e96cf0f8438ea0b11be67e85474e42c29tomhudson@google.comclass GrTextContext {
25375ff85e96cf0f8438ea0b11be67e85474e42c29tomhudson@google.compublic:
26cc40f06db77a3a27f3d685c222086d245399bc0acommit-bot@chromium.org    virtual ~GrTextContext() {}
274c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com    virtual void drawText(const GrPaint&, const SkPaint&, const char text[], size_t byteLength,
28cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org                          SkScalar x, SkScalar y) = 0;
29cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    virtual void drawPosText(const GrPaint&, const SkPaint&,
30cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org                             const char text[], size_t byteLength,
31e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                             const SkScalar pos[], SkScalar constY,
32e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                             int scalarsPerPosition) = 0;
33cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org
34cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    virtual bool canDraw(const SkPaint& paint) = 0;
354c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com
36c7a40fad0b4c243087ad1adb14ebc2184d42cac0jvanverth@google.comprotected:
37cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    GrTextContext(GrContext*, const SkDeviceProperties&);
38e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org
39e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org    static GrFontScaler* GetGrFontScaler(SkGlyphCache* cache);
40e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org    static void MeasureText(SkGlyphCache* cache, SkDrawCacheProc glyphCacheProc,
41e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org                            const char text[], size_t byteLength, SkVector* stopVector);
42e5d7015cde3b6f2a3929b8e378822e3d7be223d4skia.committer@gmail.com
43cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    void init(const GrPaint&, const SkPaint&);
44cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    void finish() { fDrawTarget = NULL; }
45cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org
46e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org    GrContext*         fContext;
47e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org    SkDeviceProperties fDeviceProperties;
48e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org
49cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    GrDrawTarget*      fDrawTarget;
50e8612d9a8d616c2ed0195421a0675e10b0c2d230commit-bot@chromium.org    SkIRect            fClipRect;
51cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    GrPaint            fPaint;
52cbbc481e918c0d32454455626235f67106f216a1commit-bot@chromium.org    SkPaint            fSkPaint;
53375ff85e96cf0f8438ea0b11be67e85474e42c29tomhudson@google.com};
54ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
55f4a9c82918767865ebb265f82b0201ecc2b1511bbsalomon@google.com#endif
56