aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec/SkCodecPriv.h
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2016-11-04 11:52:48 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-04 16:25:27 +0000
commit1a85ca5c908b421ea8f07798d56c4481bbc5d5af (patch)
tree950dc8aa3dbba05f4ad987d5a76d8461b2fc5ac5 /src/codec/SkCodecPriv.h
parent4d53c44aa6e8e0d1b6537f83e4287e5a1423ac75 (diff)
Fix color xforms for Index8 bmps
Thanks to Gold for catching this. BUG=skia:4895 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4426 Change-Id: Icc816d933e9e2fd312858a5430fa21a47722563e Reviewed-on: https://skia-review.googlesource.com/4426 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/codec/SkCodecPriv.h')
-rw-r--r--src/codec/SkCodecPriv.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/codec/SkCodecPriv.h b/src/codec/SkCodecPriv.h
index f210303598..a13cdbba92 100644
--- a/src/codec/SkCodecPriv.h
+++ b/src/codec/SkCodecPriv.h
@@ -11,6 +11,7 @@
#include "SkColorPriv.h"
#include "SkColorSpaceXform.h"
#include "SkColorTable.h"
+#include "SkEncodedInfo.h"
#include "SkImageInfo.h"
#include "SkTypes.h"
@@ -152,6 +153,12 @@ static inline SkColorSpaceXform::ColorFormat select_xform_format(SkColorType col
return SkColorSpaceXform::kBGRA_8888_ColorFormat;
case kRGBA_F16_SkColorType:
return SkColorSpaceXform::kRGBA_F16_ColorFormat;
+ case kIndex_8_SkColorType:
+#ifdef SK_PMCOLOR_IS_RGBA
+ return SkColorSpaceXform::kRGBA_8888_ColorFormat;
+#else
+ return SkColorSpaceXform::kBGRA_8888_ColorFormat;
+#endif
default:
SkASSERT(false);
return SkColorSpaceXform::kRGBA_8888_ColorFormat;
@@ -362,6 +369,11 @@ static inline SkAlphaType select_xform_alpha(SkAlphaType dstAlphaType, SkAlphaTy
return (kOpaque_SkAlphaType == srcAlphaType) ? kOpaque_SkAlphaType : dstAlphaType;
}
+static inline bool apply_xform_on_decode(SkColorType dstColorType, SkEncodedInfo::Color srcColor) {
+ // We will apply the color xform when reading the color table, unless F16 is requested.
+ return SkEncodedInfo::kPalette_Color != srcColor || kRGBA_F16_SkColorType == dstColorType;
+}
+
/*
* Alpha Type Conversions
* - kOpaque to kOpaque, kUnpremul, kPremul is valid