aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--dm/DMSrcSink.cpp3
-rw-r--r--include/ports/SkImageGeneratorCG.h (renamed from src/ports/SkImageGeneratorCG.h)10
-rw-r--r--include/ports/SkImageGeneratorWIC.h (renamed from src/ports/SkImageGeneratorWIC.h)11
-rw-r--r--src/ports/SkImageGeneratorCG.cpp6
-rw-r--r--src/ports/SkImageGeneratorWIC.cpp12
-rw-r--r--tests/ImageGeneratorTest.cpp14
6 files changed, 26 insertions, 30 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index baa98a0784..9a16e89b07 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -954,9 +954,8 @@ Error ImageGenSrc::draw(SkCanvas* canvas) const {
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
gen = SkImageGeneratorCG::MakeFromEncodedCG(encoded);
#elif defined(SK_BUILD_FOR_WIN)
- gen.reset(SkImageGeneratorWIC::NewFromEncodedWIC(encoded.get()));
+ gen = SkImageGeneratorWIC::MakeFromEncodedWIC(encoded);
#endif
-
if (!gen) {
return "Could not create platform image generator.";
}
diff --git a/src/ports/SkImageGeneratorCG.h b/include/ports/SkImageGeneratorCG.h
index ee91c845fc..bdf445ae15 100644
--- a/src/ports/SkImageGeneratorCG.h
+++ b/include/ports/SkImageGeneratorCG.h
@@ -14,16 +14,8 @@
#include "SkImageGenerator.h"
#include "SkTemplates.h"
-class SkImageGeneratorCG : public SkImageGenerator {
+class SK_API SkImageGeneratorCG : public SkImageGenerator {
public:
-#ifdef SK_LEGACY_NEW_FROM_ENCODED_CG
- /*
- * Refs the data if an image generator can be returned. Otherwise does
- * not affect the data.
- */
- static SkImageGenerator* NewFromEncodedCG(SkData* data);
-#endif
-
static std::unique_ptr<SkImageGenerator> MakeFromEncodedCG(sk_sp<SkData>);
protected:
diff --git a/src/ports/SkImageGeneratorWIC.h b/include/ports/SkImageGeneratorWIC.h
index 5da68f2ea7..0ea0305a34 100644
--- a/src/ports/SkImageGeneratorWIC.h
+++ b/include/ports/SkImageGeneratorWIC.h
@@ -30,13 +30,9 @@
* For more information on initializing COM, please see:
* https://msdn.microsoft.com/en-us/library/windows/desktop/ff485844.aspx
*/
-class SkImageGeneratorWIC : public SkImageGenerator {
+class SK_API SkImageGeneratorWIC : public SkImageGenerator {
public:
- /*
- * Refs the data if an image generator can be returned. Otherwise does
- * not affect the data.
- */
- static SkImageGenerator* NewFromEncodedWIC(SkData* data);
+ static std::unique_ptr<SkImageGenerator> MakeFromEncodedWIC(sk_sp<SkData>);
protected:
sk_sp<SkData> onRefEncodedData() override;
@@ -48,10 +44,9 @@ private:
/*
* Takes ownership of the imagingFactory
* Takes ownership of the imageSource
- * Refs the data
*/
SkImageGeneratorWIC(const SkImageInfo& info, IWICImagingFactory* imagingFactory,
- IWICBitmapSource* imageSource, SkData* data);
+ IWICBitmapSource* imageSource, sk_sp<SkData>);
SkTScopedComPtr<IWICImagingFactory> fImagingFactory;
SkTScopedComPtr<IWICBitmapSource> fImageSource;
diff --git a/src/ports/SkImageGeneratorCG.cpp b/src/ports/SkImageGeneratorCG.cpp
index 743b218254..b1058c6c9d 100644
--- a/src/ports/SkImageGeneratorCG.cpp
+++ b/src/ports/SkImageGeneratorCG.cpp
@@ -29,12 +29,6 @@ static CGImageSourceRef data_to_CGImageSrc(SkData* data) {
return imageSrc;
}
-#ifdef SK_LEGACY_NEW_FROM_ENCODED_CG
-SkImageGenerator* SkImageGeneratorCG::NewFromEncodedCG(SkData* data) {
- return MakeFromEncodedCG(sk_ref_sp(data)).release();
-}
-#endif
-
std::unique_ptr<SkImageGenerator> SkImageGeneratorCG::MakeFromEncodedCG(sk_sp<SkData> data) {
CGImageSourceRef imageSrc = data_to_CGImageSrc(data.get());
if (!imageSrc) {
diff --git a/src/ports/SkImageGeneratorWIC.cpp b/src/ports/SkImageGeneratorWIC.cpp
index 9aa89733d8..2726f886a2 100644
--- a/src/ports/SkImageGeneratorWIC.cpp
+++ b/src/ports/SkImageGeneratorWIC.cpp
@@ -18,7 +18,7 @@
#undef CLSID_WICImagingFactory
#endif
-SkImageGenerator* SkImageGeneratorWIC::NewFromEncodedWIC(SkData* data) {
+std::unique_ptr<SkImageGenerator> SkImageGeneratorWIC::MakeFromEncodedWIC(sk_sp<SkData> data) {
// Create Windows Imaging Component ImagingFactory.
SkTScopedComPtr<IWICImagingFactory> imagingFactory;
HRESULT hr = CoCreateInstance(CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER,
@@ -31,7 +31,7 @@ SkImageGenerator* SkImageGeneratorWIC::NewFromEncodedWIC(SkData* data) {
SkTScopedComPtr<IStream> iStream;
// Note that iStream will take ownership of the new memory stream because
// we set |deleteOnRelease| to true.
- hr = SkIStream::CreateFromSkStream(new SkMemoryStream(sk_ref_sp(data)), true, &iStream);
+ hr = SkIStream::CreateFromSkStream(new SkMemoryStream(data), true, &iStream);
if (FAILED(hr)) {
return nullptr;
}
@@ -121,15 +121,17 @@ SkImageGenerator* SkImageGeneratorWIC::NewFromEncodedWIC(SkData* data) {
// FIXME: If we change the implementation to handle swizzling ourselves,
// we can support more output formats.
SkImageInfo info = SkImageInfo::MakeS32(width, height, alphaType);
- return new SkImageGeneratorWIC(info, imagingFactory.release(), imageSource.release(), data);
+ return std::unique_ptr<SkImageGenerator>(
+ new SkImageGeneratorWIC(info, imagingFactory.release(), imageSource.release(),
+ std::move(data)));
}
SkImageGeneratorWIC::SkImageGeneratorWIC(const SkImageInfo& info,
- IWICImagingFactory* imagingFactory, IWICBitmapSource* imageSource, SkData* data)
+ IWICImagingFactory* imagingFactory, IWICBitmapSource* imageSource, sk_sp<SkData> data)
: INHERITED(info)
, fImagingFactory(imagingFactory)
, fImageSource(imageSource)
- , fData(SkRef(data))
+ , fData(std::move(data))
{}
sk_sp<SkData> SkImageGeneratorWIC::onRefEncodedData() {
diff --git a/tests/ImageGeneratorTest.cpp b/tests/ImageGeneratorTest.cpp
index 574c8e8728..0bddcd939d 100644
--- a/tests/ImageGeneratorTest.cpp
+++ b/tests/ImageGeneratorTest.cpp
@@ -12,6 +12,12 @@
#include "SkImageInfoPriv.h"
#include "Test.h"
+#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
+ #include "SkImageGeneratorCG.h"
+#elif defined(SK_BUILD_FOR_WIN)
+ #include "SkImageGeneratorWIC.h"
+#endif
+
static bool gMyFactoryWasCalled;
static std::unique_ptr<SkImageGenerator> my_factory(sk_sp<SkData>) {
@@ -36,6 +42,14 @@ static void test_imagegenerator_factory(skiatest::Reporter* reporter) {
gen = SkImageGenerator::MakeFromEncoded(data);
REPORTER_ASSERT(reporter, nullptr == gen);
REPORTER_ASSERT(reporter, gMyFactoryWasCalled);
+
+ // This just verifies that the signatures match.
+#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
+ SkGraphics::SetImageGeneratorFromEncodedDataFactory(SkImageGeneratorCG::MakeFromEncodedCG);
+#elif defined(SK_BUILD_FOR_WIN)
+ SkGraphics::SetImageGeneratorFromEncodedDataFactory(SkImageGeneratorWIC::MakeFromEncodedWIC);
+#endif
+
SkGraphics::SetImageGeneratorFromEncodedDataFactory(prev);
}