aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2016-04-05 15:09:00 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-05 15:09:00 -0700
commitae8c933ca89315c1256bcf23749b5ee5cbc0d53c (patch)
tree2a6f8810f638f8ffb5c5c905d434dee933d3f60b /src/core
parent77304a5b76858acf9f1bbdabd1b2014c40b399ec (diff)
Update SkMatrixImageFilter to sk_sp
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkImageFilter.cpp8
-rw-r--r--src/core/SkMatrixImageFilter.cpp16
-rw-r--r--src/core/SkMatrixImageFilter.h16
3 files changed, 25 insertions, 15 deletions
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> SkImageFilter::MakeMatrixFilter(const SkMatrix& matrix,
+ SkFilterQuality filterQuality,
+ sk_sp<SkImageFilter> input) {
+ return SkMatrixImageFilter::Make(matrix, filterQuality, std::move(input));
}
sk_sp<SkImageFilter> 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<SkImageFilter> 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<SkImageFilter> SkMatrixImageFilter::Make(const SkMatrix& transform,
+ SkFilterQuality filterQuality,
+ sk_sp<SkImageFilter> input) {
+ return sk_sp<SkImageFilter>(new SkMatrixImageFilter(transform,
+ filterQuality,
+ std::move(input)));
}
sk_sp<SkFlattenable> SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) {
@@ -33,7 +35,7 @@ sk_sp<SkFlattenable> SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) {
SkMatrix matrix;
buffer.readMatrix(&matrix);
SkFilterQuality quality = static_cast<SkFilterQuality>(buffer.readInt());
- return sk_sp<SkImageFilter>(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<SkImageFilter> Make(const SkMatrix& transform,
+ SkFilterQuality filterQuality,
+ sk_sp<SkImageFilter> 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<SkImageFilter>(input)).release();
+ }
+#endif
+
protected:
SkMatrixImageFilter(const SkMatrix& transform,
SkFilterQuality,
- SkImageFilter* input);
+ sk_sp<SkImageFilter> input);
void flatten(SkWriteBuffer&) const override;
sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,