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

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

Issue 582963002: Solo gp (Closed) Base URL: https://skia.googlesource.com/skia.git@no_peb
Patch Set: feddback inc Created 6 years, 3 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
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 GrEffect; 16 class GrFragmentProcessor;
17 class GrTexture; 17 class GrTexture;
18 class SkString; 18 class SkString;
19 19
20 /** \class SkXfermode 20 /** \class SkXfermode
21 * 21 *
22 * SkXfermode is the base class for objects that are called to implement custom 22 * 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) 23 * "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 24 * 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, 25 * specified in the Modes enum. When an SkXfermode is assigned to an SkPaint,
26 * then objects drawn with that paint have the xfermode applied. 26 * then objects drawn with that paint have the xfermode applied.
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 191
192 /** A subclass may implement this factory function to work with the GPU back end. It is legal 192 /** A subclass may implement this factory function to work with the GPU back end. It is legal
193 to call this with all params NULL to simply test the return value. If ef fect is non-NULL 193 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. 194 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 195 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 196 *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 197 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 198 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()). 199 (setWillReadDstColor()), and use that in the fragment shader (builder->d stColor()).
200 */ 200 */
201 virtual bool asNewEffect(GrEffect** effect, GrTexture* background = NULL) co nst; 201 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture* backgroun d = NULL) const;
202 202
203 /** Returns true if the xfermode can be expressed as coeffs (src, dst), or a s an effect 203 /** Returns true if the xfermode can be expressed as coeffs (src, dst), or a s an effect
204 (effect). This helper calls the asCoeff() and asNewEffect() virtuals. If the xfermode is 204 (effect). This helper calls the asCoeff() and asFragmentProcessor() virt uals. If the
205 NULL, it is treated as kSrcOver_Mode. It is legal to call this with all params NULL to 205 xfermode is NULL, it is treated as kSrcOver_Mode. It is legal to call th is with all params
206 simply test the return value. effect, src, and dst must all be NULL or all non-NULL. 206 NULL to simply test the return value. effect, src, and dst must all be NULL or all
207 non-NULL.
207 */ 208 */
208 static bool AsNewEffectOrCoeff(SkXfermode*, 209 static bool asFragmentProcessorOrCoeff(SkXfermode*, GrFragmentProcessor**, C oeff* src,
209 GrEffect** effect, 210 Coeff* dst, GrTexture* background = N ULL);
210 Coeff* src,
211 Coeff* dst,
212 GrTexture* background = NULL);
213 211
214 SK_TO_STRING_PUREVIRT() 212 SK_TO_STRING_PUREVIRT()
215 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() 213 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
216 SK_DEFINE_FLATTENABLE_TYPE(SkXfermode) 214 SK_DEFINE_FLATTENABLE_TYPE(SkXfermode)
217 215
218 protected: 216 protected:
219 SkXfermode() {} 217 SkXfermode() {}
220 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 218 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
221 explicit SkXfermode(SkReadBuffer& rb) : SkFlattenable(rb) {} 219 explicit SkXfermode(SkReadBuffer& rb) : SkFlattenable(rb) {}
222 #endif 220 #endif
(...skipping 10 matching lines...) Expand all
233 231
234 private: 232 private:
235 enum { 233 enum {
236 kModeCount = kLastMode + 1 234 kModeCount = kLastMode + 1
237 }; 235 };
238 236
239 typedef SkFlattenable INHERITED; 237 typedef SkFlattenable INHERITED;
240 }; 238 };
241 239
242 #endif 240 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698