Index: src/core/SkShader.cpp |
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp |
index 75f527bff3f1d6f3db531c2dd941f4e9c8ff2a77..7b322fb6272e0f9017005191f3a3a54f235549a5 100644 |
--- a/src/core/SkShader.cpp |
+++ b/src/core/SkShader.cpp |
@@ -229,18 +229,18 @@ SkShader* SkShader::refAsALocalMatrixShader(SkMatrix*) const { |
return nullptr; |
} |
-SkShader* SkShader::CreateEmptyShader() { return new SkEmptyShader; } |
+sk_sp<SkShader> SkShader::MakeEmptyShader() { return sk_make_sp<SkEmptyShader>(); } |
-SkShader* SkShader::CreateColorShader(SkColor color) { return new SkColorShader(color); } |
+sk_sp<SkShader> SkShader::MakeColorShader(SkColor color) { return sk_make_sp<SkColorShader>(color); } |
-SkShader* SkShader::CreateBitmapShader(const SkBitmap& src, TileMode tmx, TileMode tmy, |
- const SkMatrix* localMatrix) { |
- return SkCreateBitmapShader(src, tmx, tmy, localMatrix, nullptr); |
+sk_sp<SkShader> SkShader::MakeBitmapShader(const SkBitmap& src, TileMode tmx, TileMode tmy, |
+ const SkMatrix* localMatrix) { |
+ return SkMakeBitmapShader(src, tmx, tmy, localMatrix, nullptr); |
} |
-SkShader* SkShader::CreatePictureShader(const SkPicture* src, TileMode tmx, TileMode tmy, |
- const SkMatrix* localMatrix, const SkRect* tile) { |
- return SkPictureShader::Create(src, tmx, tmy, localMatrix, tile); |
+sk_sp<SkShader> SkShader::MakePictureShader(sk_sp<const SkPicture> src, TileMode tmx, TileMode tmy, |
+ const SkMatrix* localMatrix, const SkRect* tile) { |
+ return SkPictureShader::Make(std::move(src), tmx, tmy, localMatrix, tile); |
} |
#ifndef SK_IGNORE_TO_STRING |
@@ -362,7 +362,7 @@ void SkColorShader::toString(SkString* str) const { |
/////////////////////////////////////////////////////////////////////////////// |
SkFlattenable* SkEmptyShader::CreateProc(SkReadBuffer&) { |
- return SkShader::CreateEmptyShader(); |
+ return SkShader::MakeEmptyShader().release(); |
} |
#ifndef SK_IGNORE_TO_STRING |
@@ -376,3 +376,18 @@ void SkEmptyShader::toString(SkString* str) const { |
str->append(")"); |
} |
#endif |
+ |
+/////////////////////////////////////////////////////////////////////////////////////////////////// |
+ |
+#ifdef SK_SUPPORT_LEGACY_CREATESHADER_PTR |
+SkShader* SkShader::CreateComposeShader(SkShader* dst, SkShader* src, SkXfermode::Mode mode) { |
+ return MakeComposeShader(sk_ref_sp(dst), sk_ref_sp(src), mode).release(); |
+} |
+SkShader* SkShader::CreateComposeShader(SkShader* dst, SkShader* src, SkXfermode* xfer) { |
+ return MakeComposeShader(sk_ref_sp(dst), sk_ref_sp(src), xfer).release(); |
+} |
+SkShader* SkShader::CreatePictureShader(const SkPicture* src, TileMode tmx, TileMode tmy, |
+ const SkMatrix* localMatrix, const SkRect* tile) { |
+ return MakePictureShader(sk_ref_sp(src), tmx, tmy, localMatrix, tile).release(); |
+} |
+#endif |