diff options
author | Matt Sarett <msarett@google.com> | 2016-11-07 10:26:17 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-07 16:00:11 +0000 |
commit | a225e9be53001a8397344ce1e272a7df2fced499 (patch) | |
tree | bb99b48a9cccfa82e4da7dff98ac60fd63c58b45 /src/codec/SkWbmpCodec.cpp | |
parent | 84a812061f1d16aa6d349ca065bf67d06767bbc2 (diff) |
Finish color space support for SkCodec
Implements color space xforms and F16 for SkRawCodec and SkWbmpCodec.
BUG=skia:4895
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4459
Change-Id: I8c72918e46387350b49a9811ce654d26b1ab352a
Reviewed-on: https://skia-review.googlesource.com/4459
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/codec/SkWbmpCodec.cpp')
-rw-r--r-- | src/codec/SkWbmpCodec.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/codec/SkWbmpCodec.cpp b/src/codec/SkWbmpCodec.cpp index 4102bf2607..19c8c7db37 100644 --- a/src/codec/SkWbmpCodec.cpp +++ b/src/codec/SkWbmpCodec.cpp @@ -30,14 +30,16 @@ static inline void setup_color_table(SkColorType colorType, } } -static inline bool valid_color_type(SkColorType colorType) { - switch (colorType) { +static inline bool valid_color_type(const SkImageInfo& dstInfo) { + switch (dstInfo.colorType()) { case kRGBA_8888_SkColorType: case kBGRA_8888_SkColorType: case kIndex_8_SkColorType: case kGray_8_SkColorType: case kRGB_565_SkColorType: return true; + case kRGBA_F16_SkColorType: + return dstInfo.colorSpace() && dstInfo.colorSpace()->gammaIsLinear(); default: return false; } @@ -127,8 +129,7 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info, return kUnimplemented; } - if (!valid_color_type(info.colorType()) || - !valid_alpha(info.alphaType(), this->getInfo().alphaType())) { + if (!valid_color_type(info) || !valid_alpha(info.alphaType(), this->getInfo().alphaType())) { return kInvalidConversion; } @@ -194,8 +195,9 @@ SkCodec::Result SkWbmpCodec::onStartScanlineDecode(const SkImageInfo& dstInfo, return kUnimplemented; } - if (!valid_color_type(dstInfo.colorType()) || - !valid_alpha(dstInfo.alphaType(), this->getInfo().alphaType())) { + if (!valid_color_type(dstInfo) || + !valid_alpha(dstInfo.alphaType(), this->getInfo().alphaType())) + { return kInvalidConversion; } |