| OLD | NEW | 
|---|
| 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 GrContext; | 16 class GrContext; | 
| 17 class GrEffectRef; | 17 class GrEffectRef; | 
|  | 18 class GrTexture; | 
| 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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 190         return AsMode(xfer, mode); | 191         return AsMode(xfer, mode); | 
| 191     } | 192     } | 
| 192 | 193 | 
| 193     /** A subclass may implement this factory function to work with the GPU back
     end. It is legal | 194     /** A subclass may implement this factory function to work with the GPU back
     end. It is legal | 
| 194         to call this with all but the context param NULL to simply test the retu
     rn value. effect, | 195         to call this with all but the context param NULL to simply test the retu
     rn value. effect, | 
| 195         src, and dst must all be NULL or all non-NULL. If effect is non-NULL the
     n the xfermode may | 196         src, and dst must all be NULL or all non-NULL. If effect is non-NULL the
     n the xfermode may | 
| 196         optionally allocate an effect to return and the caller as *effect. The c
     aller will install | 197         optionally allocate an effect to return and the caller as *effect. The c
     aller will install | 
| 197         it and own a ref to it. Since the xfermode may or may not assign *effect
     , the caller should | 198         it and own a ref to it. Since the xfermode may or may not assign *effect
     , the caller should | 
| 198         set *effect to NULL beforehand. If the function returns true and *effect
      is NULL then the | 199         set *effect to NULL beforehand. If the function returns true and *effect
      is NULL then the | 
| 199         src and dst coeffs will be applied to the draw. When *effect is non-NULL
      the coeffs are | 200         src and dst coeffs will be applied to the draw. When *effect is non-NULL
      the coeffs are | 
| 200         ignored. | 201         ignored. background specifies the texture to use as the background for c
     ompositing, and | 
|  | 202         should be accessed in the effect's fragment shader. If NULL, the effect 
     should request | 
|  | 203         access to destination color (setWillReadDstColor()), and use that in the
      fragment shader | 
|  | 204         (builder->dstColor()). | 
| 201      */ | 205      */ | 
| 202     virtual bool asNewEffectOrCoeff(GrContext*, | 206     virtual bool asNewEffectOrCoeff(GrContext*, | 
| 203                                     GrEffectRef** effect, | 207                                     GrEffectRef** effect, | 
| 204                                     Coeff* src, | 208                                     Coeff* src, | 
| 205                                     Coeff* dst) const; | 209                                     Coeff* dst, | 
|  | 210                                     GrTexture* background = NULL) const; | 
| 206 | 211 | 
| 207     /** | 212     /** | 
| 208      *  The same as calling xfermode->asNewEffect(...), except that this also ch
     ecks if the xfermode | 213      *  The same as calling xfermode->asNewEffect(...), except that this also ch
     ecks if the xfermode | 
| 209      *  is NULL, and if so, treats it as kSrcOver_Mode. | 214      *  is NULL, and if so, treats it as kSrcOver_Mode. | 
| 210      */ | 215      */ | 
| 211     static bool AsNewEffectOrCoeff(SkXfermode*, | 216     static bool AsNewEffectOrCoeff(SkXfermode*, | 
| 212                                    GrContext*, | 217                                    GrContext*, | 
| 213                                    GrEffectRef** effect, | 218                                    GrEffectRef** effect, | 
| 214                                    Coeff* src, | 219                                    Coeff* src, | 
| 215                                    Coeff* dst); | 220                                    Coeff* dst, | 
|  | 221                                    GrTexture* background = NULL); | 
| 216 | 222 | 
| 217     SkDEVCODE(virtual void toString(SkString* str) const = 0;) | 223     SkDEVCODE(virtual void toString(SkString* str) const = 0;) | 
| 218     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() | 224     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() | 
| 219 protected: | 225 protected: | 
| 220     SkXfermode(SkFlattenableReadBuffer& rb) : SkFlattenable(rb) {} | 226     SkXfermode(SkFlattenableReadBuffer& rb) : SkFlattenable(rb) {} | 
| 221 | 227 | 
| 222     /** The default implementation of xfer32/xfer16/xferA8 in turn call this | 228     /** The default implementation of xfer32/xfer16/xferA8 in turn call this | 
| 223         method, 1 color at a time (upscaled to a SkPMColor). The default | 229         method, 1 color at a time (upscaled to a SkPMColor). The default | 
| 224         implmentation of this method just returns dst. If performance is | 230         implmentation of this method just returns dst. If performance is | 
| 225         important, your subclass should override xfer32/xfer16/xferA8 directly. | 231         important, your subclass should override xfer32/xfer16/xferA8 directly. | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 269         fProc = proc; | 275         fProc = proc; | 
| 270     } | 276     } | 
| 271 | 277 | 
| 272 private: | 278 private: | 
| 273     SkXfermodeProc  fProc; | 279     SkXfermodeProc  fProc; | 
| 274 | 280 | 
| 275     typedef SkXfermode INHERITED; | 281     typedef SkXfermode INHERITED; | 
| 276 }; | 282 }; | 
| 277 | 283 | 
| 278 #endif | 284 #endif | 
| OLD | NEW | 
|---|