aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports
diff options
context:
space:
mode:
authorGravatar Leon Scroggins III <scroggo@google.com>2018-06-25 14:01:29 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-26 17:30:52 +0000
commita57488a1f5c14c2114c57880b85c1bbc90024973 (patch)
tree7e811b7928e098560b8a8ebab12c3da960b5efc6 /src/ports
parent6a284b771632f547b8a2d31115d3df4601c53228 (diff)
Expose public factories for platform decoders
Bug: skia:8076 Move SkImageGeneratorCG and SkImageGeneratorWIC to include/ports/, and make them SK_API. Remove SkImageGeneratorCG::NewFromEncodedCG. No known clients are using it, and it was a private API in src/. There is already a MakeFromEncodedCG to replace it. Similarly, switch WIC from New to Make. Add a compile test for using them with SetImageGeneratorFromEncodedDataFactory. Change-Id: I897eb7a887b3736a6c614a68e38f38b6a1942cf1 Reviewed-on: https://skia-review.googlesource.com/137387 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/ports')
-rw-r--r--src/ports/SkImageGeneratorCG.cpp6
-rw-r--r--src/ports/SkImageGeneratorCG.h49
-rw-r--r--src/ports/SkImageGeneratorWIC.cpp12
-rw-r--r--src/ports/SkImageGeneratorWIC.h63
4 files changed, 7 insertions, 123 deletions
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/SkImageGeneratorCG.h b/src/ports/SkImageGeneratorCG.h
deleted file mode 100644
index ee91c845fc..0000000000
--- a/src/ports/SkImageGeneratorCG.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SkTypes.h"
-#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
-
-#include "SkCGUtils.h"
-#include "SkData.h"
-#include "SkEncodedOrigin.h"
-#include "SkImageGenerator.h"
-#include "SkTemplates.h"
-
-class 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:
- sk_sp<SkData> onRefEncodedData() override;
-
- bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options&)
- override;
-
-private:
- /*
- * Takes ownership of the imageSrc
- */
- SkImageGeneratorCG(const SkImageInfo& info, const void* imageSrc, sk_sp<SkData> data,
- SkEncodedOrigin origin);
-
- SkAutoTCallVProc<const void, CFRelease> fImageSrc;
- sk_sp<SkData> fData;
- const SkEncodedOrigin fOrigin;
-
- typedef SkImageGenerator INHERITED;
-};
-
-#endif //defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
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/src/ports/SkImageGeneratorWIC.h b/src/ports/SkImageGeneratorWIC.h
deleted file mode 100644
index 5da68f2ea7..0000000000
--- a/src/ports/SkImageGeneratorWIC.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SkTypes.h"
-
-#if defined(SK_BUILD_FOR_WIN)
-
-#include "SkData.h"
-#include "SkImageGenerator.h"
-#include "SkTemplates.h"
-#include "SkTScopedComPtr.h"
-
-#include <wincodec.h>
-
-/*
- * Any Windows program that uses COM must initialize the COM library by calling
- * the CoInitializeEx function. In addition, each thread that uses a COM
- * interface must make a separate call to this function.
- *
- * For every successful call to CoInitializeEx, the thread must call
- * CoUninitialize before it exits.
- *
- * SkImageGeneratorWIC requires the COM library and leaves it to the client to
- * initialize COM for their application.
- *
- * For more information on initializing COM, please see:
- * https://msdn.microsoft.com/en-us/library/windows/desktop/ff485844.aspx
- */
-class 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);
-
-protected:
- sk_sp<SkData> onRefEncodedData() override;
-
- bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options&)
- override;
-
-private:
- /*
- * Takes ownership of the imagingFactory
- * Takes ownership of the imageSource
- * Refs the data
- */
- SkImageGeneratorWIC(const SkImageInfo& info, IWICImagingFactory* imagingFactory,
- IWICBitmapSource* imageSource, SkData* data);
-
- SkTScopedComPtr<IWICImagingFactory> fImagingFactory;
- SkTScopedComPtr<IWICBitmapSource> fImageSource;
- sk_sp<SkData> fData;
-
- typedef SkImageGenerator INHERITED;
-};
-
-#endif // SK_BUILD_FOR_WIN