Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/gfx/color_transform.h" | 5 #include "ui/gfx/color_transform.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 SkMatrix44 matrix; | 158 SkMatrix44 matrix; |
| 159 primaries.toXYZD50(&matrix); | 159 primaries.toXYZD50(&matrix); |
| 160 return Transform(matrix); | 160 return Transform(matrix); |
| 161 } | 161 } |
| 162 | 162 |
| 163 GFX_EXPORT float FromLinear(ColorSpace::TransferID id, float v) { | 163 GFX_EXPORT float FromLinear(ColorSpace::TransferID id, float v) { |
| 164 switch (id) { | 164 switch (id) { |
| 165 case ColorSpace::TransferID::SMPTEST2084_NON_HDR: | 165 case ColorSpace::TransferID::SMPTEST2084_NON_HDR: |
| 166 // Should already be handled. | 166 // Should already be handled. |
| 167 NOTREACHED(); | 167 NOTREACHED(); |
| 168 case ColorSpace::TransferID::CUSTOM: | 168 case ColorSpace::TransferID::CUSTOM: |
|
hubbe
2017/01/22 04:30:30
Maybe implement this? (And also in ToLinear?)
ccameron
2017/01/23 18:58:58
Good point.
I started trying to put this in this
ccameron
2017/01/25 07:09:44
Went ahead and did this.
| |
| 169 // TODO(hubbe): Actually implement custom transfer functions. | 169 // TODO(hubbe): Actually implement custom transfer functions. |
| 170 case ColorSpace::TransferID::RESERVED0: | 170 case ColorSpace::TransferID::RESERVED0: |
| 171 case ColorSpace::TransferID::RESERVED: | 171 case ColorSpace::TransferID::RESERVED: |
| 172 case ColorSpace::TransferID::UNSPECIFIED: | 172 case ColorSpace::TransferID::UNSPECIFIED: |
| 173 case ColorSpace::TransferID::UNKNOWN: | 173 case ColorSpace::TransferID::UNKNOWN: |
| 174 // All unknown values default to BT709 | 174 // All unknown values default to BT709 |
| 175 | 175 |
| 176 case ColorSpace::TransferID::BT709: | 176 case ColorSpace::TransferID::BT709: |
| 177 case ColorSpace::TransferID::SMPTE170M: | 177 case ColorSpace::TransferID::SMPTE170M: |
| 178 case ColorSpace::TransferID::BT2020_10: | 178 case ColorSpace::TransferID::BT2020_10: |
| (...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 852 | 852 |
| 853 private: | 853 private: |
| 854 bool disable_optimizations_ = false; | 854 bool disable_optimizations_ = false; |
| 855 std::vector<std::unique_ptr<ColorTransformInternal>> transforms_; | 855 std::vector<std::unique_ptr<ColorTransformInternal>> transforms_; |
| 856 }; | 856 }; |
| 857 | 857 |
| 858 class ColorSpaceToColorSpaceTransform { | 858 class ColorSpaceToColorSpaceTransform { |
| 859 public: | 859 public: |
| 860 static Transform GetPrimaryTransform(const ColorSpace& c) { | 860 static Transform GetPrimaryTransform(const ColorSpace& c) { |
| 861 if (c.primaries_ == ColorSpace::PrimaryID::CUSTOM) { | 861 if (c.primaries_ == ColorSpace::PrimaryID::CUSTOM) { |
| 862 return Transform(c.custom_primary_matrix_[0], c.custom_primary_matrix_[1], | 862 SkMatrix44 sk_matrix; |
| 863 c.custom_primary_matrix_[2], c.custom_primary_matrix_[3], | 863 c.GetPrimaryMatrix(&sk_matrix); |
| 864 c.custom_primary_matrix_[4], c.custom_primary_matrix_[5], | 864 return Transform(sk_matrix); |
| 865 c.custom_primary_matrix_[6], c.custom_primary_matrix_[7], | |
| 866 c.custom_primary_matrix_[8], c.custom_primary_matrix_[9], | |
| 867 c.custom_primary_matrix_[10], | |
| 868 c.custom_primary_matrix_[11], 0.0f, 0.0f, 0.0f, 1.0f); | |
| 869 } else { | 865 } else { |
| 870 return GetPrimaryMatrix(c.primaries_); | 866 return GetPrimaryMatrix(c.primaries_); |
| 871 } | 867 } |
| 872 } | 868 } |
| 873 | 869 |
| 874 static void ColorSpaceToColorSpace(ColorSpace from, | 870 static void ColorSpaceToColorSpace(ColorSpace from, |
| 875 ColorSpace to, | 871 ColorSpace to, |
| 876 ColorTransform::Intent intent, | 872 ColorTransform::Intent intent, |
| 877 TransformBuilder* builder) { | 873 TransformBuilder* builder) { |
| 878 if (intent == ColorTransform::Intent::INTENT_PERCEPTUAL) { | 874 if (intent == ColorTransform::Intent::INTENT_PERCEPTUAL) { |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1022 to_profile ? ColorSpace::CreateXYZD50() : to, intent, &builder); | 1018 to_profile ? ColorSpace::CreateXYZD50() : to, intent, &builder); |
| 1023 if (to_profile) { | 1019 if (to_profile) { |
| 1024 builder.Append(std::unique_ptr<ColorTransformInternal>( | 1020 builder.Append(std::unique_ptr<ColorTransformInternal>( |
| 1025 new QCMSColorTransform(GetXYZD50Profile(), to_profile))); | 1021 new QCMSColorTransform(GetXYZD50Profile(), to_profile))); |
| 1026 } | 1022 } |
| 1027 | 1023 |
| 1028 return builder.GetTransform(); | 1024 return builder.GetTransform(); |
| 1029 } | 1025 } |
| 1030 | 1026 |
| 1031 } // namespace gfx | 1027 } // namespace gfx |
| OLD | NEW |