aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/CodecRecommendedTypeTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CodecRecommendedTypeTest.cpp')
-rw-r--r--tests/CodecRecommendedTypeTest.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/CodecRecommendedTypeTest.cpp b/tests/CodecRecommendedTypeTest.cpp
new file mode 100644
index 0000000000..180bf2f8da
--- /dev/null
+++ b/tests/CodecRecommendedTypeTest.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkAndroidCodec.h"
+#include "SkBitmap.h"
+#include "SkCodec.h"
+#include "SkColorSpace.h"
+#include "SkEncodedImageFormat.h"
+#include "SkImageEncoder.h"
+#include "SkImageInfo.h"
+#include "SkStream.h"
+
+#include "Test.h"
+
+DEF_TEST(Codec_recommendedF16, r) {
+ // Encode an F16 bitmap. SkEncodeImage will encode this to a true-color PNG
+ // with a bit depth of 16. SkAndroidCodec should always recommend F16 for
+ // such a PNG.
+ SkBitmap bm;
+ bm.allocPixels(SkImageInfo::Make(10, 10, kRGBA_F16_SkColorType,
+ kPremul_SkAlphaType, SkColorSpace::MakeSRGBLinear()));
+ // What is drawn is not important.
+ bm.eraseColor(SK_ColorBLUE);
+
+ SkDynamicMemoryWStream wstream;
+ REPORTER_ASSERT(r, SkEncodeImage(&wstream, bm, SkEncodedImageFormat::kPNG, 100));
+ auto data = wstream.detachAsData();
+ auto androidCodec = SkAndroidCodec::MakeFromData(std::move(data));
+ if (!androidCodec) {
+ ERRORF(r, "Failed to create SkAndroidCodec");
+ return;
+ }
+
+ REPORTER_ASSERT(r, androidCodec->computeOutputColorType(kN32_SkColorType)
+ == kRGBA_F16_SkColorType);
+}