aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports/SkImageGeneratorWIC.cpp
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/SkImageGeneratorWIC.cpp
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/SkImageGeneratorWIC.cpp')
-rw-r--r--src/ports/SkImageGeneratorWIC.cpp12
1 files changed, 7 insertions, 5 deletions
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() {