diff options
author | 2016-03-17 13:50:17 -0700 | |
---|---|---|
committer | 2016-03-17 13:50:18 -0700 | |
commit | fc0b6d1053bb56698f2844bd5ca30bced7bb389d (patch) | |
tree | 017a37474cd1a510a0603aab76fea25c72a7a0ca /dm/DMSrcSink.cpp | |
parent | 3bcef213d19b457baf2e6d1f42046ae9afd4e97f (diff) |
Add SkImageGeneratorWIC
This will be a replacement for SkImageDecoder_WIC.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1785613010
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot
Review URL: https://codereview.chromium.org/1785613010
Diffstat (limited to 'dm/DMSrcSink.cpp')
-rw-r--r-- | dm/DMSrcSink.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index b27ed8b51f..b8ed96b5e4 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -15,6 +15,7 @@ #include "SkError.h" #include "SkImageGenerator.h" #include "SkImageGeneratorCG.h" +#include "SkImageGeneratorWIC.h" #include "SkMallocPixelRef.h" #include "SkMultiPictureDraw.h" #include "SkNullCanvas.h" @@ -32,6 +33,10 @@ #include "SkSwizzler.h" #include <functional> +#if defined(SK_BUILD_FOR_WIN) + #include "SkAutoCoInitialize.h" +#endif + #ifdef SK_MOJO #include "SkMojo.mojom.h" #endif @@ -791,6 +796,14 @@ Error ImageGenSrc::draw(SkCanvas* canvas) const { return SkStringPrintf("Couldn't read %s.", fPath.c_str()); } +#if defined(SK_BUILD_FOR_WIN) + // Initialize COM in order to test with WIC. + SkAutoCoInitialize com; + if (!com.succeeded()) { + return "Could not initialize COM."; + } +#endif + SkAutoTDelete<SkImageGenerator> gen(nullptr); switch (fMode) { case kCodec_Mode: @@ -799,14 +812,18 @@ Error ImageGenSrc::draw(SkCanvas* canvas) const { return "Could not create codec image generator."; } break; + case kPlatform_Mode: { #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) - case kPlatform_Mode: gen.reset(SkImageGeneratorCG::NewFromEncodedCG(encoded)); +#elif defined(SK_BUILD_FOR_WIN) + gen.reset(SkImageGeneratorWIC::NewFromEncodedWIC(encoded)); +#endif + if (!gen) { - return "Could not create CG image generator."; + return "Could not create platform image generator."; } break; -#endif + } default: SkASSERT(false); return "Invalid image generator mode"; |