| 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 #include "SkDisplacementMapEffect.h" | 8 #include "SkDisplacementMapEffect.h" |
| 9 | 9 |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 default: | 156 default: |
| 157 break; | 157 break; |
| 158 } | 158 } |
| 159 return false; | 159 return false; |
| 160 } | 160 } |
| 161 | 161 |
| 162 } // end namespace | 162 } // end namespace |
| 163 | 163 |
| 164 /////////////////////////////////////////////////////////////////////////////// | 164 /////////////////////////////////////////////////////////////////////////////// |
| 165 | 165 |
| 166 SkImageFilter* SkDisplacementMapEffect::Create(ChannelSelectorType xChannelSelec
tor, | 166 sk_sp<SkImageFilter> SkDisplacementMapEffect::Make(ChannelSelectorType xChannelS
elector, |
| 167 ChannelSelectorType yChannelSelec
tor, | 167 ChannelSelectorType yChannelS
elector, |
| 168 SkScalar scale, | 168 SkScalar scale, |
| 169 SkImageFilter* displacement, | 169 sk_sp<SkImageFilter> displace
ment, |
| 170 SkImageFilter* color, | 170 sk_sp<SkImageFilter> color, |
| 171 const CropRect* cropRect) { | 171 const CropRect* cropRect) { |
| 172 if (!channel_selector_type_is_valid(xChannelSelector) || | 172 if (!channel_selector_type_is_valid(xChannelSelector) || |
| 173 !channel_selector_type_is_valid(yChannelSelector)) { | 173 !channel_selector_type_is_valid(yChannelSelector)) { |
| 174 return nullptr; | 174 return nullptr; |
| 175 } | 175 } |
| 176 | 176 |
| 177 SkImageFilter* inputs[2] = { displacement, color }; | 177 sk_sp<SkImageFilter> inputs[2] = { std::move(displacement), std::move(color)
}; |
| 178 return new SkDisplacementMapEffect(xChannelSelector, yChannelSelector, scale
, inputs, cropRect); | 178 return sk_sp<SkImageFilter>(new SkDisplacementMapEffect(xChannelSelector, |
| 179 yChannelSelector, |
| 180 scale, inputs, cropR
ect)); |
| 179 } | 181 } |
| 180 | 182 |
| 181 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel
ector, | 183 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel
ector, |
| 182 ChannelSelectorType yChannelSel
ector, | 184 ChannelSelectorType yChannelSel
ector, |
| 183 SkScalar scale, | 185 SkScalar scale, |
| 184 SkImageFilter* inputs[2], | 186 sk_sp<SkImageFilter> inputs[2], |
| 185 const CropRect* cropRect) | 187 const CropRect* cropRect) |
| 186 : INHERITED(2, inputs, cropRect) | 188 : INHERITED(inputs, 2, cropRect) |
| 187 , fXChannelSelector(xChannelSelector) | 189 , fXChannelSelector(xChannelSelector) |
| 188 , fYChannelSelector(yChannelSelector) | 190 , fYChannelSelector(yChannelSelector) |
| 189 , fScale(scale) { | 191 , fScale(scale) { |
| 190 } | 192 } |
| 191 | 193 |
| 192 SkDisplacementMapEffect::~SkDisplacementMapEffect() { | 194 SkDisplacementMapEffect::~SkDisplacementMapEffect() { |
| 193 } | 195 } |
| 194 | 196 |
| 195 sk_sp<SkFlattenable> SkDisplacementMapEffect::CreateProc(SkReadBuffer& buffer) { | 197 sk_sp<SkFlattenable> SkDisplacementMapEffect::CreateProc(SkReadBuffer& buffer) { |
| 196 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 2); | 198 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 2); |
| 197 ChannelSelectorType xsel = (ChannelSelectorType)buffer.readInt(); | 199 ChannelSelectorType xsel = (ChannelSelectorType)buffer.readInt(); |
| 198 ChannelSelectorType ysel = (ChannelSelectorType)buffer.readInt(); | 200 ChannelSelectorType ysel = (ChannelSelectorType)buffer.readInt(); |
| 199 SkScalar scale = buffer.readScalar(); | 201 SkScalar scale = buffer.readScalar(); |
| 200 return sk_sp<SkFlattenable>(Create(xsel, ysel, scale, common.getInput(0).get
(), | 202 return Make(xsel, ysel, scale, |
| 201 common.getInput(1).get(), &common.cropRec
t())); | 203 common.getInput(0), common.getInput(1), |
| 204 &common.cropRect()); |
| 202 } | 205 } |
| 203 | 206 |
| 204 void SkDisplacementMapEffect::flatten(SkWriteBuffer& buffer) const { | 207 void SkDisplacementMapEffect::flatten(SkWriteBuffer& buffer) const { |
| 205 this->INHERITED::flatten(buffer); | 208 this->INHERITED::flatten(buffer); |
| 206 buffer.writeInt((int) fXChannelSelector); | 209 buffer.writeInt((int) fXChannelSelector); |
| 207 buffer.writeInt((int) fYChannelSelector); | 210 buffer.writeInt((int) fYChannelSelector); |
| 208 buffer.writeScalar(fScale); | 211 buffer.writeScalar(fScale); |
| 209 } | 212 } |
| 210 | 213 |
| 211 #if SK_SUPPORT_GPU | 214 #if SK_SUPPORT_GPU |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 void GrGLDisplacementMapEffect::GenKey(const GrProcessor& proc, | 628 void GrGLDisplacementMapEffect::GenKey(const GrProcessor& proc, |
| 626 const GrGLSLCaps&, GrProcessorKeyBuilder*
b) { | 629 const GrGLSLCaps&, GrProcessorKeyBuilder*
b) { |
| 627 const GrDisplacementMapEffect& displacementMap = proc.cast<GrDisplacementMap
Effect>(); | 630 const GrDisplacementMapEffect& displacementMap = proc.cast<GrDisplacementMap
Effect>(); |
| 628 | 631 |
| 629 uint32_t xKey = displacementMap.xChannelSelector(); | 632 uint32_t xKey = displacementMap.xChannelSelector(); |
| 630 uint32_t yKey = displacementMap.yChannelSelector() << kChannelSelectorKeyBit
s; | 633 uint32_t yKey = displacementMap.yChannelSelector() << kChannelSelectorKeyBit
s; |
| 631 | 634 |
| 632 b->add32(xKey | yKey); | 635 b->add32(xKey | yKey); |
| 633 } | 636 } |
| 634 #endif | 637 #endif |
| OLD | NEW |