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