| Index: ui/gfx/color_space.cc
|
| diff --git a/ui/gfx/color_space.cc b/ui/gfx/color_space.cc
|
| index 9a307ddb8034f5fb73d75abe4375748fa93994a4..2bf317bcecb7ec8db177ad8da6c18507680c4e6a 100644
|
| --- a/ui/gfx/color_space.cc
|
| +++ b/ui/gfx/color_space.cc
|
| @@ -12,26 +12,6 @@
|
| #include "ui/gfx/icc_profile.h"
|
|
|
| namespace gfx {
|
| -
|
| -namespace {
|
| -
|
| -SkColorSpaceTransferFn InvertTransferFn(SkColorSpaceTransferFn fn) {
|
| - SkColorSpaceTransferFn fn_inv = {0};
|
| - if (fn.fA > 0 && fn.fG > 0) {
|
| - double a_to_the_g = pow(fn.fA, fn.fG);
|
| - fn_inv.fA = 1.f / a_to_the_g;
|
| - fn_inv.fB = -fn.fE / a_to_the_g;
|
| - fn_inv.fG = 1.f / fn.fG;
|
| - }
|
| - fn_inv.fD = fn.fC * fn.fD + fn.fF;
|
| - fn_inv.fE = -fn.fB / fn.fA;
|
| - if (fn.fC != 0) {
|
| - fn_inv.fC = 1.f / fn.fC;
|
| - fn_inv.fF = -fn.fF / fn.fC;
|
| - }
|
| - return fn_inv;
|
| -}
|
| -};
|
|
|
| ColorSpace::PrimaryID ColorSpace::PrimaryIDFromInt(int primary_id) {
|
| if (primary_id < 0 || primary_id > static_cast<int>(PrimaryID::LAST))
|
| @@ -61,7 +41,6 @@
|
| }
|
|
|
| ColorSpace::ColorSpace() {
|
| - memset(custom_transfer_params_, 0, sizeof(custom_transfer_params_));
|
| memset(custom_primary_matrix_, 0, sizeof(custom_primary_matrix_));
|
| }
|
|
|
| @@ -73,8 +52,8 @@
|
| transfer_(transfer),
|
| matrix_(matrix),
|
| range_(range) {
|
| - memset(custom_transfer_params_, 0, sizeof(custom_transfer_params_));
|
| memset(custom_primary_matrix_, 0, sizeof(custom_primary_matrix_));
|
| + // TODO: Set profile_id_
|
| }
|
|
|
| ColorSpace::ColorSpace(int primaries, int transfer, int matrix, RangeID range)
|
| @@ -82,8 +61,8 @@
|
| transfer_(TransferIDFromInt(transfer)),
|
| matrix_(MatrixIDFromInt(matrix)),
|
| range_(range) {
|
| - memset(custom_transfer_params_, 0, sizeof(custom_transfer_params_));
|
| memset(custom_primary_matrix_, 0, sizeof(custom_primary_matrix_));
|
| + // TODO: Set profile_id_
|
| }
|
|
|
| ColorSpace::ColorSpace(const ColorSpace& other)
|
| @@ -93,8 +72,6 @@
|
| range_(other.range_),
|
| icc_profile_id_(other.icc_profile_id_),
|
| sk_color_space_(other.sk_color_space_) {
|
| - memcpy(custom_transfer_params_, other.custom_transfer_params_,
|
| - sizeof(custom_transfer_params_));
|
| memcpy(custom_primary_matrix_, other.custom_primary_matrix_,
|
| sizeof(custom_primary_matrix_));
|
| }
|
| @@ -147,10 +124,6 @@
|
| memcmp(custom_primary_matrix_, other.custom_primary_matrix_,
|
| sizeof(custom_primary_matrix_)))
|
| return false;
|
| - if (transfer_ == TransferID::CUSTOM &&
|
| - memcmp(custom_transfer_params_, other.custom_transfer_params_,
|
| - sizeof(custom_transfer_params_)))
|
| - return false;
|
| return true;
|
| }
|
|
|
| @@ -189,15 +162,6 @@
|
| if (primary_result > 0)
|
| return false;
|
| }
|
| - if (transfer_ == TransferID::CUSTOM) {
|
| - int transfer_result =
|
| - memcmp(custom_transfer_params_, other.custom_transfer_params_,
|
| - sizeof(custom_transfer_params_));
|
| - if (transfer_result < 0)
|
| - return true;
|
| - if (transfer_result > 0)
|
| - return false;
|
| - }
|
| return false;
|
| }
|
|
|
| @@ -216,221 +180,4 @@
|
| return icc_profile.GetColorSpace();
|
| }
|
|
|
| -void ColorSpace::GetPrimaryMatrix(SkMatrix44* to_XYZD50) const {
|
| - SkColorSpacePrimaries primaries = {0};
|
| - switch (primaries_) {
|
| - case ColorSpace::PrimaryID::CUSTOM:
|
| - to_XYZD50->set3x3RowMajorf(custom_primary_matrix_);
|
| - return;
|
| -
|
| - case ColorSpace::PrimaryID::RESERVED0:
|
| - case ColorSpace::PrimaryID::RESERVED:
|
| - case ColorSpace::PrimaryID::UNSPECIFIED:
|
| - case ColorSpace::PrimaryID::UNKNOWN:
|
| - case ColorSpace::PrimaryID::BT709:
|
| - // BT709 is our default case. Put it after the switch just
|
| - // in case we somehow get an id which is not listed in the switch.
|
| - // (We don't want to use "default", because we want the compiler
|
| - // to tell us if we forgot some enum values.)
|
| - primaries.fRX = 0.640f;
|
| - primaries.fRY = 0.330f;
|
| - primaries.fGX = 0.300f;
|
| - primaries.fGY = 0.600f;
|
| - primaries.fBX = 0.150f;
|
| - primaries.fBY = 0.060f;
|
| - primaries.fWX = 0.3127f;
|
| - primaries.fWY = 0.3290f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::BT470M:
|
| - primaries.fRX = 0.67f;
|
| - primaries.fRY = 0.33f;
|
| - primaries.fGX = 0.21f;
|
| - primaries.fGY = 0.71f;
|
| - primaries.fBX = 0.14f;
|
| - primaries.fBY = 0.08f;
|
| - primaries.fWX = 0.31f;
|
| - primaries.fWY = 0.316f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::BT470BG:
|
| - primaries.fRX = 0.64f;
|
| - primaries.fRY = 0.33f;
|
| - primaries.fGX = 0.29f;
|
| - primaries.fGY = 0.60f;
|
| - primaries.fBX = 0.15f;
|
| - primaries.fBY = 0.06f;
|
| - primaries.fWX = 0.3127f;
|
| - primaries.fWY = 0.3290f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::SMPTE170M:
|
| - case ColorSpace::PrimaryID::SMPTE240M:
|
| - primaries.fRX = 0.630f;
|
| - primaries.fRY = 0.340f;
|
| - primaries.fGX = 0.310f;
|
| - primaries.fGY = 0.595f;
|
| - primaries.fBX = 0.155f;
|
| - primaries.fBY = 0.070f;
|
| - primaries.fWX = 0.3127f;
|
| - primaries.fWY = 0.3290f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::FILM:
|
| - primaries.fRX = 0.681f;
|
| - primaries.fRY = 0.319f;
|
| - primaries.fGX = 0.243f;
|
| - primaries.fGY = 0.692f;
|
| - primaries.fBX = 0.145f;
|
| - primaries.fBY = 0.049f;
|
| - primaries.fWX = 0.310f;
|
| - primaries.fWY = 0.136f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::BT2020:
|
| - primaries.fRX = 0.708f;
|
| - primaries.fRY = 0.292f;
|
| - primaries.fGX = 0.170f;
|
| - primaries.fGY = 0.797f;
|
| - primaries.fBX = 0.131f;
|
| - primaries.fBY = 0.046f;
|
| - primaries.fWX = 0.3127f;
|
| - primaries.fWY = 0.3290f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::SMPTEST428_1:
|
| - primaries.fRX = 1.0f;
|
| - primaries.fRY = 0.0f;
|
| - primaries.fGX = 0.0f;
|
| - primaries.fGY = 1.0f;
|
| - primaries.fBX = 0.0f;
|
| - primaries.fBY = 0.0f;
|
| - primaries.fWX = 1.0f / 3.0f;
|
| - primaries.fWY = 1.0f / 3.0f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::SMPTEST431_2:
|
| - primaries.fRX = 0.680f;
|
| - primaries.fRY = 0.320f;
|
| - primaries.fGX = 0.265f;
|
| - primaries.fGY = 0.690f;
|
| - primaries.fBX = 0.150f;
|
| - primaries.fBY = 0.060f;
|
| - primaries.fWX = 0.314f;
|
| - primaries.fWY = 0.351f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::SMPTEST432_1:
|
| - primaries.fRX = 0.680f;
|
| - primaries.fRY = 0.320f;
|
| - primaries.fGX = 0.265f;
|
| - primaries.fGY = 0.690f;
|
| - primaries.fBX = 0.150f;
|
| - primaries.fBY = 0.060f;
|
| - primaries.fWX = 0.3127f;
|
| - primaries.fWY = 0.3290f;
|
| - break;
|
| -
|
| - case ColorSpace::PrimaryID::XYZ_D50:
|
| - primaries.fRX = 1.0f;
|
| - primaries.fRY = 0.0f;
|
| - primaries.fGX = 0.0f;
|
| - primaries.fGY = 1.0f;
|
| - primaries.fBX = 0.0f;
|
| - primaries.fBY = 0.0f;
|
| - primaries.fWX = 0.34567f;
|
| - primaries.fWY = 0.35850f;
|
| - break;
|
| - }
|
| - primaries.toXYZD50(to_XYZD50);
|
| -}
|
| -
|
| -bool ColorSpace::GetTransferFunction(SkColorSpaceTransferFn* fn) const {
|
| - // Default to F(x) = pow(x, 1)
|
| - fn->fA = 1;
|
| - fn->fB = 0;
|
| - fn->fC = 1;
|
| - fn->fD = 0;
|
| - fn->fE = 0;
|
| - fn->fF = 0;
|
| - fn->fG = 1;
|
| -
|
| - switch (transfer_) {
|
| - case ColorSpace::TransferID::CUSTOM:
|
| - fn->fA = custom_transfer_params_[0];
|
| - fn->fB = custom_transfer_params_[1];
|
| - fn->fC = custom_transfer_params_[2];
|
| - fn->fD = custom_transfer_params_[3];
|
| - fn->fE = custom_transfer_params_[4];
|
| - fn->fF = custom_transfer_params_[5];
|
| - fn->fG = custom_transfer_params_[6];
|
| - return true;
|
| - case ColorSpace::TransferID::LINEAR:
|
| - return true;
|
| - case ColorSpace::TransferID::GAMMA22:
|
| - fn->fG = 2.2f;
|
| - return true;
|
| - case ColorSpace::TransferID::GAMMA24:
|
| - fn->fG = 2.4f;
|
| - return true;
|
| - case ColorSpace::TransferID::GAMMA28:
|
| - fn->fG = 2.8f;
|
| - return true;
|
| - case ColorSpace::TransferID::RESERVED0:
|
| - case ColorSpace::TransferID::RESERVED:
|
| - case ColorSpace::TransferID::UNSPECIFIED:
|
| - case ColorSpace::TransferID::UNKNOWN:
|
| - // All unknown values default to BT709
|
| - case ColorSpace::TransferID::BT709:
|
| - case ColorSpace::TransferID::SMPTE170M:
|
| - case ColorSpace::TransferID::BT2020_10:
|
| - case ColorSpace::TransferID::BT2020_12:
|
| - fn->fA = 0.909672431050f;
|
| - fn->fB = 0.090327568950f;
|
| - fn->fC = 0.222222222222f;
|
| - fn->fD = 0.081242862158f;
|
| - fn->fG = 2.222222222222f;
|
| - return true;
|
| - case ColorSpace::TransferID::SMPTE240M:
|
| - fn->fA = 0.899626676224f;
|
| - fn->fB = 0.100373323776f;
|
| - fn->fC = 0.250000000000f;
|
| - fn->fD = 0.091286342118f;
|
| - fn->fG = 2.222222222222f;
|
| - return true;
|
| - case ColorSpace::TransferID::IEC61966_2_1:
|
| - fn->fA = 0.947867345704f;
|
| - fn->fB = 0.052132654296f;
|
| - fn->fC = 0.077399380805f;
|
| - fn->fD = 0.040449937172f;
|
| - fn->fG = 2.400000000000f;
|
| - return true;
|
| - case ColorSpace::TransferID::SMPTEST428_1:
|
| - fn->fA = 0.225615407568f;
|
| - fn->fE = -1.091041666667f;
|
| - fn->fG = 2.600000000000f;
|
| - return true;
|
| - case ColorSpace::TransferID::IEC61966_2_4:
|
| - // This could potentially be represented the same as IEC61966_2_1, but
|
| - // it handles negative values differently.
|
| - break;
|
| - case ColorSpace::TransferID::ARIB_STD_B67:
|
| - case ColorSpace::TransferID::BT1361_ECG:
|
| - case ColorSpace::TransferID::LOG:
|
| - case ColorSpace::TransferID::LOG_SQRT:
|
| - case ColorSpace::TransferID::SMPTEST2084:
|
| - case ColorSpace::TransferID::SMPTEST2084_NON_HDR:
|
| - break;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -bool ColorSpace::GetInverseTransferFunction(SkColorSpaceTransferFn* fn) const {
|
| - if (!GetTransferFunction(fn))
|
| - return false;
|
| - *fn = InvertTransferFn(*fn);
|
| - return true;
|
| -}
|
| -
|
| } // namespace gfx
|
|
|