From ae8c933ca89315c1256bcf23749b5ee5cbc0d53c Mon Sep 17 00:00:00 2001 From: robertphillips Date: Tue, 5 Apr 2016 15:09:00 -0700 Subject: Update SkMatrixImageFilter to sk_sp TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1858353002 Review URL: https://codereview.chromium.org/1858353002 --- src/core/SkImageFilter.cpp | 8 ++++---- src/core/SkMatrixImageFilter.cpp | 16 +++++++++------- src/core/SkMatrixImageFilter.h | 16 ++++++++++++---- 3 files changed, 25 insertions(+), 15 deletions(-) (limited to 'src/core') diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index 11a2f74c70..0e0df3625f 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -573,10 +573,10 @@ bool SkImageFilter::asFragmentProcessor(GrFragmentProcessor**, GrTexture*, return false; } -SkImageFilter* SkImageFilter::CreateMatrixFilter(const SkMatrix& matrix, - SkFilterQuality filterQuality, - SkImageFilter* input) { - return SkMatrixImageFilter::Create(matrix, filterQuality, input); +sk_sp SkImageFilter::MakeMatrixFilter(const SkMatrix& matrix, + SkFilterQuality filterQuality, + sk_sp input) { + return SkMatrixImageFilter::Make(matrix, filterQuality, std::move(input)); } sk_sp SkImageFilter::makeWithLocalMatrix(const SkMatrix& matrix) const { diff --git a/src/core/SkMatrixImageFilter.cpp b/src/core/SkMatrixImageFilter.cpp index 70bc81af43..6cd79f3f4a 100644 --- a/src/core/SkMatrixImageFilter.cpp +++ b/src/core/SkMatrixImageFilter.cpp @@ -16,16 +16,18 @@ SkMatrixImageFilter::SkMatrixImageFilter(const SkMatrix& transform, SkFilterQuality filterQuality, - SkImageFilter* input) - : INHERITED(1, &input) + sk_sp input) + : INHERITED(&input, 1, nullptr) , fTransform(transform) , fFilterQuality(filterQuality) { } -SkMatrixImageFilter* SkMatrixImageFilter::Create(const SkMatrix& transform, - SkFilterQuality filterQuality, - SkImageFilter* input) { - return new SkMatrixImageFilter(transform, filterQuality, input); +sk_sp SkMatrixImageFilter::Make(const SkMatrix& transform, + SkFilterQuality filterQuality, + sk_sp input) { + return sk_sp(new SkMatrixImageFilter(transform, + filterQuality, + std::move(input))); } sk_sp SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) { @@ -33,7 +35,7 @@ sk_sp SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) { SkMatrix matrix; buffer.readMatrix(&matrix); SkFilterQuality quality = static_cast(buffer.readInt()); - return sk_sp(Create(matrix, quality, common.getInput(0).get())); + return Make(matrix, quality, common.getInput(0)); } void SkMatrixImageFilter::flatten(SkWriteBuffer& buffer) const { diff --git a/src/core/SkMatrixImageFilter.h b/src/core/SkMatrixImageFilter.h index d7745668c4..e02541c12e 100644 --- a/src/core/SkMatrixImageFilter.h +++ b/src/core/SkMatrixImageFilter.h @@ -25,19 +25,27 @@ public: * passed to filterImage() is used instead. */ - static SkMatrixImageFilter* Create(const SkMatrix& transform, - SkFilterQuality filterQuality, - SkImageFilter* input = nullptr); + static sk_sp Make(const SkMatrix& transform, + SkFilterQuality filterQuality, + sk_sp input); SkRect computeFastBounds(const SkRect&) const override; SK_TO_STRING_OVERRIDE() SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMatrixImageFilter) +#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR + static SkImageFilter* Create(const SkMatrix& transform, + SkFilterQuality filterQuality, + SkImageFilter* input = nullptr) { + return Make(transform, filterQuality, sk_ref_sp(input)).release(); + } +#endif + protected: SkMatrixImageFilter(const SkMatrix& transform, SkFilterQuality, - SkImageFilter* input); + sk_sp input); void flatten(SkWriteBuffer&) const override; sk_sp onFilterImage(SkSpecialImage* source, const Context&, -- cgit v1.2.3