| 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 #ifndef SkShader_DEFINED | 8 #ifndef SkShader_DEFINED |
| 9 #define SkShader_DEFINED | 9 #define SkShader_DEFINED |
| 10 | 10 |
| 11 #include "SkBitmap.h" | 11 #include "SkBitmap.h" |
| 12 #include "SkFlattenable.h" | 12 #include "SkFlattenable.h" |
| 13 #include "SkImageInfo.h" |
| 13 #include "SkMask.h" | 14 #include "SkMask.h" |
| 14 #include "SkMatrix.h" | 15 #include "SkMatrix.h" |
| 15 #include "SkPaint.h" | 16 #include "SkPaint.h" |
| 16 #include "../gpu/GrColor.h" | 17 #include "../gpu/GrColor.h" |
| 17 | 18 |
| 18 class SkColorFilter; | 19 class SkColorFilter; |
| 19 class SkPath; | 20 class SkPath; |
| 20 class SkPicture; | 21 class SkPicture; |
| 21 class SkXfermode; | 22 class SkXfermode; |
| 22 class GrContext; | 23 class GrContext; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 * colors, subject to the SkPaint using the shader to apply an opaque | 90 * colors, subject to the SkPaint using the shader to apply an opaque |
| 90 * alpha value. Subclasses should override this to allow some | 91 * alpha value. Subclasses should override this to allow some |
| 91 * optimizations. | 92 * optimizations. |
| 92 */ | 93 */ |
| 93 virtual bool isOpaque() const { return false; } | 94 virtual bool isOpaque() const { return false; } |
| 94 | 95 |
| 95 /** | 96 /** |
| 96 * ContextRec acts as a parameter bundle for creating Contexts. | 97 * ContextRec acts as a parameter bundle for creating Contexts. |
| 97 */ | 98 */ |
| 98 struct ContextRec { | 99 struct ContextRec { |
| 99 ContextRec(const SkPaint& paint, const SkMatrix& matrix, const SkMatrix*
localM) | 100 enum DstType { |
| 101 kPMColor_DstType, // clients prefer shading into PMColor dest |
| 102 kPM4f_DstType, // clients prefer shading into PM4f dest |
| 103 }; |
| 104 |
| 105 ContextRec(const SkPaint& paint, const SkMatrix& matrix, const SkMatrix*
localM, |
| 106 DstType dstType) |
| 100 : fPaint(&paint) | 107 : fPaint(&paint) |
| 101 , fMatrix(&matrix) | 108 , fMatrix(&matrix) |
| 102 , fLocalMatrix(localM) {} | 109 , fLocalMatrix(localM) |
| 110 , fPreferredDstType(dstType) {} |
| 103 | 111 |
| 104 const SkPaint* fPaint; // the current paint associated with the
draw | 112 const SkPaint* fPaint; // the current paint associated with
the draw |
| 105 const SkMatrix* fMatrix; // the current matrix in the canvas | 113 const SkMatrix* fMatrix; // the current matrix in the canvas |
| 106 const SkMatrix* fLocalMatrix; // optional local matrix | 114 const SkMatrix* fLocalMatrix; // optional local matrix |
| 115 const DstType fPreferredDstType; // the "natural" client dest type |
| 107 }; | 116 }; |
| 108 | 117 |
| 109 class Context : public ::SkNoncopyable { | 118 class Context : public ::SkNoncopyable { |
| 110 public: | 119 public: |
| 111 Context(const SkShader& shader, const ContextRec&); | 120 Context(const SkShader& shader, const ContextRec&); |
| 112 | 121 |
| 113 virtual ~Context(); | 122 virtual ~Context(); |
| 114 | 123 |
| 115 /** | 124 /** |
| 116 * Called sometimes before drawing with this shader. Return the type of | 125 * Called sometimes before drawing with this shader. Return the type of |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 SkMatrix fLocalMatrix; | 435 SkMatrix fLocalMatrix; |
| 427 | 436 |
| 428 // So the SkLocalMatrixShader can whack fLocalMatrix in its SkReadBuffer con
structor. | 437 // So the SkLocalMatrixShader can whack fLocalMatrix in its SkReadBuffer con
structor. |
| 429 friend class SkLocalMatrixShader; | 438 friend class SkLocalMatrixShader; |
| 430 friend class SkBitmapProcShader; // for computeTotalInverse() | 439 friend class SkBitmapProcShader; // for computeTotalInverse() |
| 431 | 440 |
| 432 typedef SkFlattenable INHERITED; | 441 typedef SkFlattenable INHERITED; |
| 433 }; | 442 }; |
| 434 | 443 |
| 435 #endif | 444 #endif |
| OLD | NEW |