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

Side by Side Diff: include/core/SkShader.h

Issue 1556003003: remove shadeSpan16 from shader (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: cleanup unused macro-generated procs Created 4 years, 11 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
« no previous file with comments | « no previous file | src/core/SkBitmapProcShader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * 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
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkShader_DEFINED 8 #ifndef SkShader_DEFINED
9 #define SkShader_DEFINED 9 #define SkShader_DEFINED
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 }; 65 };
66 66
67 enum { 67 enum {
68 kTileModeCount = kMirror_TileMode + 1 68 kTileModeCount = kMirror_TileMode + 1
69 }; 69 };
70 70
71 // override these in your subclass 71 // override these in your subclass
72 72
73 enum Flags { 73 enum Flags {
74 //!< set if all of the colors will be opaque 74 //!< set if all of the colors will be opaque
75 kOpaqueAlpha_Flag = 0x01, 75 kOpaqueAlpha_Flag = 1 << 0,
76
77 //! set if this shader's shadeSpan16() method can be called
78 kHasSpan16_Flag = 0x02,
79
80 /** Set this bit if the shader's native data type is instrinsically 16
81 bit, meaning that calling the 32bit shadeSpan() entry point will
82 mean the the impl has to up-sample 16bit data into 32bit. Used as a
83 a means of clearing a dither request if the it will have no effect
84 */
85 kIntrinsicly16_Flag = 0x04,
86 76
87 /** set if the spans only vary in X (const in Y). 77 /** set if the spans only vary in X (const in Y).
88 e.g. an Nx1 bitmap that is being tiled in Y, or a linear-gradient 78 e.g. an Nx1 bitmap that is being tiled in Y, or a linear-gradient
89 that varies from left-to-right. This flag specifies this for 79 that varies from left-to-right. This flag specifies this for
90 shadeSpan(). 80 shadeSpan().
91 */ 81 */
92 kConstInY32_Flag = 0x08, 82 kConstInY32_Flag = 1 << 1,
93
94 /** same as kConstInY32_Flag, but is set if this is true for shadeSpan16
95 which may not always be the case, since shadeSpan16 may be
96 predithered, which would mean it was not const in Y, even though
97 the 32bit shadeSpan() would be const.
98 */
99 kConstInY16_Flag = 0x10
100 }; 83 };
101 84
102 /** 85 /**
103 * Returns true if the shader is guaranteed to produce only opaque 86 * Returns true if the shader is guaranteed to produce only opaque
104 * colors, subject to the SkPaint using the shader to apply an opaque 87 * colors, subject to the SkPaint using the shader to apply an opaque
105 * alpha value. Subclasses should override this to allow some 88 * alpha value. Subclasses should override this to allow some
106 * optimizations. 89 * optimizations.
107 */ 90 */
108 virtual bool isOpaque() const { return false; } 91 virtual bool isOpaque() const { return false; }
109 92
(...skipping 20 matching lines...) Expand all
130 /** 113 /**
131 * Called sometimes before drawing with this shader. Return the type of 114 * Called sometimes before drawing with this shader. Return the type of
132 * alpha your shader will return. The default implementation returns 0. 115 * alpha your shader will return. The default implementation returns 0.
133 * Your subclass should override if it can (even sometimes) report a 116 * Your subclass should override if it can (even sometimes) report a
134 * non-zero value, since that will enable various blitters to perform 117 * non-zero value, since that will enable various blitters to perform
135 * faster. 118 * faster.
136 */ 119 */
137 virtual uint32_t getFlags() const { return 0; } 120 virtual uint32_t getFlags() const { return 0; }
138 121
139 /** 122 /**
140 * Return the alpha associated with the data returned by shadeSpan16(). If
141 * kHasSpan16_Flag is not set, this value is meaningless.
142 */
143 virtual uint8_t getSpan16Alpha() const { return fPaintAlpha; }
144
145 /**
146 * Called for each span of the object being drawn. Your subclass should 123 * Called for each span of the object being drawn. Your subclass should
147 * set the appropriate colors (with premultiplied alpha) that correspon d 124 * set the appropriate colors (with premultiplied alpha) that correspon d
148 * to the specified device coordinates. 125 * to the specified device coordinates.
149 */ 126 */
150 virtual void shadeSpan(int x, int y, SkPMColor[], int count) = 0; 127 virtual void shadeSpan(int x, int y, SkPMColor[], int count) = 0;
151 128
152 /** 129 /**
153 * The const void* ctx is only const because all the implementations are const. 130 * The const void* ctx is only const because all the implementations are const.
154 * This can be changed to non-const if a new shade proc needs to change the ctx. 131 * This can be changed to non-const if a new shade proc needs to change the ctx.
155 */ 132 */
156 typedef void (*ShadeProc)(const void* ctx, int x, int y, SkPMColor[], in t count); 133 typedef void (*ShadeProc)(const void* ctx, int x, int y, SkPMColor[], in t count);
157 virtual ShadeProc asAShadeProc(void** ctx); 134 virtual ShadeProc asAShadeProc(void** ctx);
158 135
159 /** 136 /**
160 * Called only for 16bit devices when getFlags() returns
161 * kOpaqueAlphaFlag | kHasSpan16_Flag
162 */
163 virtual void shadeSpan16(int x, int y, uint16_t[], int count);
164
165 /**
166 * Similar to shadeSpan, but only returns the alpha-channel for a span. 137 * Similar to shadeSpan, but only returns the alpha-channel for a span.
167 * The default implementation calls shadeSpan() and then extracts the a lpha 138 * The default implementation calls shadeSpan() and then extracts the a lpha
168 * values from the returned colors. 139 * values from the returned colors.
169 */ 140 */
170 virtual void shadeSpanAlpha(int x, int y, uint8_t alpha[], int count); 141 virtual void shadeSpanAlpha(int x, int y, uint8_t alpha[], int count);
171 142
172 /**
173 * Helper function that returns true if this shader's shadeSpan16() met hod
174 * can be called.
175 */
176 bool canCallShadeSpan16() {
177 return SkShader::CanCallShadeSpan16(this->getFlags());
178 }
179
180 // Notification from blitter::blitMask in case we need to see the non-al pha channels 143 // Notification from blitter::blitMask in case we need to see the non-al pha channels
181 virtual void set3DMask(const SkMask*) {} 144 virtual void set3DMask(const SkMask*) {}
182 145
183 protected: 146 protected:
184 // Reference to shader, so we don't have to dupe information. 147 // Reference to shader, so we don't have to dupe information.
185 const SkShader& fShader; 148 const SkShader& fShader;
186 149
187 enum MatrixClass { 150 enum MatrixClass {
188 kLinear_MatrixClass, // no perspective 151 kLinear_MatrixClass, // no perspective
189 kFixedStepInX_MatrixClass, // fast perspective, need to call fi xedStepInX() each 152 kFixedStepInX_MatrixClass, // fast perspective, need to call fi xedStepInX() each
(...skipping 23 matching lines...) Expand all
213 176
214 /** 177 /**
215 * Return the size of a Context returned by createContext. 178 * Return the size of a Context returned by createContext.
216 * 179 *
217 * Override this if your subclass overrides createContext, to return the co rrect size of 180 * Override this if your subclass overrides createContext, to return the co rrect size of
218 * your subclass' context. 181 * your subclass' context.
219 */ 182 */
220 virtual size_t contextSize() const; 183 virtual size_t contextSize() const;
221 184
222 /** 185 /**
223 * Helper to check the flags to know if it is legal to call shadeSpan16()
224 */
225 static bool CanCallShadeSpan16(uint32_t flags) {
226 return (flags & kHasSpan16_Flag) != 0;
227 }
228
229 /**
230 * Returns true if this shader is just a bitmap, and if not null, returns t he bitmap, 186 * Returns true if this shader is just a bitmap, and if not null, returns t he bitmap,
231 * localMatrix, and tilemodes. If this is not a bitmap, returns false and i gnores the 187 * localMatrix, and tilemodes. If this is not a bitmap, returns false and i gnores the
232 * out-parameters. 188 * out-parameters.
233 */ 189 */
234 bool isABitmap(SkBitmap* outTexture, SkMatrix* outMatrix, TileMode xy[2]) co nst { 190 bool isABitmap(SkBitmap* outTexture, SkMatrix* outMatrix, TileMode xy[2]) co nst {
235 return this->onIsABitmap(outTexture, outMatrix, xy); 191 return this->onIsABitmap(outTexture, outMatrix, xy);
236 } 192 }
237 193
238 bool isABitmap() const { 194 bool isABitmap() const {
239 return this->isABitmap(nullptr, nullptr, nullptr); 195 return this->isABitmap(nullptr, nullptr, nullptr);
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 SkMatrix fLocalMatrix; 400 SkMatrix fLocalMatrix;
445 401
446 // So the SkLocalMatrixShader can whack fLocalMatrix in its SkReadBuffer con structor. 402 // So the SkLocalMatrixShader can whack fLocalMatrix in its SkReadBuffer con structor.
447 friend class SkLocalMatrixShader; 403 friend class SkLocalMatrixShader;
448 friend class SkBitmapProcShader; // for computeTotalInverse() 404 friend class SkBitmapProcShader; // for computeTotalInverse()
449 405
450 typedef SkFlattenable INHERITED; 406 typedef SkFlattenable INHERITED;
451 }; 407 };
452 408
453 #endif 409 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkBitmapProcShader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698