1277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
25bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com/*
35bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Copyright 2010 Google Inc.
45bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com *
55bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Use of this source code is governed by a BSD-style license that can be
65bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * found in the LICENSE file.
7277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com */
8277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
9277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
105bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com
11277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#ifndef SkGr_DEFINED
12277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#define SkGr_DEFINED
13277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
14277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include <stddef.h>
15277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
16c93d11c65ab5bd25a956ac1a68407b76610eed27bsalomon@google.com// Gr headers
170722271e775bbc8db17aeb4ce530337fddc816e3bsalomon@google.com#include "GrTypes.h"
18277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "GrContext.h"
19277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "GrFontScaler.h"
20277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
21277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com// skia headers
22277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "SkBitmap.h"
23277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "SkPath.h"
24277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "SkPoint.h"
25277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "SkRegion.h"
26c93d11c65ab5bd25a956ac1a68407b76610eed27bsalomon@google.com#include "SkClipStack.h"
27277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
28277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#if (GR_DEBUG && defined(SK_RELEASE)) || (GR_RELEASE && defined(SK_DEBUG))
29277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com//    #error "inconsistent GR_DEBUG and SK_DEBUG"
30277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#endif
31277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
32277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com////////////////////////////////////////////////////////////////////////////////
33277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com// Sk to Gr Type conversions
34277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
3522d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kZero_GrBlendCoeff == (int)SkXfermode::kZero_Coeff);
3622d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kOne_GrBlendCoeff  == (int)SkXfermode::kOne_Coeff);
3722d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kSC_GrBlendCoeff   == (int)SkXfermode::kSC_Coeff);
3822d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kISC_GrBlendCoeff  == (int)SkXfermode::kISC_Coeff);
3922d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kDC_GrBlendCoeff   == (int)SkXfermode::kDC_Coeff);
4022d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kIDC_GrBlendCoeff  == (int)SkXfermode::kIDC_Coeff);
4122d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kSA_GrBlendCoeff   == (int)SkXfermode::kSA_Coeff);
4222d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kISA_GrBlendCoeff  == (int)SkXfermode::kISA_Coeff);
4322d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kDA_GrBlendCoeff   == (int)SkXfermode::kDA_Coeff);
4422d7a08af16d34c4907480e8bc84e6fdca1a2f1bbsalomon@google.comGR_STATIC_ASSERT((int)kIDA_GrBlendCoeff  == (int)SkXfermode::kIDA_Coeff);
45168e169e3af293b3cbdd01170115e15d381e605fbsalomon@google.com
46168e169e3af293b3cbdd01170115e15d381e605fbsalomon@google.com#define sk_blend_to_grblend(X) ((GrBlendCoeff)(X))
47277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
48277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com///////////////////////////////////////////////////////////////////////////////
49277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
50277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#include "SkColorPriv.h"
51277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
5272ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com/**
5372ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com *  Convert the SkBitmap::Config to the corresponding PixelConfig, or
5472ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com *  kUnknown_PixelConfig if the conversion cannot be done.
5572ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com */
5672ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.comGrPixelConfig SkBitmapConfig2GrPixelConfig(SkBitmap::Config);
5772ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com
5872ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.comstatic inline GrColor SkColor2GrColor(SkColor c) {
5972ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com    SkPMColor pm = SkPreMultiplyColor(c);
6072ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com    unsigned r = SkGetPackedR32(pm);
6172ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com    unsigned g = SkGetPackedG32(pm);
6272ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com    unsigned b = SkGetPackedB32(pm);
6372ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com    unsigned a = SkGetPackedA32(pm);
6472ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com    return GrColorPackRGBA(r, g, b, a);
6572ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com}
6672ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com
6772ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com////////////////////////////////////////////////////////////////////////////////
6872ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com
69bfb6b1c6f8decb7d57dab70bac193a765a31004fbsalomon@google.combool GrIsBitmapInCache(const GrContext*, const SkBitmap&, const GrTextureParams*);
70bfb6b1c6f8decb7d57dab70bac193a765a31004fbsalomon@google.com
71dc07ac7547243b02e1e5574b37c4b675055997f7bsalomon@google.comGrTexture* GrLockAndRefCachedBitmapTexture(GrContext*, const SkBitmap&, const GrTextureParams*);
7272ab046af94dff97eff3ffc639b73d8007ee4637rileya@google.com
73dc07ac7547243b02e1e5574b37c4b675055997f7bsalomon@google.comvoid GrUnlockAndUnrefCachedBitmapTexture(GrTexture*);
74277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
75277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com////////////////////////////////////////////////////////////////////////////////
76277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com// Classes
77277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
78277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.comclass SkGlyphCache;
79277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
80277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.comclass SkGrFontScaler : public GrFontScaler {
81277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.compublic:
82277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    explicit SkGrFontScaler(SkGlyphCache* strike);
83277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    virtual ~SkGrFontScaler();
84277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
85277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    // overrides
86277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    virtual const GrKey* getKey();
8716843a066550674b30c371516d629165fd858e89reed@google.com    virtual GrMaskFormat getMaskFormat();
8831af7525d22f44f18b9705f0e50160b0c352415acommit-bot@chromium.org    virtual bool getPackedGlyphBounds(GrGlyph::PackedID, SkIRect* bounds);
89277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    virtual bool getPackedGlyphImage(GrGlyph::PackedID, int width, int height,
90277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com                                     int rowBytes, void* image);
91a3692bf08ec4f59f24cef9bb90ce6a2a8998bc5ebsalomon@google.com    virtual bool getGlyphPath(uint16_t glyphID, SkPath*);
92277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
93277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.comprivate:
94277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    SkGlyphCache* fStrike;
95277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com    GrKey*  fKey;
96277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com//    DECLARE_INSTANCE_COUNTER(SkGrFontScaler);
97277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com};
98277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
99277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com////////////////////////////////////////////////////////////////////////////////
100277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com
101277938fcee03695a85f5cdf4f6b076e2bb1e55f2reed@google.com#endif
102