diff options
Diffstat (limited to 'gm')
-rw-r--r-- | gm/encode-platform.cpp | 48 | ||||
-rw-r--r-- | gm/encode.cpp | 4 | ||||
-rw-r--r-- | gm/image.cpp | 6 | ||||
-rw-r--r-- | gm/image_shader.cpp | 2 |
4 files changed, 31 insertions, 29 deletions
diff --git a/gm/encode-platform.cpp b/gm/encode-platform.cpp index 09b64cce53..0357298711 100644 --- a/gm/encode-platform.cpp +++ b/gm/encode-platform.cpp @@ -6,10 +6,11 @@ */ #include "gm.h" + #include "Resources.h" #include "SkCanvas.h" #include "SkData.h" -#include "SkImageEncoder.h" +#include "SkImageEncoderPriv.h" #include "SkUnPreMultiply.h" namespace skiagm { @@ -36,18 +37,18 @@ static void make_unpremul_256(SkBitmap* bitmap) { bitmap->setAlphaType(kUnpremul_SkAlphaType); } -static SkImageEncoder* make_encoder(SkImageEncoder::Type type) { +static SkImageEncoder* make_encoder(SkEncodedImageFormat type) { #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) - return CreateImageEncoder_CG(type); + return CreateImageEncoder_CG((SkImageEncoder::Type)type); #elif defined(SK_BUILD_FOR_WIN) - return CreateImageEncoder_WIC(type); + return CreateImageEncoder_WIC((SkImageEncoder::Type)type); #else switch (type) { - case SkImageEncoder::kPNG_Type: + case SkEncodedImageFormat::kPNG: return CreatePNGImageEncoder(); - case SkImageEncoder::kJPEG_Type: + case SkEncodedImageFormat::kJPEG: return CreateJPEGImageEncoder(); - case SkImageEncoder::kWEBP_Type: + case SkEncodedImageFormat::kWEBP: return CreateWEBPImageEncoder(); default: SkASSERT(false); @@ -57,24 +58,28 @@ static SkImageEncoder* make_encoder(SkImageEncoder::Type type) { } #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) -static SkImageEncoder::Type kTypes[] { - SkImageEncoder::kPNG_Type, SkImageEncoder::kJPEG_Type, SkImageEncoder::kGIF_Type, - SkImageEncoder::kBMP_Type, SkImageEncoder::kICO_Type, +static SkEncodedImageFormat kTypes[] { + SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kJPEG, SkEncodedImageFormat::kGIF, + SkEncodedImageFormat::kBMP, SkEncodedImageFormat::kICO, }; #elif defined(SK_BUILD_FOR_WIN) // Use PNG multiple times because our WIC encoder does not support GIF, BMP, or ICO. -static SkImageEncoder::Type kTypes[] { - SkImageEncoder::kPNG_Type, SkImageEncoder::kJPEG_Type, SkImageEncoder::kPNG_Type, - SkImageEncoder::kPNG_Type, SkImageEncoder::kPNG_Type, +static SkEncodedImageFormat kTypes[] { + SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kJPEG, SkEncodedImageFormat::kPNG, + SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kPNG, }; #else // Use WEBP in place of GIF. Use PNG two extra times. We don't support GIF, BMP, or ICO. -static SkImageEncoder::Type kTypes[] { - SkImageEncoder::kPNG_Type, SkImageEncoder::kJPEG_Type, SkImageEncoder::kWEBP_Type, - SkImageEncoder::kPNG_Type, SkImageEncoder::kPNG_Type, +static SkEncodedImageFormat kTypes[] { + SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kJPEG, SkEncodedImageFormat::kWEBP, + SkEncodedImageFormat::kPNG, SkEncodedImageFormat::kPNG, }; #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: @@ -95,15 +100,12 @@ protected: make_premul_256(&premulBm); make_unpremul_256(&unpremulBm); - for (SkImageEncoder::Type type : kTypes) { + for (SkEncodedImageFormat 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)); - sk_sp<SkImage> opaqueImage = SkImage::MakeFromEncoded(opaqueData); - sk_sp<SkImage> premulImage = SkImage::MakeFromEncoded(premulData); - sk_sp<SkImage> unpremulImage = SkImage::MakeFromEncoded(unpremulData); + auto opaqueImage = SkImage::MakeFromEncoded(encode_data(encoder, opaqueBm)); + auto premulImage = SkImage::MakeFromEncoded(encode_data(encoder, premulBm)); + auto unpremulImage = SkImage::MakeFromEncoded(encode_data(encoder, unpremulBm)); canvas->drawImage(opaqueImage.get(), 0.0f, 0.0f); canvas->drawImage(premulImage.get(), 0.0f, 256.0f); diff --git a/gm/encode.cpp b/gm/encode.cpp index 0cd562a358..d4598d0134 100644 --- a/gm/encode.cpp +++ b/gm/encode.cpp @@ -28,8 +28,8 @@ protected: void onDraw(SkCanvas* canvas) override { SkBitmap orig; GetResourceAsBitmap("mandrill_512_q075.jpg", &orig); - sk_sp<SkData> pngData(SkImageEncoder::EncodeData(orig, SkImageEncoder::kPNG_Type, 100)); - sk_sp<SkData> jpegData(SkImageEncoder::EncodeData(orig, SkImageEncoder::kJPEG_Type, 100)); + sk_sp<SkData> pngData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kPNG, 100)); + sk_sp<SkData> jpegData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kJPEG, 100)); sk_sp<SkImage> pngImage = SkImage::MakeFromEncoded(pngData); sk_sp<SkImage> jpegImage = SkImage::MakeFromEncoded(jpegData); diff --git a/gm/image.cpp b/gm/image.cpp index 5454ac3966..6545c0a5f4 100644 --- a/gm/image.cpp +++ b/gm/image.cpp @@ -348,13 +348,13 @@ static SkImageGenerator* gen_picture(const SkImageInfo& info) { static SkImageGenerator* gen_png(const SkImageInfo& info) { sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents)); - sk_sp<SkData> data(image->encode(SkImageEncoder::kPNG_Type, 100)); + sk_sp<SkData> data(image->encode(SkEncodedImageFormat::kPNG, 100)); return SkImageGenerator::NewFromEncoded(data.get()); } static SkImageGenerator* gen_jpg(const SkImageInfo& info) { sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents)); - sk_sp<SkData> data(image->encode(SkImageEncoder::kJPEG_Type, 100)); + sk_sp<SkData> data(image->encode(SkEncodedImageFormat::kJPEG, 100)); return SkImageGenerator::NewFromEncoded(data.get()); } @@ -467,7 +467,7 @@ DEF_SIMPLE_GM(new_texture_image, canvas, 225, 60) { // Create encoded image. [bmp] { sk_sp<SkData> src( - SkImageEncoder::EncodeData(bmp, SkImageEncoder::kPNG_Type, 100)); + sk_tool_utils::EncodeImageToData(bmp, SkEncodedImageFormat::kPNG, 100)); return SkImage::MakeFromEncoded(std::move(src)); }, // Create a picture image. diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp index 924199e6e7..49b1ed524c 100644 --- a/gm/image_shader.cpp +++ b/gm/image_shader.cpp @@ -55,7 +55,7 @@ static sk_sp<SkImage> make_encode_gen(GrContext* ctx, SkPicture* pic, const SkIm if (!src) { return nullptr; } - sk_sp<SkData> encoded(src->encode(SkImageEncoder::kPNG_Type, 100)); + sk_sp<SkData> encoded(src->encode(SkEncodedImageFormat::kPNG, 100)); if (!encoded) { return nullptr; } |