Index: src/core/SkColorSpace.cpp |
diff --git a/src/core/SkColorSpace.cpp b/src/core/SkColorSpace.cpp |
index ba278dfcd69d81bde8235f0e392f96c7c67a14f8..894c4b99b7564c0040be2b8826c47d3efcdf5c30 100644 |
--- a/src/core/SkColorSpace.cpp |
+++ b/src/core/SkColorSpace.cpp |
@@ -22,10 +22,9 @@ |
, fProfileData(nullptr) |
{} |
-SkColorSpace_Base::SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, GammaNamed gammaNamed, |
- sk_sp<SkGammas> gammas, const SkMatrix44& toXYZD50, |
- sk_sp<SkData> profileData) |
- : INHERITED(gammaNamed, toXYZD50, kUnknown_Named) |
+SkColorSpace_Base::SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, sk_sp<SkGammas> gammas, |
+ const SkMatrix44& toXYZD50, sk_sp<SkData> profileData) |
+ : INHERITED(kNonStandard_GammaNamed, toXYZD50, kUnknown_Named) |
, fColorLUT(std::move(colorLUT)) |
, fGammas(std::move(gammas)) |
, fProfileData(std::move(profileData)) |
@@ -69,31 +68,16 @@ |
} |
sk_sp<SkColorSpace> SkColorSpace_Base::NewRGB(float values[3], const SkMatrix44& toXYZD50) { |
- if (0.0f > values[0] || 0.0f > values[1] || 0.0f > values[2]) { |
- return nullptr; |
- } |
- |
- GammaNamed gammaNamed = kNonStandard_GammaNamed; |
- if (color_space_almost_equal(2.2f, values[0]) && |
- color_space_almost_equal(2.2f, values[1]) && |
- color_space_almost_equal(2.2f, values[2])) { |
- gammaNamed = k2Dot2Curve_GammaNamed; |
- } else if (color_space_almost_equal(1.0f, values[0]) && |
- color_space_almost_equal(1.0f, values[1]) && |
- color_space_almost_equal(1.0f, values[2])) { |
- gammaNamed = kLinear_GammaNamed; |
- } |
- |
+ SkGammaCurve curves[3]; |
+ set_gamma_value(&curves[0], values[0]); |
+ set_gamma_value(&curves[1], values[1]); |
+ set_gamma_value(&curves[2], values[2]); |
+ |
+ GammaNamed gammaNamed = SkGammas::Named(curves); |
if (kNonStandard_GammaNamed == gammaNamed) { |
- sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new SkGammas()); |
- gammas->fRedType = SkGammas::Type::kValue_Type; |
- gammas->fGreenType = SkGammas::Type::kValue_Type; |
- gammas->fBlueType = SkGammas::Type::kValue_Type; |
- gammas->fRedData.fValue = values[0]; |
- gammas->fGreenData.fValue = values[1]; |
- gammas->fBlueData.fValue = values[2]; |
- return sk_sp<SkColorSpace>(new SkColorSpace_Base(nullptr, kNonStandard_GammaNamed, gammas, |
- toXYZD50, nullptr)); |
+ sk_sp<SkGammas> gammas(new SkGammas(std::move(curves[0]), std::move(curves[1]), |
+ std::move(curves[2]))); |
+ return sk_sp<SkColorSpace>(new SkColorSpace_Base(nullptr, gammas, toXYZD50, nullptr)); |
} |
return SkColorSpace_Base::NewRGB(gammaNamed, toXYZD50); |