diff options
author | msarett <msarett@google.com> | 2015-04-15 07:32:19 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-15 07:32:20 -0700 |
commit | e16b04aa6041efb6507546547737e9603fa1606e (patch) | |
tree | 3bd78e41a9ff3df445c64d3c0429d83bb698570d /tests/CodexTest.cpp | |
parent | f91e676f941c7e9ec91ac298eaa32e4bf8f52762 (diff) |
SkJpegCodec
Enables basic decoding for jpegs
Includes rewinding
565, YUV, and Jpeg encoding are not yet implemented
BUG=skia:3257
Review URL: https://codereview.chromium.org/1076923002
Diffstat (limited to 'tests/CodexTest.cpp')
-rw-r--r-- | tests/CodexTest.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/CodexTest.cpp b/tests/CodexTest.cpp index a771716a24..d7142518a3 100644 --- a/tests/CodexTest.cpp +++ b/tests/CodexTest.cpp @@ -104,6 +104,13 @@ DEF_TEST(Codec, r) { check(r, "color_wheel.gif", SkISize::Make(128, 128), false); check(r, "randPixels.gif", SkISize::Make(8, 8), false); + // JPG + check(r, "CMYK.jpg", SkISize::Make(642, 516), false); + check(r, "color_wheel.jpg", SkISize::Make(128, 128), false); + check(r, "grayscale.jpg", SkISize::Make(128, 128), false); + check(r, "mandrill_512_q075.jpg", SkISize::Make(512, 512), false); + check(r, "randPixels.jpg", SkISize::Make(8, 8), false); + // PNG check(r, "arrow.png", SkISize::Make(187, 312), true); check(r, "baby_tux.png", SkISize::Make(240, 246), true); @@ -148,3 +155,46 @@ DEF_TEST(Codec_leaks, r) { test_invalid_stream(r, emptyIco, sizeof(emptyIco)); test_invalid_stream(r, emptyGif, sizeof(emptyGif)); } + +static void test_dimensions(skiatest::Reporter* r, const char path[]) { + // Create the codec from the resource file + SkAutoTDelete<SkStream> stream(resource(path)); + if (!stream) { + SkDebugf("Missing resource '%s'\n", path); + return; + } + SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(stream.detach())); + if (!codec) { + ERRORF(r, "Unable to create codec '%s'", path); + return; + } + + // Check that the decode is successful for a variety of scales + for (float scale = -0.05f; scale < 2.0f; scale += 0.05f) { + // Scale the output dimensions + SkISize scaledDims = codec->getScaledDimensions(scale); + SkImageInfo scaledInfo = codec->getInfo().makeWH(scaledDims.width(), scaledDims.height()); + + // Set up for the decode + size_t rowBytes = scaledDims.width() * sizeof(SkPMColor); + size_t totalBytes = scaledInfo.getSafeSize(rowBytes); + SkAutoTMalloc<SkPMColor> pixels(totalBytes); + + SkImageGenerator::Result result = + codec->getPixels(scaledInfo, pixels.get(), rowBytes, NULL, NULL, NULL); + REPORTER_ASSERT(r, SkImageGenerator::kSuccess == result); + } +} + +// Ensure that onGetScaledDimensions returns valid image dimensions to use for decodes +DEF_TEST(Codec_Dimensions, r) { + // JPG + test_dimensions(r, "CMYK.jpg"); + test_dimensions(r, "color_wheel.jpg"); + test_dimensions(r, "grayscale.jpg"); + test_dimensions(r, "mandrill_512_q075.jpg"); + test_dimensions(r, "randPixels.jpg"); +} + + + |