aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkImageGenerator.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-02-15 15:14:16 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-15 20:51:28 +0000
commit185130c643f0f6b20dcf14c200074748be282a7e (patch)
tree049a9162c7ed7c298a4966000b9aa805f75282ad /src/core/SkImageGenerator.cpp
parenteb62829a83a0a4f4fdd1230a3c08140e38052602 (diff)
return and take SkImageGenerator as unique_ptr
BUG=skia: Change-Id: I4bc11042dd1dbf1eabd40af206027bc65acc3186 Reviewed-on: https://skia-review.googlesource.com/8444 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/core/SkImageGenerator.cpp')
-rw-r--r--src/core/SkImageGenerator.cpp47
1 files changed, 40 insertions, 7 deletions
diff --git a/src/core/SkImageGenerator.cpp b/src/core/SkImageGenerator.cpp
index b815fbfb77..d4d42bad5f 100644
--- a/src/core/SkImageGenerator.cpp
+++ b/src/core/SkImageGenerator.cpp
@@ -174,24 +174,57 @@ bool SkImageGenerator::tryGenerateBitmap(SkBitmap* bitmap, const SkImageInfo& in
#include "SkGraphics.h"
-static SkGraphics::ImageGeneratorFromEncodedFactory gFactory;
+static SkGraphics::ImageGeneratorFromEncodedDataFactory gFactory;
+SkGraphics::ImageGeneratorFromEncodedDataFactory
+SkGraphics::SetImageGeneratorFromEncodedDataFactory(ImageGeneratorFromEncodedDataFactory factory)
+{
+ ImageGeneratorFromEncodedDataFactory prev = gFactory;
+ gFactory = factory;
+ return prev;
+}
+
+#ifdef SK_SUPPORT_BARE_PTR_IMAGEGENERATOR
+static SkGraphics::ImageGeneratorFromEncodedFactory gLegacyFactory;
SkGraphics::ImageGeneratorFromEncodedFactory
SkGraphics::SetImageGeneratorFromEncodedFactory(ImageGeneratorFromEncodedFactory factory)
{
- ImageGeneratorFromEncodedFactory prev = gFactory;
- gFactory = factory;
+ ImageGeneratorFromEncodedFactory prev = gLegacyFactory;
+ gLegacyFactory = factory;
return prev;
}
+#endif
-SkImageGenerator* SkImageGenerator::NewFromEncoded(SkData* data) {
- if (nullptr == data) {
+std::unique_ptr<SkImageGenerator> SkImageGenerator::MakeFromEncoded(sk_sp<SkData> data) {
+ if (!data) {
return nullptr;
}
if (gFactory) {
- if (SkImageGenerator* generator = gFactory(data)) {
+ if (std::unique_ptr<SkImageGenerator> generator = gFactory(data)) {
return generator;
}
}
- return SkImageGenerator::NewFromEncodedImpl(data);
+#ifdef SK_SUPPORT_BARE_PTR_IMAGEGENERATOR
+ if (gLegacyFactory) {
+ if (SkImageGenerator* generator = gLegacyFactory(data.get())) {
+ return std::unique_ptr<SkImageGenerator>(generator);
+ }
+ }
+#endif
+ return SkImageGenerator::MakeFromEncodedImpl(std::move(data));
+}
+
+#ifdef SK_SUPPORT_BARE_PTR_IMAGEGENERATOR
+#include "SkPicture.h"
+
+SkImageGenerator* SkImageGenerator::NewFromPicture(const SkISize& size, const SkPicture* picture,
+ const SkMatrix* matrix, const SkPaint* paint,
+ SkImage::BitDepth depth,
+ sk_sp<SkColorSpace> cs) {
+ return MakeFromPicture(size, sk_ref_sp(const_cast<SkPicture*>(picture)), matrix, paint,
+ depth, std::move(cs)).release();
+}
+SkImageGenerator* SkImageGenerator::NewFromEncoded(SkData* data) {
+ return MakeFromEncoded(sk_ref_sp(data)).release();
}
+#endif