| Index: tests/CodecTest.cpp
|
| diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
|
| index a5df7e3b50a9e00291966f1a578b637bef7f7cce..a6b44eb9a7506187e5e248f74e2482b8351662da 100644
|
| --- a/tests/CodecTest.cpp
|
| +++ b/tests/CodecTest.cpp
|
| @@ -11,6 +11,7 @@
|
| #include "SkCodec.h"
|
| #include "SkCodecImageGenerator.h"
|
| #include "SkData.h"
|
| +#include "SkImageEncoder.h"
|
| #include "SkFrontBufferedStream.h"
|
| #include "SkMD5.h"
|
| #include "SkRandom.h"
|
| @@ -1042,3 +1043,34 @@ DEF_TEST(Codec_jpeg_rewind, r) {
|
| SkCodec::Result result = codec->getPixels(codec->getInfo(), pixelStorage.get(), rowBytes);
|
| REPORTER_ASSERT(r, SkCodec::kSuccess == result);
|
| }
|
| +
|
| +DEF_TEST(Codec_Png565, r) {
|
| + // Create an arbitrary 565 bitmap.
|
| + const char* path = "mandrill_512_q075.jpg";
|
| + SkAutoTDelete<SkStream> stream(resource(path));
|
| + SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(stream.release()));
|
| + SkImageInfo info565 = codec->getInfo().makeColorType(kRGB_565_SkColorType);
|
| + SkBitmap bm1;
|
| + bm1.allocPixels(info565);
|
| + SkCodec::Result result = codec->getPixels(info565, bm1.getPixels(), bm1.rowBytes());
|
| + REPORTER_ASSERT(r, SkCodec::kSuccess == result);
|
| +
|
| + // Encode the image to png.
|
| + sk_sp<SkData> data =
|
| + sk_sp<SkData>(SkImageEncoder::EncodeData(bm1, SkImageEncoder::kPNG_Type, 100));
|
| +
|
| + // Prepare to decode. The codec should recognize that the PNG is 565.
|
| + codec.reset(SkCodec::NewFromData(data.get()));
|
| + REPORTER_ASSERT(r, kRGB_565_SkColorType == codec->getInfo().colorType());
|
| + REPORTER_ASSERT(r, kOpaque_SkAlphaType == codec->getInfo().alphaType());
|
| +
|
| + SkBitmap bm2;
|
| + bm2.allocPixels(codec->getInfo());
|
| + result = codec->getPixels(codec->getInfo(), bm2.getPixels(), bm2.rowBytes());
|
| + REPORTER_ASSERT(r, SkCodec::kSuccess == result);
|
| +
|
| + SkMD5::Digest d1, d2;
|
| + md5(bm1, &d1);
|
| + md5(bm2, &d2);
|
| + REPORTER_ASSERT(r, d1 == d2);
|
| +}
|
|
|