aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-03-09 14:47:34 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-09 14:47:34 -0800
commit5671c5b9124f17d33bc14b6d347cdc6fe5d19dc8 (patch)
tree534c601a0a5f7d45cfc69d65485dc086f621cd24 /src/image
parent6ceeebd37a43d879c120b6ba100ae1febdd67a18 (diff)
SkImage now has makeShader to return sk_sp
Diffstat (limited to 'src/image')
-rw-r--r--src/image/SkImage.cpp12
-rw-r--r--src/image/SkImageShader.cpp8
-rw-r--r--src/image/SkImageShader.h3
3 files changed, 15 insertions, 8 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp
index 5e7cb07226..a41ac83d19 100644
--- a/src/image/SkImage.cpp
+++ b/src/image/SkImage.cpp
@@ -103,11 +103,17 @@ void SkImage::preroll(GrContext* ctx) const {
///////////////////////////////////////////////////////////////////////////////////////////////////
-SkShader* SkImage::newShader(SkShader::TileMode tileX,
- SkShader::TileMode tileY,
+sk_sp<SkShader> SkImage::makeShader(SkShader::TileMode tileX, SkShader::TileMode tileY,
+ const SkMatrix* localMatrix) const {
+ return SkImageShader::Make(this, tileX, tileY, localMatrix);
+}
+
+#ifdef SK_SUPPORT_LEGACY_CREATESHADER_PTR
+SkShader* SkImage::newShader(SkShader::TileMode tileX, SkShader::TileMode tileY,
const SkMatrix* localMatrix) const {
- return SkImageShader::Create(this, tileX, tileY, localMatrix);
+ return this->makeShader(tileX, tileY, localMatrix).release();
}
+#endif
SkData* SkImage::encode(SkImageEncoder::Type type, int quality) const {
SkBitmap bm;
diff --git a/src/image/SkImageShader.cpp b/src/image/SkImageShader.cpp
index b1bb3ab8f8..00c038ab88 100644
--- a/src/image/SkImageShader.cpp
+++ b/src/image/SkImageShader.cpp
@@ -28,7 +28,7 @@ SkFlattenable* SkImageShader::CreateProc(SkReadBuffer& buffer) {
if (!img) {
return nullptr;
}
- return new SkImageShader(img, tx, ty, &matrix);
+ return SkImageShader::Make(img, tx, ty, &matrix).release();
}
void SkImageShader::flatten(SkWriteBuffer& buffer) const {
@@ -51,12 +51,12 @@ SkShader::Context* SkImageShader::onCreateContext(const ContextRec& rec, void* s
SkBitmapProvider(fImage), rec, storage);
}
-SkShader* SkImageShader::Create(const SkImage* image, TileMode tx, TileMode ty,
- const SkMatrix* localMatrix) {
+sk_sp<SkShader> SkImageShader::Make(const SkImage* image, TileMode tx, TileMode ty,
+ const SkMatrix* localMatrix) {
if (!image) {
return nullptr;
}
- return new SkImageShader(image, tx, ty, localMatrix);
+ return sk_sp<SkShader>(new SkImageShader(image, tx, ty, localMatrix));
}
#ifndef SK_IGNORE_TO_STRING
diff --git a/src/image/SkImageShader.h b/src/image/SkImageShader.h
index 07b938d202..f466e618a0 100644
--- a/src/image/SkImageShader.h
+++ b/src/image/SkImageShader.h
@@ -13,7 +13,8 @@
class SkImageShader : public SkShader {
public:
- static SkShader* Create(const SkImage*, TileMode tx, TileMode ty, const SkMatrix* localMatrix);
+ static sk_sp<SkShader> Make(const SkImage*, TileMode tx, TileMode ty,
+ const SkMatrix* localMatrix);
bool isOpaque() const override;