| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  * Copyright 2013 Google Inc. |   2  * Copyright 2013 Google Inc. | 
|   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 SkDisplacementMapEffect_DEFINED |   8 #ifndef SkDisplacementMapEffect_DEFINED | 
|   9 #define SkDisplacementMapEffect_DEFINED |   9 #define SkDisplacementMapEffect_DEFINED | 
|  10  |  10  | 
|  11 #include "SkImageFilter.h" |  11 #include "SkImageFilter.h" | 
|  12 #include "SkBitmap.h" |  12 #include "SkBitmap.h" | 
|  13  |  13  | 
|  14 class SK_API SkDisplacementMapEffect : public SkImageFilter { |  14 class SK_API SkDisplacementMapEffect : public SkImageFilter { | 
|  15 public: |  15 public: | 
|  16     enum ChannelSelectorType { |  16     enum ChannelSelectorType { | 
|  17         kUnknown_ChannelSelectorType, |  17         kUnknown_ChannelSelectorType, | 
|  18         kR_ChannelSelectorType, |  18         kR_ChannelSelectorType, | 
|  19         kG_ChannelSelectorType, |  19         kG_ChannelSelectorType, | 
|  20         kB_ChannelSelectorType, |  20         kB_ChannelSelectorType, | 
|  21         kA_ChannelSelectorType |  21         kA_ChannelSelectorType | 
|  22     }; |  22     }; | 
|  23  |  23  | 
|  24     ~SkDisplacementMapEffect(); |  24     ~SkDisplacementMapEffect(); | 
|  25  |  25  | 
|  26     static SkDisplacementMapEffect* Create(ChannelSelectorType xChannelSelector, |  26     static SkDisplacementMapEffect* Create(ChannelSelectorType xChannelSelector, | 
|  27                                            ChannelSelectorType yChannelSelector, |  27                                            ChannelSelectorType yChannelSelector, | 
|  28                                            SkScalar scale, SkImageFilter* displa
    cement, |  28                                            SkScalar scale, SkImageFilter* displa
    cement, | 
|  29                                            SkImageFilter* color = NULL, |  29                                            SkImageFilter* color = NULL, | 
|  30                                            const CropRect* cropRect = NULL, |  30                                            const CropRect* cropRect = NULL); | 
|  31                                            uint32_t uniqueID = 0); |  | 
|  32  |  31  | 
|  33     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDisplacementMapEffect) |  32     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDisplacementMapEffect) | 
|  34  |  33  | 
|  35     virtual bool onFilterImage(Proxy* proxy, |  34     virtual bool onFilterImage(Proxy* proxy, | 
|  36                                const SkBitmap& src, |  35                                const SkBitmap& src, | 
|  37                                const Context& ctx, |  36                                const Context& ctx, | 
|  38                                SkBitmap* dst, |  37                                SkBitmap* dst, | 
|  39                                SkIPoint* offset) const SK_OVERRIDE; |  38                                SkIPoint* offset) const SK_OVERRIDE; | 
|  40     void computeFastBounds(const SkRect& src, SkRect* dst) const SK_OVERRIDE; |  39     void computeFastBounds(const SkRect& src, SkRect* dst) const SK_OVERRIDE; | 
|  41  |  40  | 
|  42     virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&, |  41     virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&, | 
|  43                                 SkIRect* dst) const SK_OVERRIDE; |  42                                 SkIRect* dst) const SK_OVERRIDE; | 
|  44  |  43  | 
|  45 #if SK_SUPPORT_GPU |  44 #if SK_SUPPORT_GPU | 
|  46     bool canFilterImageGPU() const SK_OVERRIDE { return true; } |  45     bool canFilterImageGPU() const SK_OVERRIDE { return true; } | 
|  47     virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context
    & ctx, |  46     virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context
    & ctx, | 
|  48                                 SkBitmap* result, SkIPoint* offset) const SK_OVE
    RRIDE; |  47                                 SkBitmap* result, SkIPoint* offset) const SK_OVE
    RRIDE; | 
|  49 #endif |  48 #endif | 
|  50  |  49  | 
|  51     SK_TO_STRING_OVERRIDE() |  50     SK_TO_STRING_OVERRIDE() | 
|  52  |  51  | 
|  53 protected: |  52 protected: | 
|  54     SkDisplacementMapEffect(ChannelSelectorType xChannelSelector, |  53     SkDisplacementMapEffect(ChannelSelectorType xChannelSelector, | 
|  55                             ChannelSelectorType yChannelSelector, |  54                             ChannelSelectorType yChannelSelector, | 
|  56                             SkScalar scale, SkImageFilter* inputs[2], |  55                             SkScalar scale, SkImageFilter* inputs[2], | 
|  57                             const CropRect* cropRect, |  56                             const CropRect* cropRect); | 
|  58                             uint32_t uniqueID); |  | 
|  59     void flatten(SkWriteBuffer&) const SK_OVERRIDE; |  57     void flatten(SkWriteBuffer&) const SK_OVERRIDE; | 
|  60  |  58  | 
|  61 private: |  59 private: | 
|  62     ChannelSelectorType fXChannelSelector; |  60     ChannelSelectorType fXChannelSelector; | 
|  63     ChannelSelectorType fYChannelSelector; |  61     ChannelSelectorType fYChannelSelector; | 
|  64     SkScalar fScale; |  62     SkScalar fScale; | 
|  65     typedef SkImageFilter INHERITED; |  63     typedef SkImageFilter INHERITED; | 
|  66     const SkImageFilter* getDisplacementInput() const { return getInput(0); } |  64     const SkImageFilter* getDisplacementInput() const { return getInput(0); } | 
|  67     const SkImageFilter* getColorInput() const { return getInput(1); } |  65     const SkImageFilter* getColorInput() const { return getInput(1); } | 
|  68 }; |  66 }; | 
|  69  |  67  | 
|  70 #endif |  68 #endif | 
| OLD | NEW |