aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec/SkWbmpCodec.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2016-11-07 10:26:17 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-07 16:00:11 +0000
commita225e9be53001a8397344ce1e272a7df2fced499 (patch)
treebb99b48a9cccfa82e4da7dff98ac60fd63c58b45 /src/codec/SkWbmpCodec.cpp
parent84a812061f1d16aa6d349ca065bf67d06767bbc2 (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.cpp14
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;
}