From 6cc6ae7573fdfd0af1f9488349b1d2bb88c1b01d Mon Sep 17 00:00:00 2001 From: Matt Sarett Date: Tue, 18 Apr 2017 18:29:12 -0400 Subject: SkColorSpaceXformer: Add SkShader::makeColorSpace() Just a refactor - reimplements the shader xforms with makeColorSpace(). 11 gms have diffs. Some are down to floating precision. The old implementation would go float->fixed->float in some cases. Others are due to improvements with gradient shaders inside local matrix shaders. Bug: skia:6516 Change-Id: I424406990c5c58a47833cf4c9ef146cd3ea6c37e Reviewed-on: https://skia-review.googlesource.com/13769 Reviewed-by: Mike Klein Commit-Queue: Matt Sarett --- src/core/SkLocalMatrixShader.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/core/SkLocalMatrixShader.h') diff --git a/src/core/SkLocalMatrixShader.h b/src/core/SkLocalMatrixShader.h index cba140906b..97986a6332 100644 --- a/src/core/SkLocalMatrixShader.h +++ b/src/core/SkLocalMatrixShader.h @@ -14,6 +14,7 @@ class GrFragmentProcessor; class SkArenaAlloc; +class SkColorSpaceXformer; class SkLocalMatrixShader : public SkShader { public: @@ -50,6 +51,10 @@ protected: bool onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*, const SkMatrix&, const SkPaint&, const SkMatrix*) const override; + sk_sp onMakeColorSpace(SkColorSpaceXformer* xformer) const override { + return fProxyShader->makeColorSpace(xformer)->makeWithLocalMatrix(this->getLocalMatrix()); + } + #ifdef SK_SUPPORT_LEGACY_SHADER_ISABITMAP bool onIsABitmap(SkBitmap* bitmap, SkMatrix* matrix, TileMode* mode) const override { return fProxyShader->isABitmap(bitmap, matrix, mode); -- cgit v1.2.3