aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/encode-srgb.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-01-27 18:16:40 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-28 01:59:09 +0000
commite95941f2c61d8bcb5aaf60968e4391a1c7a0d593 (patch)
tree7e473b36bfec6094cf0edf9f3d0c75ebf8605094 /gm/encode-srgb.cpp
parent0bd8f36309293720b44af92f113f6ebe96d54779 (diff)
Update SkJPEGImageEncoder
(1) Use libjpeg-turbo color space extensions when possible. (2) Use transform_scanline_procs when pre-libjpeg-turbo transformation are required. (3) Add support for Gray and F16. BUG=skia: Change-Id: I77b977cb8c9e0afc17d907dd73a1cf3f16539bcc Reviewed-on: https://skia-review.googlesource.com/7642 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'gm/encode-srgb.cpp')
-rw-r--r--gm/encode-srgb.cpp47
1 files changed, 31 insertions, 16 deletions
diff --git a/gm/encode-srgb.cpp b/gm/encode-srgb.cpp
index eae1a6d801..ef889c8f82 100644
--- a/gm/encode-srgb.cpp
+++ b/gm/encode-srgb.cpp
@@ -81,16 +81,23 @@ static void make_index8(SkBitmap* bitmap, SkAlphaType alphaType, sk_sp<SkColorSp
static void make(SkBitmap* bitmap, SkColorType colorType, SkAlphaType alphaType,
sk_sp<SkColorSpace> colorSpace) {
- if (kIndex_8_SkColorType == colorType) {
- make_index8(bitmap, alphaType, colorSpace);
- return;
- }
-
- const char* resource = (kOpaque_SkAlphaType == alphaType) ? "color_wheel.jpg"
- : "color_wheel.png";
- if (kGray_8_SkColorType == colorType) {
- resource = "grayscale.jpg";
- alphaType = kOpaque_SkAlphaType;
+ const char* resource;
+ switch (colorType) {
+ case kIndex_8_SkColorType:
+ make_index8(bitmap, alphaType, colorSpace);
+ return;
+ case kGray_8_SkColorType:
+ resource = "grayscale.jpg";
+ alphaType = kOpaque_SkAlphaType;
+ break;
+ case kRGB_565_SkColorType:
+ resource = "color_wheel.jpg";
+ alphaType = kOpaque_SkAlphaType;
+ break;
+ default:
+ resource = (kOpaque_SkAlphaType == alphaType) ? "color_wheel.jpg"
+ : "color_wheel.png";
+ break;
}
sk_sp<SkData> data = GetResourceAsData(resource);
@@ -117,10 +124,13 @@ static sk_sp<SkData> encode_data(const SkBitmap& bitmap, SkEncodedImageFormat fo
switch (format) {
case SkEncodedImageFormat::kPNG:
- SkEncodeImageAsPNG(&buf, src, options);
+ SkAssertResult(SkEncodeImageAsPNG(&buf, src, options));
break;
case SkEncodedImageFormat::kWEBP:
- SkEncodeImageAsWEBP(&buf, src, options);
+ SkAssertResult(SkEncodeImageAsWEBP(&buf, src, options));
+ break;
+ case SkEncodedImageFormat::kJPEG:
+ SkAssertResult(SkEncodeImageAsJPEG(&buf, src, options));
break;
default:
break;
@@ -139,24 +149,28 @@ protected:
const char* format = nullptr;
switch (fEncodedFormat) {
case SkEncodedImageFormat::kPNG:
- format = "-png";
+ format = "png";
break;
case SkEncodedImageFormat::kWEBP:
- format = "-webp";
+ format = "webp";
+ break;
+ case SkEncodedImageFormat::kJPEG:
+ format = "jpg";
break;
default:
break;
}
- return SkStringPrintf("encode-srgb%s", format);
+ return SkStringPrintf("encode-srgb-%s", format);
}
SkISize onISize() override {
- return SkISize::Make(imageWidth * 2, imageHeight * 12);
+ return SkISize::Make(imageWidth * 2, imageHeight * 15);
}
void onDraw(SkCanvas* canvas) override {
const SkColorType colorTypes[] = {
kN32_SkColorType, kRGBA_F16_SkColorType, kIndex_8_SkColorType, kGray_8_SkColorType,
+ kRGB_565_SkColorType,
};
const SkAlphaType alphaTypes[] = {
kUnpremul_SkAlphaType, kPremul_SkAlphaType, kOpaque_SkAlphaType,
@@ -189,4 +203,5 @@ private:
DEF_GM( return new EncodeSRGBGM(SkEncodedImageFormat::kPNG); )
DEF_GM( return new EncodeSRGBGM(SkEncodedImageFormat::kWEBP); )
+DEF_GM( return new EncodeSRGBGM(SkEncodedImageFormat::kJPEG); )
}