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 #include "SkReadBuffer.h" | 9 #include "SkReadBuffer.h" |
10 #include "SkWriteBuffer.h" | 10 #include "SkWriteBuffer.h" |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 SkScalar scale, | 166 SkScalar scale, |
167 SkImageFilter* displace
ment, | 167 SkImageFilter* displace
ment, |
168 SkImageFilter* color, | 168 SkImageFilter* color, |
169 const CropRect* cropRec
t) { | 169 const CropRect* cropRec
t) { |
170 if (!channel_selector_type_is_valid(xChannelSelector) || | 170 if (!channel_selector_type_is_valid(xChannelSelector) || |
171 !channel_selector_type_is_valid(yChannelSelector)) { | 171 !channel_selector_type_is_valid(yChannelSelector)) { |
172 return NULL; | 172 return NULL; |
173 } | 173 } |
174 | 174 |
175 SkImageFilter* inputs[2] = { displacement, color }; | 175 SkImageFilter* inputs[2] = { displacement, color }; |
176 return SkNEW_ARGS(SkDisplacementMapEffect, (xChannelSelector, yChannelSelect
or, scale, | 176 return new SkDisplacementMapEffect(xChannelSelector, yChannelSelector, scale
, inputs, cropRect); |
177 inputs, cropRect)); | |
178 } | 177 } |
179 | 178 |
180 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel
ector, | 179 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel
ector, |
181 ChannelSelectorType yChannelSel
ector, | 180 ChannelSelectorType yChannelSel
ector, |
182 SkScalar scale, | 181 SkScalar scale, |
183 SkImageFilter* inputs[2], | 182 SkImageFilter* inputs[2], |
184 const CropRect* cropRect) | 183 const CropRect* cropRect) |
185 : INHERITED(2, inputs, cropRect) | 184 : INHERITED(2, inputs, cropRect) |
186 , fXChannelSelector(xChannelSelector) | 185 , fXChannelSelector(xChannelSelector) |
187 , fYChannelSelector(yChannelSelector) | 186 , fYChannelSelector(yChannelSelector) |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 /////////////////////////////////////////////////////////////////////////////// | 326 /////////////////////////////////////////////////////////////////////////////// |
328 | 327 |
329 class GrDisplacementMapEffect : public GrFragmentProcessor { | 328 class GrDisplacementMapEffect : public GrFragmentProcessor { |
330 public: | 329 public: |
331 static GrFragmentProcessor* Create( | 330 static GrFragmentProcessor* Create( |
332 GrProcessorDataManager* procDataManager, | 331 GrProcessorDataManager* procDataManager, |
333 SkDisplacementMapEffect::ChannelSelectorType xChannelSelector, | 332 SkDisplacementMapEffect::ChannelSelectorType xChannelSelector, |
334 SkDisplacementMapEffect::ChannelSelectorType yChannelSelector, SkVec
tor scale, | 333 SkDisplacementMapEffect::ChannelSelectorType yChannelSelector, SkVec
tor scale, |
335 GrTexture* displacement, const SkMatrix& offsetMatrix, GrTexture* co
lor, | 334 GrTexture* displacement, const SkMatrix& offsetMatrix, GrTexture* co
lor, |
336 const SkISize& colorDimensions) { | 335 const SkISize& colorDimensions) { |
337 return SkNEW_ARGS(GrDisplacementMapEffect, (procDataManager, | 336 return new GrDisplacementMapEffect(procDataManager, xChannelSelector, yC
hannelSelector, |
338 xChannelSelector, | 337 scale, displacement, offsetMatrix, co
lor, |
339 yChannelSelector, | 338 colorDimensions); |
340 scale, | |
341 displacement, | |
342 offsetMatrix, | |
343 color, | |
344 colorDimensions)); | |
345 } | 339 } |
346 | 340 |
347 virtual ~GrDisplacementMapEffect(); | 341 virtual ~GrDisplacementMapEffect(); |
348 | 342 |
349 SkDisplacementMapEffect::ChannelSelectorType xChannelSelector() const | 343 SkDisplacementMapEffect::ChannelSelectorType xChannelSelector() const |
350 { return fXChannelSelector; } | 344 { return fXChannelSelector; } |
351 SkDisplacementMapEffect::ChannelSelectorType yChannelSelector() const | 345 SkDisplacementMapEffect::ChannelSelectorType yChannelSelector() const |
352 { return fYChannelSelector; } | 346 { return fYChannelSelector; } |
353 const SkVector& scale() const { return fScale; } | 347 const SkVector& scale() const { return fScale; } |
354 | 348 |
355 const char* name() const override { return "DisplacementMap"; } | 349 const char* name() const override { return "DisplacementMap"; } |
356 const GrTextureDomain& domain() const { return fDomain; } | 350 const GrTextureDomain& domain() const { return fDomain; } |
357 | 351 |
358 private: | 352 private: |
359 GrGLFragmentProcessor* onCreateGLInstance() const override { | 353 GrGLFragmentProcessor* onCreateGLInstance() const override { |
360 return SkNEW_ARGS(GrGLDisplacementMapEffect, (*this)); | 354 return new GrGLDisplacementMapEffect(*this); |
361 } | 355 } |
362 | 356 |
363 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps, | 357 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps, |
364 GrProcessorKeyBuilder* b) const override { | 358 GrProcessorKeyBuilder* b) const override { |
365 GrGLDisplacementMapEffect::GenKey(*this, caps, b); | 359 GrGLDisplacementMapEffect::GenKey(*this, caps, b); |
366 } | 360 } |
367 | 361 |
368 bool onIsEqual(const GrFragmentProcessor&) const override; | 362 bool onIsEqual(const GrFragmentProcessor&) const override; |
369 | 363 |
370 void onComputeInvariantOutput(GrInvariantOutput* inout) const override; | 364 void onComputeInvariantOutput(GrInvariantOutput* inout) const override; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 const GrGLSLCaps&, GrProcessorKeyBuilder*
b) { | 633 const GrGLSLCaps&, GrProcessorKeyBuilder*
b) { |
640 const GrDisplacementMapEffect& displacementMap = proc.cast<GrDisplacementMap
Effect>(); | 634 const GrDisplacementMapEffect& displacementMap = proc.cast<GrDisplacementMap
Effect>(); |
641 | 635 |
642 uint32_t xKey = displacementMap.xChannelSelector(); | 636 uint32_t xKey = displacementMap.xChannelSelector(); |
643 uint32_t yKey = displacementMap.yChannelSelector() << kChannelSelectorKeyBit
s; | 637 uint32_t yKey = displacementMap.yChannelSelector() << kChannelSelectorKeyBit
s; |
644 | 638 |
645 b->add32(xKey | yKey); | 639 b->add32(xKey | yKey); |
646 } | 640 } |
647 #endif | 641 #endif |
648 | 642 |
OLD | NEW |