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

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

Issue 264843006: create struct to hold all the params passed around for shader::context (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
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 8
9 #ifndef SkShader_DEFINED 9 #ifndef SkShader_DEFINED
10 #define SkShader_DEFINED 10 #define SkShader_DEFINED
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 }; 112 };
113 113
114 /** 114 /**
115 * Returns true if the shader is guaranteed to produce only opaque 115 * Returns true if the shader is guaranteed to produce only opaque
116 * colors, subject to the SkPaint using the shader to apply an opaque 116 * colors, subject to the SkPaint using the shader to apply an opaque
117 * alpha value. Subclasses should override this to allow some 117 * alpha value. Subclasses should override this to allow some
118 * optimizations. 118 * optimizations.
119 */ 119 */
120 virtual bool isOpaque() const { return false; } 120 virtual bool isOpaque() const { return false; }
121 121
122 struct ContextRec {
scroggo 2014/05/01 18:49:38 Could you add some comments?
reed1 2014/05/01 18:57:41 Done.
123 ContextRec() : fDevice(NULL), fPaint(NULL), fMatrix(NULL) {}
124 ContextRec(const ContextRec& other)
125 : fDevice(other.fDevice), fPaint(other.fPaint), fMatrix(other.fMatri x) {}
126 ContextRec(const SkBitmap& device, const SkPaint& paint, const SkMatrix& matrix)
127 : fDevice(&device)
128 , fPaint(&paint)
129 , fMatrix(&matrix) {}
130
131 const SkBitmap* fDevice;
132 const SkPaint* fPaint;
133 const SkMatrix* fMatrix;
134 };
135
122 class Context : public ::SkNoncopyable { 136 class Context : public ::SkNoncopyable {
123 public: 137 public:
124 Context(const SkShader& shader, const SkBitmap& device, 138 Context(const SkShader& shader, const ContextRec&);
125 const SkPaint& paint, const SkMatrix& matrix);
126 139
127 virtual ~Context(); 140 virtual ~Context();
128 141
129 /** 142 /**
130 * Called sometimes before drawing with this shader. Return the type of 143 * Called sometimes before drawing with this shader. Return the type of
131 * alpha your shader will return. The default implementation returns 0. 144 * alpha your shader will return. The default implementation returns 0.
132 * Your subclass should override if it can (even sometimes) report a 145 * Your subclass should override if it can (even sometimes) report a
133 * non-zero value, since that will enable various blitters to perform 146 * non-zero value, since that will enable various blitters to perform
134 * faster. 147 * faster.
135 */ 148 */
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 uint8_t fPaintAlpha; 206 uint8_t fPaintAlpha;
194 uint8_t fTotalInverseClass; 207 uint8_t fTotalInverseClass;
195 208
196 typedef SkNoncopyable INHERITED; 209 typedef SkNoncopyable INHERITED;
197 }; 210 };
198 211
199 /** 212 /**
200 * Subclasses should be sure to call their INHERITED::validContext() if 213 * Subclasses should be sure to call their INHERITED::validContext() if
201 * they override this method. 214 * they override this method.
202 */ 215 */
203 virtual bool validContext(const SkBitmap& device, const SkPaint& paint, 216 virtual bool validContext(const ContextRec&, SkMatrix* totalInverse = NULL) const;
204 const SkMatrix& matrix, SkMatrix* totalInverse = N ULL) const;
205 217
206 /** 218 /**
207 * Create the actual object that does the shading. 219 * Create the actual object that does the shading.
208 * Returns NULL if validContext() returns false. 220 * Returns NULL if validContext() returns false.
209 * Size of storage must be >= contextSize. 221 * Size of storage must be >= contextSize.
210 * Your subclass must also override contextSize() if it overrides createCon text(). 222 * Your subclass must also override contextSize() if it overrides createCon text().
211 * 223 *
212 * Base class implementation returns NULL. 224 * Base class implementation returns NULL.
213 */ 225 */
214 virtual Context* createContext(const SkBitmap& device, 226 virtual Context* createContext(const ContextRec&, void* storage) const;
215 const SkPaint& paint,
216 const SkMatrix& matrix,
217 void* storage) const;
218 227
219 /** 228 /**
220 * Return the size of a Context returned by createContext. 229 * Return the size of a Context returned by createContext.
221 * 230 *
222 * Override this if your subclass overrides createContext, to return the co rrect size of 231 * Override this if your subclass overrides createContext, to return the co rrect size of
223 * your subclass' context. 232 * your subclass' context.
224 */ 233 */
225 virtual size_t contextSize() const; 234 virtual size_t contextSize() const;
226 235
227 /** 236 /**
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 411
403 private: 412 private:
404 SkMatrix fLocalMatrix; 413 SkMatrix fLocalMatrix;
405 414
406 bool computeTotalInverse(const SkMatrix& matrix, SkMatrix* totalInverse) con st; 415 bool computeTotalInverse(const SkMatrix& matrix, SkMatrix* totalInverse) con st;
407 416
408 typedef SkFlattenable INHERITED; 417 typedef SkFlattenable INHERITED;
409 }; 418 };
410 419
411 #endif 420 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698