diff options
author | Brian Salomon <bsalomon@google.com> | 2017-07-28 07:34:05 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-28 11:54:47 +0000 |
commit | 3f6f965a5a65415c65fe9e64eb41896c66da771d (patch) | |
tree | 1de139167492fd077527517356bbf1f3298a9800 /src/gpu/effects/GrMatrixConvolutionEffect.cpp | |
parent | 71603cca8ec779bb3ad5ad18a3dc69e97910fb7c (diff) |
Implement clone for 6 additional GrFragmentProcessor subclasses.
GrMagnifierEffect
GrMorphologyEffect
GrBicubicEffect
GrGaussianConvolutionFragmentProcessor
GrMatrixConvolutionEffect
GrTextureDomainEffect
Bug: skia:
Change-Id: I69721b9b95346b365723e5ee21dff2dee8884466
Reviewed-on: https://skia-review.googlesource.com/27900
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/effects/GrMatrixConvolutionEffect.cpp')
-rw-r--r-- | src/gpu/effects/GrMatrixConvolutionEffect.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/gpu/effects/GrMatrixConvolutionEffect.cpp b/src/gpu/effects/GrMatrixConvolutionEffect.cpp index cb453fc941..46dc2d8cb9 100644 --- a/src/gpu/effects/GrMatrixConvolutionEffect.cpp +++ b/src/gpu/effects/GrMatrixConvolutionEffect.cpp @@ -178,6 +178,26 @@ GrMatrixConvolutionEffect::GrMatrixConvolutionEffect(sk_sp<GrTextureProxy> proxy fKernelOffset[1] = static_cast<float>(kernelOffset.y()); } +GrMatrixConvolutionEffect::GrMatrixConvolutionEffect(const GrMatrixConvolutionEffect& that) + : INHERITED(kNone_OptimizationFlags) + , fCoordTransform(that.fCoordTransform) + , fDomain(that.fDomain) + , fTextureSampler(that.fTextureSampler) + , fKernelSize(that.fKernelSize) + , fGain(that.fGain) + , fBias(that.fBias) + , fConvolveAlpha(that.fConvolveAlpha) { + this->initClassID<GrMatrixConvolutionEffect>(); + this->addCoordTransform(&fCoordTransform); + this->addTextureSampler(&fTextureSampler); + memcpy(fKernel, that.fKernel, sizeof(float) * fKernelSize.width() * fKernelSize.height()); + memcpy(fKernelOffset, that.fKernelOffset, sizeof(fKernelOffset)); +} + +sk_sp<GrFragmentProcessor> GrMatrixConvolutionEffect::clone() const { + return sk_sp<GrFragmentProcessor>(new GrMatrixConvolutionEffect(*this)); +} + void GrMatrixConvolutionEffect::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { GrGLMatrixConvolutionEffect::GenKey(*this, caps, b); @@ -227,7 +247,6 @@ static void fill_in_2D_gaussian_kernel(float* kernel, int width, int height, } } - // Static function to create a 2D convolution sk_sp<GrFragmentProcessor> GrMatrixConvolutionEffect::MakeGaussian( sk_sp<GrTextureProxy> proxy, |