OLD | NEW |
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 | 8 |
9 #ifndef SkShader_DEFINED | 9 #ifndef SkShader_DEFINED |
10 #define SkShader_DEFINED | 10 #define SkShader_DEFINED |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 | 206 |
207 private: | 207 private: |
208 SkMatrix fTotalInverse; | 208 SkMatrix fTotalInverse; |
209 uint8_t fPaintAlpha; | 209 uint8_t fPaintAlpha; |
210 uint8_t fTotalInverseClass; | 210 uint8_t fTotalInverseClass; |
211 | 211 |
212 typedef SkNoncopyable INHERITED; | 212 typedef SkNoncopyable INHERITED; |
213 }; | 213 }; |
214 | 214 |
215 /** | 215 /** |
216 * Subclasses should be sure to call their INHERITED::validContext() if | 216 * Create the actual object that does the shading. |
217 * they override this method. | 217 * Size of storage must be >= contextSize. |
218 */ | 218 */ |
219 virtual bool validContext(const ContextRec&, SkMatrix* totalInverse = NULL)
const; | 219 Context* createContext(const ContextRec&, void* storage) const; |
220 | |
221 /** | |
222 * Create the actual object that does the shading. | |
223 * Returns NULL if validContext() returns false. | |
224 * Size of storage must be >= contextSize. | |
225 * Your subclass must also override contextSize() if it overrides createCon
text(). | |
226 * | |
227 * Base class implementation returns NULL. | |
228 */ | |
229 virtual Context* createContext(const ContextRec&, void* storage) const; | |
230 | 220 |
231 /** | 221 /** |
232 * Return the size of a Context returned by createContext. | 222 * Return the size of a Context returned by createContext. |
233 * | 223 * |
234 * Override this if your subclass overrides createContext, to return the co
rrect size of | 224 * Override this if your subclass overrides createContext, to return the co
rrect size of |
235 * your subclass' context. | 225 * your subclass' context. |
236 */ | 226 */ |
237 virtual size_t contextSize() const; | 227 virtual size_t contextSize() const; |
238 | 228 |
239 /** | 229 /** |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 * The incoming color to the effect has r=g=b=a all extracted from the SkPa
int's alpha. | 357 * The incoming color to the effect has r=g=b=a all extracted from the SkPa
int's alpha. |
368 * The output color should be the computed SkShader premul color modulated
by the incoming | 358 * The output color should be the computed SkShader premul color modulated
by the incoming |
369 * color. The GrContext may be used by the effect to create textures. The G
PU device does not | 359 * color. The GrContext may be used by the effect to create textures. The G
PU device does not |
370 * call createContext. Instead we pass the SkPaint here in case the shader
needs paint info. | 360 * call createContext. Instead we pass the SkPaint here in case the shader
needs paint info. |
371 */ | 361 */ |
372 virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint& paint) c
onst; | 362 virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint& paint) c
onst; |
373 | 363 |
374 ////////////////////////////////////////////////////////////////////////// | 364 ////////////////////////////////////////////////////////////////////////// |
375 // Factory methods for stock shaders | 365 // Factory methods for stock shaders |
376 | 366 |
| 367 /** |
| 368 * Call this to create a new "empty" shader, that will not draw anything. |
| 369 */ |
| 370 static SkShader* CreateEmptyShader(); |
| 371 |
377 /** Call this to create a new shader that will draw with the specified bitma
p. | 372 /** Call this to create a new shader that will draw with the specified bitma
p. |
378 * | 373 * |
379 * If the bitmap cannot be used (e.g. has no pixels, or its dimensions | 374 * If the bitmap cannot be used (e.g. has no pixels, or its dimensions |
380 * exceed implementation limits (currently at 64K - 1)) then SkEmptyShader | 375 * exceed implementation limits (currently at 64K - 1)) then SkEmptyShader |
381 * may be returned. | 376 * may be returned. |
382 * | 377 * |
383 * If the src is kA8_Config then that mask will be colorized using the colo
r on | 378 * If the src is kA8_Config then that mask will be colorized using the colo
r on |
384 * the paint. | 379 * the paint. |
385 * | 380 * |
386 * @param src The bitmap to use inside the shader | 381 * @param src The bitmap to use inside the shader |
(...skipping 15 matching lines...) Expand all Loading... |
402 * @param tmy The tiling mode to use when sampling the bitmap in the y-dir
ection. | 397 * @param tmy The tiling mode to use when sampling the bitmap in the y-dir
ection. |
403 * @return Returns a new shader object. Note: this function never retur
ns null. | 398 * @return Returns a new shader object. Note: this function never retur
ns null. |
404 */ | 399 */ |
405 static SkShader* CreatePictureShader(SkPicture* src, TileMode tmx, TileMode
tmy, | 400 static SkShader* CreatePictureShader(SkPicture* src, TileMode tmx, TileMode
tmy, |
406 const SkMatrix* localMatrix = NULL); | 401 const SkMatrix* localMatrix = NULL); |
407 | 402 |
408 SK_TO_STRING_VIRT() | 403 SK_TO_STRING_VIRT() |
409 SK_DEFINE_FLATTENABLE_TYPE(SkShader) | 404 SK_DEFINE_FLATTENABLE_TYPE(SkShader) |
410 | 405 |
411 protected: | 406 protected: |
412 | |
413 SkShader(SkReadBuffer& ); | 407 SkShader(SkReadBuffer& ); |
414 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; | 408 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
415 | 409 |
| 410 bool computeTotalInverse(const ContextRec&, SkMatrix* totalInverse) const; |
| 411 |
| 412 /** |
| 413 * Your subclass must also override contextSize() if it overrides onCreateC
ontext(). |
| 414 * Base class impl returns NULL. |
| 415 */ |
| 416 virtual Context* onCreateContext(const ContextRec&, void* storage) const; |
| 417 |
416 private: | 418 private: |
417 SkMatrix fLocalMatrix; | 419 SkMatrix fLocalMatrix; |
418 | |
419 bool computeTotalInverse(const SkMatrix& matrix, SkMatrix* totalInverse) con
st; | |
420 | 420 |
421 typedef SkFlattenable INHERITED; | 421 typedef SkFlattenable INHERITED; |
422 }; | 422 }; |
423 | 423 |
424 #endif | 424 #endif |
OLD | NEW |