aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/encode-platform.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2016-11-22 14:21:38 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-22 21:23:51 +0000
commita2b4bdce8cfd1a91407595a25683ecff982af22e (patch)
tree2e8fad7d92be4e8a024db784747944d110a80123 /gm/encode-platform.cpp
parent6b77f1cf09f6a3c47a42e29dc28087ac9f9cdb25 (diff)
Revert 248ff023 & 2cb6cb72
Revert "SkImageEncoder: simplify API" This reverts commit 248ff02331d7f73ee4b6c5a7eabeae1080c16cd4. Revert "Fix bug: can't convert nullptr -> bool" This reverts commit 2cb6cb7218171b357bb5c934f032ba69c7b78401. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5151 NOTRY=true Change-Id: I5f6414392d6545f74db0b5bb50608d04f053a8ec Reviewed-on: https://skia-review.googlesource.com/5151 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Hal Canary <halcanary@google.com>
Diffstat (limited to 'gm/encode-platform.cpp')
-rw-r--r--gm/encode-platform.cpp48
1 files changed, 23 insertions, 25 deletions
diff --git a/gm/encode-platform.cpp b/gm/encode-platform.cpp
index 0357298711..09b64cce53 100644
--- a/gm/encode-platform.cpp
+++ b/gm/encode-platform.cpp
@@ -6,11 +6,10 @@
*/
#include "gm.h"
-
#include "Resources.h"
#include "SkCanvas.h"
#include "SkData.h"
-#include "SkImageEncoderPriv.h"
+#include "SkImageEncoder.h"
#include "SkUnPreMultiply.h"
namespace skiagm {
@@ -37,18 +36,18 @@ static void make_unpremul_256(SkBitmap* bitmap) {
bitmap->setAlphaType(kUnpremul_SkAlphaType);
}
-static SkImageEncoder* make_encoder(SkEncodedImageFormat type) {
+static SkImageEncoder* make_encoder(SkImageEncoder::Type type) {
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
- return CreateImageEncoder_CG((SkImageEncoder::Type)type);
+ return CreateImageEncoder_CG(type);
#elif defined(SK_BUILD_FOR_WIN)
- return CreateImageEncoder_WIC((SkImageEncoder::Type)type);
+ return CreateImageEncoder_WIC(type);
#else
switch (type) {
- case SkEncodedImageFormat::kPNG:
+ case SkImageEncoder::kPNG_Type:
return CreatePNGImageEncoder();
- case SkEncodedImageFormat::kJPEG:
+ case SkImageEncoder::kJPEG_Type:
return CreateJPEGImageEncoder();
- case SkEncodedImageFormat::kWEBP:
+ case SkImageEncoder::kWEBP_Type:
return CreateWEBPImageEncoder();
default:
SkASSERT(false);
@@ -58,28 +57,24 @@ static SkImageEncoder* make_encoder(SkEncodedImageFormat type) {
}
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
-static SkEncodedImageFormat kTypes[] {
- SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kJPEG, SkEncodedImageFormat::kGIF,
- SkEncodedImageFormat::kBMP, SkEncodedImageFormat::kICO,
+static SkImageEncoder::Type kTypes[] {
+ SkImageEncoder::kPNG_Type, SkImageEncoder::kJPEG_Type, SkImageEncoder::kGIF_Type,
+ SkImageEncoder::kBMP_Type, SkImageEncoder::kICO_Type,
};
#elif defined(SK_BUILD_FOR_WIN)
// Use PNG multiple times because our WIC encoder does not support GIF, BMP, or ICO.
-static SkEncodedImageFormat kTypes[] {
- SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kJPEG, SkEncodedImageFormat::kPNG,
- SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kPNG,
+static SkImageEncoder::Type kTypes[] {
+ SkImageEncoder::kPNG_Type, SkImageEncoder::kJPEG_Type, SkImageEncoder::kPNG_Type,
+ SkImageEncoder::kPNG_Type, SkImageEncoder::kPNG_Type,
};
#else
// Use WEBP in place of GIF. Use PNG two extra times. We don't support GIF, BMP, or ICO.
-static SkEncodedImageFormat kTypes[] {
- SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kJPEG, SkEncodedImageFormat::kWEBP,
- SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kPNG,
+static SkImageEncoder::Type kTypes[] {
+ SkImageEncoder::kPNG_Type, SkImageEncoder::kJPEG_Type, SkImageEncoder::kWEBP_Type,
+ SkImageEncoder::kPNG_Type, SkImageEncoder::kPNG_Type,
};
#endif
-static sk_sp<SkData> encode_data(std::unique_ptr<SkImageEncoder>& encoder, const SkBitmap& src) {
- SkDynamicMemoryWStream buffer;
- return encoder->encodeStream(&buffer, src, 100) ? buffer.detachAsData() : nullptr;
-}
class EncodePlatformGM : public GM {
public:
@@ -100,12 +95,15 @@ protected:
make_premul_256(&premulBm);
make_unpremul_256(&unpremulBm);
- for (SkEncodedImageFormat type : kTypes) {
+ for (SkImageEncoder::Type type : kTypes) {
std::unique_ptr<SkImageEncoder> encoder(make_encoder(type));
+ sk_sp<SkData> opaqueData(encoder->encodeData(opaqueBm, 100));
+ sk_sp<SkData> premulData(encoder->encodeData(premulBm, 100));
+ sk_sp<SkData> unpremulData(encoder->encodeData(unpremulBm, 100));
- auto opaqueImage = SkImage::MakeFromEncoded(encode_data(encoder, opaqueBm));
- auto premulImage = SkImage::MakeFromEncoded(encode_data(encoder, premulBm));
- auto unpremulImage = SkImage::MakeFromEncoded(encode_data(encoder, unpremulBm));
+ sk_sp<SkImage> opaqueImage = SkImage::MakeFromEncoded(opaqueData);
+ sk_sp<SkImage> premulImage = SkImage::MakeFromEncoded(premulData);
+ sk_sp<SkImage> unpremulImage = SkImage::MakeFromEncoded(unpremulData);
canvas->drawImage(opaqueImage.get(), 0.0f, 0.0f);
canvas->drawImage(premulImage.get(), 0.0f, 256.0f);