| 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);
|
|
|