diff options
author | Brian Salomon <bsalomon@google.com> | 2017-07-25 15:32:17 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-27 15:07:13 +0000 |
commit | 164f6ecb842f530017acb7ee814b2a55444f4462 (patch) | |
tree | de3efc65007b3d0ddf3b98728deb0d61681afc52 /src/effects/SkRRectsGaussianEdgeMaskFilter.cpp | |
parent | 57bc3ea6fae271756e294744a3174e1e667dffc6 (diff) |
Implement clone() for 4 additional GrFragmentProcessor subclasses
HighContrastFilterEffect
LumaColorFilterEffect
OverdrawFragmentProcessor
RRectsGaussianEdgeFP
Change-Id: Ie843e025e49dd46e3f75a5f79d399ddd3ceba5cd
Reviewed-on: https://skia-review.googlesource.com/26660
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/effects/SkRRectsGaussianEdgeMaskFilter.cpp')
-rw-r--r-- | src/effects/SkRRectsGaussianEdgeMaskFilter.cpp | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp b/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp index f5555d6240..98422902d6 100644 --- a/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp +++ b/src/effects/SkRRectsGaussianEdgeMaskFilter.cpp @@ -209,9 +209,22 @@ public: return sk_sp<GrFragmentProcessor>(new RRectsGaussianEdgeFP(first, second, radius)); } + const char* name() const override { return "RRectsGaussianEdgeFP"; } + + sk_sp<GrFragmentProcessor> clone() const override { + return sk_sp<GrFragmentProcessor>(new RRectsGaussianEdgeFP(*this)); + } + + const SkRRect& first() const { return fFirst; } + Mode firstMode() const { return fFirstMode; } + const SkRRect& second() const { return fSecond; } + Mode secondMode() const { return fSecondMode; } + SkScalar radius() const { return fRadius; } + +private: class GLSLRRectsGaussianEdgeFP : public GrGLSLFragmentProcessor { public: - GLSLRRectsGaussianEdgeFP() { } + GLSLRRectsGaussianEdgeFP() {} // This method emits code so that, for each shape, the distance from the edge is returned // in 'outputName' clamped to 0..1 with positive distance being towards the center of the @@ -447,15 +460,6 @@ public: GLSLRRectsGaussianEdgeFP::GenKey(*this, caps, b); } - const char* name() const override { return "RRectsGaussianEdgeFP"; } - - const SkRRect& first() const { return fFirst; } - Mode firstMode() const { return fFirstMode; } - const SkRRect& second() const { return fSecond; } - Mode secondMode() const { return fSecondMode; } - SkScalar radius() const { return fRadius; } - -private: RRectsGaussianEdgeFP(const SkRRect& first, const SkRRect& second, SkScalar radius) : INHERITED(kCompatibleWithCoverageAsAlpha_OptimizationFlag) , fFirst(first) @@ -466,6 +470,15 @@ private: fFirstMode = ComputeMode(fFirst); fSecondMode = ComputeMode(fSecond); } + RRectsGaussianEdgeFP(const RRectsGaussianEdgeFP& that) + : INHERITED(kCompatibleWithCoverageAsAlpha_OptimizationFlag) + , fFirst(that.fFirst) + , fFirstMode(that.fFirstMode) + , fSecond(that.fSecond) + , fSecondMode(that.fSecondMode) + , fRadius(that.fRadius) { + this->initClassID<RRectsGaussianEdgeFP>(); + } static Mode ComputeMode(const SkRRect& rr) { if (rr.isCircle()) { |