Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: include/gpu/SkGr.h

Issue 1249543003: Creating functions for uploading a mipmapped texture. (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: Fixing merge mistakes Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1
2 /* 1 /*
3 * Copyright 2010 Google Inc. 2 * Copyright 2010 Google Inc.
4 * 3 *
5 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 5 * found in the LICENSE file.
7 */ 6 */
8 7
9
10
11 #ifndef SkGr_DEFINED 8 #ifndef SkGr_DEFINED
12 #define SkGr_DEFINED 9 #define SkGr_DEFINED
13 10
14 #include <stddef.h> 11 #include "GrColor.h"
12 #include "GrTextureAccess.h"
13 #include "SkColor.h"
14 #include "SkColorPriv.h"
15 #include "SkFilterQuality.h"
16 #include "SkImageInfo.h"
15 17
16 // Gr headers 18 class GrContext;
17 #include "GrContext.h" 19 class GrTexture;
18 #include "GrTextureAccess.h" 20 class GrTextureParams;
19 #include "GrTypes.h" 21 class SkBitmap;
20
21 // skia headers
22 #include "SkBitmap.h"
23 #include "SkPath.h"
24 #include "SkPoint.h"
25 #include "SkRegion.h"
26 #include "SkClipStack.h"
27 22
28 //////////////////////////////////////////////////////////////////////////////// 23 ////////////////////////////////////////////////////////////////////////////////
29 // Sk to Gr Type conversions 24 // Sk to Gr Type conversions
30 25
31 GR_STATIC_ASSERT((int)kZero_GrBlendCoeff == (int)SkXfermode::kZero_Coeff); 26 static inline GrColor SkColorToPremulGrColor(SkColor c) {
32 GR_STATIC_ASSERT((int)kOne_GrBlendCoeff == (int)SkXfermode::kOne_Coeff);
33 GR_STATIC_ASSERT((int)kSC_GrBlendCoeff == (int)SkXfermode::kSC_Coeff);
34 GR_STATIC_ASSERT((int)kISC_GrBlendCoeff == (int)SkXfermode::kISC_Coeff);
35 GR_STATIC_ASSERT((int)kDC_GrBlendCoeff == (int)SkXfermode::kDC_Coeff);
36 GR_STATIC_ASSERT((int)kIDC_GrBlendCoeff == (int)SkXfermode::kIDC_Coeff);
37 GR_STATIC_ASSERT((int)kSA_GrBlendCoeff == (int)SkXfermode::kSA_Coeff);
38 GR_STATIC_ASSERT((int)kISA_GrBlendCoeff == (int)SkXfermode::kISA_Coeff);
39 GR_STATIC_ASSERT((int)kDA_GrBlendCoeff == (int)SkXfermode::kDA_Coeff);
40 GR_STATIC_ASSERT((int)kIDA_GrBlendCoeff == (int)SkXfermode::kIDA_Coeff);
41 GR_STATIC_ASSERT(SkXfermode::kCoeffCount == 10);
42
43 #define SkXfermodeCoeffToGrBlendCoeff(X) ((GrBlendCoeff)(X))
44
45 ///////////////////////////////////////////////////////////////////////////////
46
47 #include "SkColorPriv.h"
48
49 GrPixelConfig SkImageInfo2GrPixelConfig(SkColorType, SkAlphaType, SkColorProfile Type);
50
51 static inline GrPixelConfig SkImageInfo2GrPixelConfig(const SkImageInfo& info) {
52 return SkImageInfo2GrPixelConfig(info.colorType(), info.alphaType(), info.pr ofileType());
53 }
54
55 bool GrPixelConfig2ColorAndProfileType(GrPixelConfig, SkColorType*, SkColorProfi leType*);
56
57 static inline GrColor SkColor2GrColor(SkColor c) {
58 SkPMColor pm = SkPreMultiplyColor(c); 27 SkPMColor pm = SkPreMultiplyColor(c);
59 unsigned r = SkGetPackedR32(pm); 28 unsigned r = SkGetPackedR32(pm);
60 unsigned g = SkGetPackedG32(pm); 29 unsigned g = SkGetPackedG32(pm);
61 unsigned b = SkGetPackedB32(pm); 30 unsigned b = SkGetPackedB32(pm);
62 unsigned a = SkGetPackedA32(pm); 31 unsigned a = SkGetPackedA32(pm);
63 return GrColorPackRGBA(r, g, b, a); 32 return GrColorPackRGBA(r, g, b, a);
64 } 33 }
65 34
66 static inline GrColor SkColor2GrColorJustAlpha(SkColor c) { 35 static inline GrColor SkColorToUnpremulGrColor(SkColor c) {
36 unsigned r = SkColorGetR(c);
37 unsigned g = SkColorGetG(c);
38 unsigned b = SkColorGetB(c);
39 unsigned a = SkColorGetA(c);
40 return GrColorPackRGBA(r, g, b, a);
41 }
42
43 static inline GrColor SkColorToOpaqueGrColor(SkColor c) {
44 unsigned r = SkColorGetR(c);
45 unsigned g = SkColorGetG(c);
46 unsigned b = SkColorGetB(c);
47 return GrColorPackRGBA(r, g, b, 0xFF);
48 }
49
50 /** Replicates the SkColor's alpha to all four channels of the GrColor. */
51 static inline GrColor SkColorAlphaToGrColor(SkColor c) {
67 U8CPU a = SkColorGetA(c); 52 U8CPU a = SkColorGetA(c);
68 return GrColorPackRGBA(a, a, a, a); 53 return GrColorPackRGBA(a, a, a, a);
69 } 54 }
70 55
71 static inline SkPMColor GrColorToSkPMColor(GrColor c) { 56 static inline SkPMColor GrColorToSkPMColor(GrColor c) {
72 GrColorIsPMAssert(c); 57 GrColorIsPMAssert(c);
73 return SkPackARGB32(GrColorUnpackA(c), GrColorUnpackR(c), GrColorUnpackG(c), GrColorUnpackB(c)); 58 return SkPackARGB32(GrColorUnpackA(c), GrColorUnpackR(c), GrColorUnpackG(c), GrColorUnpackB(c));
74 } 59 }
75 60
76 static inline GrColor SkPMColorToGrColor(SkPMColor c) { 61 static inline GrColor SkPMColorToGrColor(SkPMColor c) {
77 return GrColorPackRGBA(SkGetPackedR32(c), SkGetPackedG32(c), SkGetPackedB32( c), 62 return GrColorPackRGBA(SkGetPackedR32(c), SkGetPackedG32(c), SkGetPackedB32( c),
78 SkGetPackedA32(c)); 63 SkGetPackedA32(c));
79 } 64 }
80 65
81 GrSurfaceDesc GrImageInfoToSurfaceDesc(const SkImageInfo&);
82
83 //////////////////////////////////////////////////////////////////////////////// 66 ////////////////////////////////////////////////////////////////////////////////
84 67
85 /** 68 GrTexture* GrRefCachedBitmapTexture(GrContext*, const SkBitmap&, const GrTexture Params&);
86 * If the compressed data in the SkData is supported (as a texture format, this returns
87 * the pixel-config that should be used, and sets outStartOfDataToUpload to the ptr into
88 * the data where the actual raw data starts (skipping any header bytes).
89 *
90 * If the compressed data is not supported, this returns kUnknown_GrPixelConfig , and
91 * ignores outStartOfDataToUpload.
92 */
93 GrPixelConfig GrIsCompressedTextureDataSupported(GrContext* ctx, SkData* data,
94 int expectedW, int expectedH,
95 const void** outStartOfDataToUp load);
96 69
97 // Helper that calls GrIsImageInCache assuming bitmap is not volatile. 70 // TODO: Move SkImageInfo2GrPixelConfig to SkGrPriv.h (requires cleanup to SkWin dow its subclasses).
98 bool GrIsBitmapInCache(const GrContext*, const SkBitmap&, const GrTextureParams* ); 71 GrPixelConfig SkImageInfo2GrPixelConfig(SkColorType, SkAlphaType, SkColorProfile Type);
99 bool GrIsImageInCache(const GrContext* ctx, uint32_t imageID, const SkIRect& sub set,
100 GrTexture* nativeTexture, const GrTextureParams*);
101 72
102 GrTexture* GrRefCachedBitmapTexture(GrContext*, const SkBitmap&, const GrTexture Params*); 73 static inline GrPixelConfig SkImageInfo2GrPixelConfig(const SkImageInfo& info) {
103 GrTexture* GrRefCachedBitmapTexture(GrContext*, const SkBitmap&, SkImageUsageTyp e); 74 return SkImageInfo2GrPixelConfig(info.colorType(), info.alphaType(), info.pr ofileType());
104 75 }
105 GrTexture* GrCreateTextureForPixels(GrContext*, const GrUniqueKey& optionalKey, GrSurfaceDesc,
106 SkPixelRef* pixelRefForInvalidationNotificat ionOrNull,
107 const void* pixels, size_t rowBytesOrZero);
108
109 ////////////////////////////////////////////////////////////////////////////////
110
111 // Converts a SkPaint to a GrPaint, ignoring the SkPaint's shader.
112 // Sets the color of GrPaint to the value of the parameter paintColor
113 // Callers may subsequently modify the GrPaint. Setting constantColor indicates
114 // that the final paint will draw the same color at every pixel. This allows
115 // an optimization where the color filter can be applied to the SkPaint's
116 // color once while converting to GrPaint and then ignored. TODO: Remove this
117 // bool and use the invariant info to automatically apply the color filter.
118 bool SkPaint2GrPaintNoShader(GrContext* context, const SkPaint& skPaint, GrColor paintColor,
119 bool constantColor, GrPaint* grPaint);
120
121 // This function is similar to skPaint2GrPaintNoShader but also converts
122 // skPaint's shader to a GrFragmentProcessor if possible.
123 // constantColor has the same meaning as in skPaint2GrPaintNoShader.
124 bool SkPaint2GrPaint(GrContext* context, const SkPaint& skPaint, const SkMatrix& viewM,
125 bool constantColor, GrPaint* grPaint);
126
127
128 SkImageInfo GrMakeInfoFromTexture(GrTexture* tex, int w, int h, bool isOpaque);
129
130 // Using the dreaded SkGrPixelRef ...
131 SK_API void GrWrapTextureInBitmap(GrTexture* src, int w, int h, bool isOpaque,
132 SkBitmap* dst);
133 76
134 GrTextureParams::FilterMode GrSkFilterQualityToGrFilterMode(SkFilterQuality pain tFilterQuality, 77 GrTextureParams::FilterMode GrSkFilterQualityToGrFilterMode(SkFilterQuality pain tFilterQuality,
135 const SkMatrix& view M, 78 const SkMatrix& view M,
136 const SkMatrix& loca lM, 79 const SkMatrix& loca lM,
137 bool* doBicubic); 80 bool* doBicubic);
138 81
139 //////////////////////////////////////////////////////////////////////////////// 82 ////////////////////////////////////////////////////////////////////////////////
140 // Classes
141 83
142 class SkGlyphCache; 84 SkImageInfo GrMakeInfoFromTexture(GrTexture* tex, int w, int h, bool isOpaque);
143 85
144 //////////////////////////////////////////////////////////////////////////////// 86 // Using the dreaded SkGrPixelRef ...
87 SK_API void GrWrapTextureInBitmap(GrTexture* src, int w, int h, bool isOpaque,
88 SkBitmap* dst);
145 89
146 #endif 90 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698