Index: src/codec/SkPngCodec.cpp |
diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp |
index b34c80c6ed8bd10e3928f84d7040b4d83b4b8a6d..1ad7f8006ee85a0a8016e129dd15104993fe8108 100644 |
--- a/src/codec/SkPngCodec.cpp |
+++ b/src/codec/SkPngCodec.cpp |
@@ -210,7 +210,7 @@ |
png_fixed_point XYZ[9]; |
SkFloat3x3 toXYZD50; |
png_fixed_point gamma; |
- SkColorSpace::SkGammas gammas; |
+ SkFloat3 gammas; |
if (png_get_cHRM_XYZ_fixed(png_ptr, info_ptr, &XYZ[0], &XYZ[1], &XYZ[2], &XYZ[3], &XYZ[4], |
&XYZ[5], &XYZ[6], &XYZ[7], &XYZ[8])) { |
@@ -225,17 +225,16 @@ |
} |
if (PNG_INFO_gAMA == png_get_gAMA_fixed(png_ptr, info_ptr, &gamma)) { |
- float value = png_inverted_fixed_point_to_float(gamma); |
- gammas = SkColorSpace::SkGammas(value, value, value); |
- |
+ gammas.fVec[0] = gammas.fVec[1] = gammas.fVec[2] = |
+ png_inverted_fixed_point_to_float(gamma); |
} else { |
- // Default to sRGB (gamma = 2.2f) if the image has color space information, |
- // but does not specify gamma. |
- gammas = SkColorSpace::SkGammas(2.2f, 2.2f, 2.2f); |
- } |
- |
- |
- return SkColorSpace::NewRGB(toXYZD50, std::move(gammas)); |
+ // If the image does not specify gamma, let's choose linear. Should we default |
+ // to sRGB? Most images are intended to be sRGB (gamma = 2.2f). |
+ gammas.fVec[0] = gammas.fVec[1] = gammas.fVec[2] = 1.0f; |
+ } |
+ |
+ |
+ return SkColorSpace::NewRGB(toXYZD50, gammas); |
} |
// Last, check for gamma. |
@@ -248,10 +247,9 @@ |
toXYZD50.fMat[0] = toXYZD50.fMat[4] = toXYZD50.fMat[8] = 1.0f; |
// Set the gammas. |
- float value = png_inverted_fixed_point_to_float(gamma); |
- gammas = SkColorSpace::SkGammas(value, value, value); |
- |
- return SkColorSpace::NewRGB(toXYZD50, std::move(gammas)); |
+ gammas.fVec[0] = gammas.fVec[1] = gammas.fVec[2] = png_inverted_fixed_point_to_float(gamma); |
+ |
+ return SkColorSpace::NewRGB(toXYZD50, gammas); |
} |
#endif // LIBPNG >= 1.6 |