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