Home | History | Annotate | Download | only in tests
      1 /*
      2  * Copyright 2017 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "SkAndroidCodec.h"
      9 #include "SkBitmap.h"
     10 #include "SkCodec.h"
     11 #include "SkColorSpace.h"
     12 #include "SkEncodedImageFormat.h"
     13 #include "SkImageEncoder.h"
     14 #include "SkImageInfo.h"
     15 #include "SkStream.h"
     16 
     17 #include "Test.h"
     18 
     19 DEF_TEST(Codec_recommendedF16, r) {
     20     // Encode an F16 bitmap. SkEncodeImage will encode this to a true-color PNG
     21     // with a bit depth of 16. SkAndroidCodec should always recommend F16 for
     22     // such a PNG.
     23     SkBitmap bm;
     24     bm.allocPixels(SkImageInfo::Make(10, 10, kRGBA_F16_SkColorType,
     25             kPremul_SkAlphaType, SkColorSpace::MakeSRGBLinear()));
     26     // What is drawn is not important.
     27     bm.eraseColor(SK_ColorBLUE);
     28 
     29     SkDynamicMemoryWStream wstream;
     30     REPORTER_ASSERT(r, SkEncodeImage(&wstream, bm, SkEncodedImageFormat::kPNG, 100));
     31     auto data = wstream.detachAsData();
     32     auto androidCodec = SkAndroidCodec::MakeFromData(std::move(data));
     33     if (!androidCodec) {
     34         ERRORF(r, "Failed to create SkAndroidCodec");
     35         return;
     36     }
     37 
     38     REPORTER_ASSERT(r, androidCodec->computeOutputColorType(kN32_SkColorType)
     39             == kRGBA_F16_SkColorType);
     40 }
     41