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

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

Issue 751283002: Add XferProcessor factory in GrPaint and GrDrawState. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Update gyp Created 6 years 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 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkXfermode_DEFINED 10 #ifndef SkXfermode_DEFINED
11 #define SkXfermode_DEFINED 11 #define SkXfermode_DEFINED
12 12
13 #include "SkFlattenable.h" 13 #include "SkFlattenable.h"
14 #include "SkColor.h" 14 #include "SkColor.h"
15 15
16 class GrFragmentProcessor; 16 class GrFragmentProcessor;
17 class GrTexture; 17 class GrTexture;
18 class GrXPFactory;
18 class SkString; 19 class SkString;
19 20
20 /** \class SkXfermode 21 /** \class SkXfermode
21 * 22 *
22 * SkXfermode is the base class for objects that are called to implement custom 23 * SkXfermode is the base class for objects that are called to implement custom
23 * "transfer-modes" in the drawing pipeline. The static function Create(Modes) 24 * "transfer-modes" in the drawing pipeline. The static function Create(Modes)
24 * can be called to return an instance of any of the predefined subclasses as 25 * can be called to return an instance of any of the predefined subclasses as
25 * specified in the Modes enum. When an SkXfermode is assigned to an SkPaint, 26 * specified in the Modes enum. When an SkXfermode is assigned to an SkPaint,
26 * then objects drawn with that paint have the xfermode applied. 27 * then objects drawn with that paint have the xfermode applied.
27 * 28 *
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 to call this with all params NULL to simply test the return value. If ef fect is non-NULL 194 to call this with all params NULL to simply test the return value. If ef fect is non-NULL
194 then the xfermode may optionally allocate an effect to return and the ca ller as *effect. 195 then the xfermode may optionally allocate an effect to return and the ca ller as *effect.
195 The caller will install it and own a ref to it. Since the xfermode may o r may not assign 196 The caller will install it and own a ref to it. Since the xfermode may o r may not assign
196 *effect, the caller should set *effect to NULL beforehand. background sp ecifies the 197 *effect, the caller should set *effect to NULL beforehand. background sp ecifies the
197 texture to use as the background for compositing, and should be accessed in the effect's 198 texture to use as the background for compositing, and should be accessed in the effect's
198 fragment shader. If NULL, the effect should request access to destinatio n color 199 fragment shader. If NULL, the effect should request access to destinatio n color
199 (setWillReadDstColor()), and use that in the fragment shader (builder->d stColor()). 200 (setWillReadDstColor()), and use that in the fragment shader (builder->d stColor()).
200 */ 201 */
201 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture* backgroun d = NULL) const; 202 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture* backgroun d = NULL) const;
202 203
203 /** Returns true if the xfermode can be expressed as coeffs (src, dst), or a s an effect 204 /** A subclass may implement this factory function to work with the GPU back end. It is legal
204 (effect). This helper calls the asCoeff() and asFragmentProcessor() virt uals. If the 205 to call this with xpf NULL to simply test the return value. If effect is non-NULL
bsalomon 2014/11/26 21:02:44 Use "factory" instead of "effect"? I don't really
egdaniel 2014/12/01 18:18:24 Done.
205 xfermode is NULL, it is treated as kSrcOver_Mode. It is legal to call th is with all params 206 then the xfermode may optionally allocate an effect to return and the ca ller as *effect.
206 NULL to simply test the return value. effect, src, and dst must all be NULL or all 207 The caller will install it and own a ref to it. Since the xfermode may o r may not assign
207 non-NULL. 208 *effect, the caller should set *effect to NULL beforehand. XP's cannot u se a background
209 texture since they have no coord transforms.
208 */ 210 */
209 static bool asFragmentProcessorOrCoeff(SkXfermode*, GrFragmentProcessor**, C oeff* src, 211 virtual bool asXPFactory(GrXPFactory** xpf) const;
210 Coeff* dst, GrTexture* background = N ULL); 212
213 /** Returns true if the xfermode can be expressed as coeffs (src, dst), a xf er processor
214 (returned as xpFactory), or a fragment processor. This helper calls the asCoeff(),
215 asXPFactor(), and asFragmentProcessor() virtuals. If the xfermode is NUL L, it is treated
216 as kSrcOver_Mode. It is legal to call this with all params NULL to simpl y test the return
217 value. effect, src, and dst must all be NULL or all non-NULL.
218 */
219 static bool asFragmentProcessorOrXPFactoryOrCoeff(SkXfermode*, GrFragmentPro cessor**,
bsalomon 2014/11/26 21:02:44 Yikes! I guess its just temporary. Do we really ne
egdaniel 2014/12/01 18:18:24 Better for now?
220 GrXPFactory**, Coeff* src, Coeff* dst,
221 GrTexture* background = NU LL);
211 222
212 SK_TO_STRING_PUREVIRT() 223 SK_TO_STRING_PUREVIRT()
213 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() 224 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
214 SK_DEFINE_FLATTENABLE_TYPE(SkXfermode) 225 SK_DEFINE_FLATTENABLE_TYPE(SkXfermode)
215 226
216 protected: 227 protected:
217 SkXfermode() {} 228 SkXfermode() {}
218 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 229 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
219 explicit SkXfermode(SkReadBuffer& rb) : SkFlattenable(rb) {} 230 explicit SkXfermode(SkReadBuffer& rb) : SkFlattenable(rb) {}
220 #endif 231 #endif
(...skipping 10 matching lines...) Expand all
231 242
232 private: 243 private:
233 enum { 244 enum {
234 kModeCount = kLastMode + 1 245 kModeCount = kLastMode + 1
235 }; 246 };
236 247
237 typedef SkFlattenable INHERITED; 248 typedef SkFlattenable INHERITED;
238 }; 249 };
239 250
240 #endif 251 #endif
OLDNEW
« no previous file with comments | « gyp/gpu.gypi ('k') | include/gpu/GrBackendProcessorFactory.h » ('j') | include/gpu/GrPaint.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698