| Index: ui/gfx/color_transform.cc
|
| diff --git a/ui/gfx/color_transform.cc b/ui/gfx/color_transform.cc
|
| index 14ebf1a19ba28552cbea52ebbafe1b555369a855..ecc8aaf2297789a328609a0347b3757a2bbe0307 100644
|
| --- a/ui/gfx/color_transform.cc
|
| +++ b/ui/gfx/color_transform.cc
|
| @@ -192,114 +192,16 @@ float ToLinear(ColorSpace::TransferID id, float v) {
|
| return 0;
|
| }
|
|
|
| -GFX_EXPORT Transform GetTransferMatrix(ColorSpace::MatrixID id) {
|
| - // Default values for BT709;
|
| - float Kr = 0.2126f;
|
| - float Kb = 0.0722f;
|
| - switch (id) {
|
| - case ColorSpace::MatrixID::RGB:
|
| - return Transform();
|
| -
|
| - case ColorSpace::MatrixID::BT709:
|
| - case ColorSpace::MatrixID::UNSPECIFIED:
|
| - case ColorSpace::MatrixID::RESERVED:
|
| - case ColorSpace::MatrixID::UNKNOWN:
|
| - // Default values are already set.
|
| - break;
|
| -
|
| - case ColorSpace::MatrixID::FCC:
|
| - Kr = 0.30f;
|
| - Kb = 0.11f;
|
| - break;
|
| -
|
| - case ColorSpace::MatrixID::BT470BG:
|
| - case ColorSpace::MatrixID::SMPTE170M:
|
| - Kr = 0.299f;
|
| - Kb = 0.144f;
|
| - break;
|
| -
|
| - case ColorSpace::MatrixID::SMPTE240M:
|
| - Kr = 0.212f;
|
| - Kb = 0.087f;
|
| - break;
|
| -
|
| - case ColorSpace::MatrixID::YCOCG:
|
| - return Transform(0.25f, 0.5f, 0.25f, 0.5f, // 1
|
| - -0.25f, 0.5f, -0.25f, 0.5f, // 2
|
| - 0.5f, 0.0f, -0.5f, 0.0f, // 3
|
| - 0.0f, 0.0f, 0.0f, 1.0f); // 4
|
| -
|
| - case ColorSpace::MatrixID::BT2020_NCL:
|
| - Kr = 0.2627f;
|
| - Kb = 0.0593f;
|
| - break;
|
| -
|
| - // BT2020_CL is a special case.
|
| - // Basically we return a matrix that transforms RGB values
|
| - // to RYB values. (We replace the green component with the
|
| - // the luminance.) Later steps will compute the Cb & Cr values.
|
| - case ColorSpace::MatrixID::BT2020_CL:
|
| - Kr = 0.2627f;
|
| - Kb = 0.0593f;
|
| - return Transform(1.0f, 0.0f, 0.0f, 0.0f, // R
|
| - Kr, 1.0f - Kr - Kb, Kb, 0.0f, // Y
|
| - 0.0f, 0.0f, 1.0f, 0.0f, // B
|
| - 0.0f, 0.0f, 0.0f, 1.0f);
|
| -
|
| - case ColorSpace::MatrixID::YDZDX:
|
| - return Transform(0.0f, 1.0f, 0.0f, 0.0f, // 1
|
| - 0.0f, -0.5f, 0.986566f / 2.0f, 0.5f, // 2
|
| - 0.5f, -0.991902f / 2.0f, 0.0f, 0.5f, // 3
|
| - 0.0f, 0.0f, 0.0f, 1.0f); // 4
|
| - }
|
| - float u_m = 0.5f / (1.0f - Kb);
|
| - float v_m = 0.5f / (1.0f - Kr);
|
| - return Transform(
|
| - Kr, 1.0f - Kr - Kb, Kb, 0.0f, // 1
|
| - u_m * -Kr, u_m * -(1.0f - Kr - Kb), u_m * (1.0f - Kb), 0.5f, // 2
|
| - v_m * (1.0f - Kr), v_m * -(1.0f - Kr - Kb), v_m * -Kb, 0.5f, // 3
|
| - 0.0f, 0.0f, 0.0f, 1.0f); // 4
|
| +Transform GetTransferMatrix(const gfx::ColorSpace& color_space) {
|
| + SkMatrix44 transfer_matrix;
|
| + color_space.GetTransferMatrix(&transfer_matrix);
|
| + return Transform(transfer_matrix);
|
| }
|
|
|
| -Transform GetRangeAdjustMatrix(ColorSpace::RangeID range,
|
| - ColorSpace::MatrixID matrix) {
|
| - switch (range) {
|
| - case ColorSpace::RangeID::FULL:
|
| - case ColorSpace::RangeID::UNSPECIFIED:
|
| - return Transform();
|
| -
|
| - case ColorSpace::RangeID::DERIVED:
|
| - case ColorSpace::RangeID::LIMITED:
|
| - break;
|
| - }
|
| - switch (matrix) {
|
| - case ColorSpace::MatrixID::RGB:
|
| - case ColorSpace::MatrixID::YCOCG:
|
| - // TODO(hubbe): Use Transform:Scale3d / Transform::Translate3d here.
|
| - return Transform(255.0f / 219.0f, 0.0f, 0.0f, -16.0f / 219.0f, // 1
|
| - 0.0f, 255.0f / 219.0f, 0.0f, -16.0f / 219.0f, // 2
|
| - 0.0f, 0.0f, 255.0f / 219.0f, -16.0f / 219.0f, // 3
|
| - 0.0f, 0.0f, 0.0f, 1.0f); // 4
|
| -
|
| - case ColorSpace::MatrixID::BT709:
|
| - case ColorSpace::MatrixID::UNSPECIFIED:
|
| - case ColorSpace::MatrixID::RESERVED:
|
| - case ColorSpace::MatrixID::FCC:
|
| - case ColorSpace::MatrixID::BT470BG:
|
| - case ColorSpace::MatrixID::SMPTE170M:
|
| - case ColorSpace::MatrixID::SMPTE240M:
|
| - case ColorSpace::MatrixID::BT2020_NCL:
|
| - case ColorSpace::MatrixID::BT2020_CL:
|
| - case ColorSpace::MatrixID::YDZDX:
|
| - case ColorSpace::MatrixID::UNKNOWN:
|
| - // TODO(hubbe): Use Transform:Scale3d / Transform::Translate3d here.
|
| - return Transform(255.0f / 219.0f, 0.0f, 0.0f, -16.0f / 219.0f, // 1
|
| - 0.0f, 255.0f / 224.0f, 0.0f, -15.5f / 224.0f, // 2
|
| - 0.0f, 0.0f, 255.0f / 224.0f, -15.5f / 224.0f, // 3
|
| - 0.0f, 0.0f, 0.0f, 1.0f); // 4
|
| - }
|
| - NOTREACHED();
|
| - return Transform();
|
| +Transform GetRangeAdjustMatrix(const gfx::ColorSpace& color_space) {
|
| + SkMatrix44 range_adjust_matrix;
|
| + color_space.GetRangeAdjustMatrix(&range_adjust_matrix);
|
| + return Transform(range_adjust_matrix);
|
| }
|
|
|
| class ColorTransformMatrix;
|
| @@ -705,10 +607,10 @@ class ColorSpaceToColorSpaceTransform {
|
| }
|
|
|
| builder->Append(base::MakeUnique<ColorTransformMatrix>(
|
| - GetRangeAdjustMatrix(from.range_, from.matrix_)));
|
| + GetRangeAdjustMatrix(from)));
|
|
|
| builder->Append(base::MakeUnique<ColorTransformMatrix>(
|
| - Invert(GetTransferMatrix(from.matrix_))));
|
| + Invert(GetTransferMatrix(from))));
|
|
|
| SkColorSpaceTransferFn to_linear_fn;
|
| bool to_linear_fn_valid = from.GetTransferFunction(&to_linear_fn);
|
| @@ -735,10 +637,10 @@ class ColorSpaceToColorSpaceTransform {
|
| to.transfer_, from_linear_fn, from_linear_fn_valid));
|
|
|
| builder->Append(
|
| - base::MakeUnique<ColorTransformMatrix>(GetTransferMatrix(to.matrix_)));
|
| + base::MakeUnique<ColorTransformMatrix>(GetTransferMatrix(to)));
|
|
|
| builder->Append(base::MakeUnique<ColorTransformMatrix>(
|
| - Invert(GetRangeAdjustMatrix(to.range_, to.matrix_))));
|
| + Invert(GetRangeAdjustMatrix(to))));
|
| }
|
| };
|
|
|
|
|