| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_GFX_MOJOM_COLOR_SPACE_MOJOM_TRAITS_H_ |
| #define UI_GFX_MOJOM_COLOR_SPACE_MOJOM_TRAITS_H_ |
| |
| #include "base/component_export.h" |
| #include "base/containers/span.h" |
| #include "ui/gfx/color_space.h" |
| #include "ui/gfx/mojom/color_space.mojom-shared.h" |
| |
| namespace mojo { |
| |
| template <> |
| struct EnumTraits<gfx::mojom::ColorSpacePrimaryID, gfx::ColorSpace::PrimaryID> { |
| static gfx::mojom::ColorSpacePrimaryID ToMojom( |
| gfx::ColorSpace::PrimaryID input) { |
| switch (input) { |
| case gfx::ColorSpace::PrimaryID::INVALID: |
| return gfx::mojom::ColorSpacePrimaryID::INVALID; |
| case gfx::ColorSpace::PrimaryID::BT709: |
| return gfx::mojom::ColorSpacePrimaryID::BT709; |
| case gfx::ColorSpace::PrimaryID::BT470M: |
| return gfx::mojom::ColorSpacePrimaryID::BT470M; |
| case gfx::ColorSpace::PrimaryID::BT470BG: |
| return gfx::mojom::ColorSpacePrimaryID::BT470BG; |
| case gfx::ColorSpace::PrimaryID::SMPTE170M: |
| return gfx::mojom::ColorSpacePrimaryID::SMPTE170M; |
| case gfx::ColorSpace::PrimaryID::SMPTE240M: |
| return gfx::mojom::ColorSpacePrimaryID::SMPTE240M; |
| case gfx::ColorSpace::PrimaryID::FILM: |
| return gfx::mojom::ColorSpacePrimaryID::FILM; |
| case gfx::ColorSpace::PrimaryID::BT2020: |
| return gfx::mojom::ColorSpacePrimaryID::BT2020; |
| case gfx::ColorSpace::PrimaryID::SMPTEST428_1: |
| return gfx::mojom::ColorSpacePrimaryID::SMPTEST428_1; |
| case gfx::ColorSpace::PrimaryID::SMPTEST431_2: |
| return gfx::mojom::ColorSpacePrimaryID::SMPTEST431_2; |
| case gfx::ColorSpace::PrimaryID::SMPTEST432_1: |
| return gfx::mojom::ColorSpacePrimaryID::SMPTEST432_1; |
| case gfx::ColorSpace::PrimaryID::XYZ_D50: |
| return gfx::mojom::ColorSpacePrimaryID::XYZ_D50; |
| case gfx::ColorSpace::PrimaryID::ADOBE_RGB: |
| return gfx::mojom::ColorSpacePrimaryID::ADOBE_RGB; |
| case gfx::ColorSpace::PrimaryID::APPLE_GENERIC_RGB: |
| return gfx::mojom::ColorSpacePrimaryID::APPLE_GENERIC_RGB; |
| case gfx::ColorSpace::PrimaryID::WIDE_GAMUT_COLOR_SPIN: |
| return gfx::mojom::ColorSpacePrimaryID::WIDE_GAMUT_COLOR_SPIN; |
| case gfx::ColorSpace::PrimaryID::CUSTOM: |
| return gfx::mojom::ColorSpacePrimaryID::CUSTOM; |
| } |
| NOTREACHED(); |
| return gfx::mojom::ColorSpacePrimaryID::INVALID; |
| } |
| |
| static bool FromMojom(gfx::mojom::ColorSpacePrimaryID input, |
| gfx::ColorSpace::PrimaryID* out) { |
| switch (input) { |
| case gfx::mojom::ColorSpacePrimaryID::INVALID: |
| *out = gfx::ColorSpace::PrimaryID::INVALID; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::BT709: |
| *out = gfx::ColorSpace::PrimaryID::BT709; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::BT470M: |
| *out = gfx::ColorSpace::PrimaryID::BT470M; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::BT470BG: |
| *out = gfx::ColorSpace::PrimaryID::BT470BG; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::SMPTE170M: |
| *out = gfx::ColorSpace::PrimaryID::SMPTE170M; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::SMPTE240M: |
| *out = gfx::ColorSpace::PrimaryID::SMPTE240M; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::FILM: |
| *out = gfx::ColorSpace::PrimaryID::FILM; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::BT2020: |
| *out = gfx::ColorSpace::PrimaryID::BT2020; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::SMPTEST428_1: |
| *out = gfx::ColorSpace::PrimaryID::SMPTEST428_1; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::SMPTEST431_2: |
| *out = gfx::ColorSpace::PrimaryID::SMPTEST431_2; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::SMPTEST432_1: |
| *out = gfx::ColorSpace::PrimaryID::SMPTEST432_1; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::XYZ_D50: |
| *out = gfx::ColorSpace::PrimaryID::XYZ_D50; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::ADOBE_RGB: |
| *out = gfx::ColorSpace::PrimaryID::ADOBE_RGB; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::APPLE_GENERIC_RGB: |
| *out = gfx::ColorSpace::PrimaryID::APPLE_GENERIC_RGB; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::WIDE_GAMUT_COLOR_SPIN: |
| *out = gfx::ColorSpace::PrimaryID::WIDE_GAMUT_COLOR_SPIN; |
| return true; |
| case gfx::mojom::ColorSpacePrimaryID::CUSTOM: |
| *out = gfx::ColorSpace::PrimaryID::CUSTOM; |
| return true; |
| } |
| NOTREACHED(); |
| return false; |
| } |
| }; |
| |
| template <> |
| struct EnumTraits<gfx::mojom::ColorSpaceTransferID, |
| gfx::ColorSpace::TransferID> { |
| static gfx::mojom::ColorSpaceTransferID ToMojom( |
| gfx::ColorSpace::TransferID input) { |
| switch (input) { |
| case gfx::ColorSpace::TransferID::INVALID: |
| return gfx::mojom::ColorSpaceTransferID::INVALID; |
| case gfx::ColorSpace::TransferID::BT709: |
| return gfx::mojom::ColorSpaceTransferID::BT709; |
| case gfx::ColorSpace::TransferID::BT709_APPLE: |
| return gfx::mojom::ColorSpaceTransferID::BT709_APPLE; |
| case gfx::ColorSpace::TransferID::GAMMA18: |
| return gfx::mojom::ColorSpaceTransferID::GAMMA18; |
| case gfx::ColorSpace::TransferID::GAMMA22: |
| return gfx::mojom::ColorSpaceTransferID::GAMMA22; |
| case gfx::ColorSpace::TransferID::GAMMA24: |
| return gfx::mojom::ColorSpaceTransferID::GAMMA24; |
| case gfx::ColorSpace::TransferID::GAMMA28: |
| return gfx::mojom::ColorSpaceTransferID::GAMMA28; |
| case gfx::ColorSpace::TransferID::SMPTE170M: |
| return gfx::mojom::ColorSpaceTransferID::SMPTE170M; |
| case gfx::ColorSpace::TransferID::SMPTE240M: |
| return gfx::mojom::ColorSpaceTransferID::SMPTE240M; |
| case gfx::ColorSpace::TransferID::LINEAR: |
| return gfx::mojom::ColorSpaceTransferID::LINEAR; |
| case gfx::ColorSpace::TransferID::LOG: |
| return gfx::mojom::ColorSpaceTransferID::LOG; |
| case gfx::ColorSpace::TransferID::LOG_SQRT: |
| return gfx::mojom::ColorSpaceTransferID::LOG_SQRT; |
| case gfx::ColorSpace::TransferID::IEC61966_2_4: |
| return gfx::mojom::ColorSpaceTransferID::IEC61966_2_4; |
| case gfx::ColorSpace::TransferID::BT1361_ECG: |
| return gfx::mojom::ColorSpaceTransferID::BT1361_ECG; |
| case gfx::ColorSpace::TransferID::IEC61966_2_1: |
| return gfx::mojom::ColorSpaceTransferID::IEC61966_2_1; |
| case gfx::ColorSpace::TransferID::BT2020_10: |
| return gfx::mojom::ColorSpaceTransferID::BT2020_10; |
| case gfx::ColorSpace::TransferID::BT2020_12: |
| return gfx::mojom::ColorSpaceTransferID::BT2020_12; |
| case gfx::ColorSpace::TransferID::SMPTEST2084: |
| return gfx::mojom::ColorSpaceTransferID::SMPTEST2084; |
| case gfx::ColorSpace::TransferID::SMPTEST428_1: |
| return gfx::mojom::ColorSpaceTransferID::SMPTEST428_1; |
| case gfx::ColorSpace::TransferID::ARIB_STD_B67: |
| return gfx::mojom::ColorSpaceTransferID::ARIB_STD_B67; |
| case gfx::ColorSpace::TransferID::IEC61966_2_1_HDR: |
| return gfx::mojom::ColorSpaceTransferID::IEC61966_2_1_HDR; |
| case gfx::ColorSpace::TransferID::LINEAR_HDR: |
| return gfx::mojom::ColorSpaceTransferID::LINEAR_HDR; |
| case gfx::ColorSpace::TransferID::CUSTOM: |
| return gfx::mojom::ColorSpaceTransferID::CUSTOM; |
| case gfx::ColorSpace::TransferID::CUSTOM_HDR: |
| return gfx::mojom::ColorSpaceTransferID::CUSTOM_HDR; |
| case gfx::ColorSpace::TransferID::PIECEWISE_HDR: |
| return gfx::mojom::ColorSpaceTransferID::PIECEWISE_HDR; |
| } |
| NOTREACHED(); |
| return gfx::mojom::ColorSpaceTransferID::INVALID; |
| } |
| |
| static bool FromMojom(gfx::mojom::ColorSpaceTransferID input, |
| gfx::ColorSpace::TransferID* out) { |
| switch (input) { |
| case gfx::mojom::ColorSpaceTransferID::INVALID: |
| *out = gfx::ColorSpace::TransferID::INVALID; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::BT709: |
| *out = gfx::ColorSpace::TransferID::BT709; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::BT709_APPLE: |
| *out = gfx::ColorSpace::TransferID::BT709_APPLE; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::GAMMA18: |
| *out = gfx::ColorSpace::TransferID::GAMMA18; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::GAMMA22: |
| *out = gfx::ColorSpace::TransferID::GAMMA22; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::GAMMA24: |
| *out = gfx::ColorSpace::TransferID::GAMMA24; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::GAMMA28: |
| *out = gfx::ColorSpace::TransferID::GAMMA28; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::SMPTE170M: |
| *out = gfx::ColorSpace::TransferID::SMPTE170M; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::SMPTE240M: |
| *out = gfx::ColorSpace::TransferID::SMPTE240M; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::LINEAR: |
| *out = gfx::ColorSpace::TransferID::LINEAR; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::LOG: |
| *out = gfx::ColorSpace::TransferID::LOG; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::LOG_SQRT: |
| *out = gfx::ColorSpace::TransferID::LOG_SQRT; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::IEC61966_2_4: |
| *out = gfx::ColorSpace::TransferID::IEC61966_2_4; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::BT1361_ECG: |
| *out = gfx::ColorSpace::TransferID::BT1361_ECG; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::IEC61966_2_1: |
| *out = gfx::ColorSpace::TransferID::IEC61966_2_1; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::BT2020_10: |
| *out = gfx::ColorSpace::TransferID::BT2020_10; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::BT2020_12: |
| *out = gfx::ColorSpace::TransferID::BT2020_12; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::SMPTEST2084: |
| *out = gfx::ColorSpace::TransferID::SMPTEST2084; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::SMPTEST428_1: |
| *out = gfx::ColorSpace::TransferID::SMPTEST428_1; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::ARIB_STD_B67: |
| *out = gfx::ColorSpace::TransferID::ARIB_STD_B67; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::IEC61966_2_1_HDR: |
| *out = gfx::ColorSpace::TransferID::IEC61966_2_1_HDR; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::LINEAR_HDR: |
| *out = gfx::ColorSpace::TransferID::LINEAR_HDR; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::CUSTOM: |
| *out = gfx::ColorSpace::TransferID::CUSTOM; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::CUSTOM_HDR: |
| *out = gfx::ColorSpace::TransferID::CUSTOM_HDR; |
| return true; |
| case gfx::mojom::ColorSpaceTransferID::PIECEWISE_HDR: |
| *out = gfx::ColorSpace::TransferID::PIECEWISE_HDR; |
| return true; |
| } |
| NOTREACHED(); |
| return false; |
| } |
| }; |
| |
| template <> |
| struct EnumTraits<gfx::mojom::ColorSpaceMatrixID, gfx::ColorSpace::MatrixID> { |
| static gfx::mojom::ColorSpaceMatrixID ToMojom( |
| gfx::ColorSpace::MatrixID input) { |
| switch (input) { |
| case gfx::ColorSpace::MatrixID::INVALID: |
| return gfx::mojom::ColorSpaceMatrixID::INVALID; |
| case gfx::ColorSpace::MatrixID::RGB: |
| return gfx::mojom::ColorSpaceMatrixID::RGB; |
| case gfx::ColorSpace::MatrixID::BT709: |
| return gfx::mojom::ColorSpaceMatrixID::BT709; |
| case gfx::ColorSpace::MatrixID::FCC: |
| return gfx::mojom::ColorSpaceMatrixID::FCC; |
| case gfx::ColorSpace::MatrixID::BT470BG: |
| return gfx::mojom::ColorSpaceMatrixID::BT470BG; |
| case gfx::ColorSpace::MatrixID::SMPTE170M: |
| return gfx::mojom::ColorSpaceMatrixID::SMPTE170M; |
| case gfx::ColorSpace::MatrixID::SMPTE240M: |
| return gfx::mojom::ColorSpaceMatrixID::SMPTE240M; |
| case gfx::ColorSpace::MatrixID::YCOCG: |
| return gfx::mojom::ColorSpaceMatrixID::YCOCG; |
| case gfx::ColorSpace::MatrixID::BT2020_NCL: |
| return gfx::mojom::ColorSpaceMatrixID::BT2020_NCL; |
| case gfx::ColorSpace::MatrixID::BT2020_CL: |
| return gfx::mojom::ColorSpaceMatrixID::BT2020_CL; |
| case gfx::ColorSpace::MatrixID::YDZDX: |
| return gfx::mojom::ColorSpaceMatrixID::YDZDX; |
| case gfx::ColorSpace::MatrixID::GBR: |
| return gfx::mojom::ColorSpaceMatrixID::GBR; |
| } |
| NOTREACHED(); |
| return gfx::mojom::ColorSpaceMatrixID::INVALID; |
| } |
| |
| static bool FromMojom(gfx::mojom::ColorSpaceMatrixID input, |
| gfx::ColorSpace::MatrixID* out) { |
| switch (input) { |
| case gfx::mojom::ColorSpaceMatrixID::INVALID: |
| *out = gfx::ColorSpace::MatrixID::INVALID; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::RGB: |
| *out = gfx::ColorSpace::MatrixID::RGB; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::BT709: |
| *out = gfx::ColorSpace::MatrixID::BT709; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::FCC: |
| *out = gfx::ColorSpace::MatrixID::FCC; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::BT470BG: |
| *out = gfx::ColorSpace::MatrixID::BT470BG; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::SMPTE170M: |
| *out = gfx::ColorSpace::MatrixID::SMPTE170M; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::SMPTE240M: |
| *out = gfx::ColorSpace::MatrixID::SMPTE240M; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::YCOCG: |
| *out = gfx::ColorSpace::MatrixID::YCOCG; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::BT2020_NCL: |
| *out = gfx::ColorSpace::MatrixID::BT2020_NCL; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::BT2020_CL: |
| *out = gfx::ColorSpace::MatrixID::BT2020_CL; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::YDZDX: |
| *out = gfx::ColorSpace::MatrixID::YDZDX; |
| return true; |
| case gfx::mojom::ColorSpaceMatrixID::GBR: |
| *out = gfx::ColorSpace::MatrixID::GBR; |
| return true; |
| } |
| NOTREACHED(); |
| return false; |
| } |
| }; |
| |
| template <> |
| struct EnumTraits<gfx::mojom::ColorSpaceRangeID, gfx::ColorSpace::RangeID> { |
| static gfx::mojom::ColorSpaceRangeID ToMojom(gfx::ColorSpace::RangeID input) { |
| switch (input) { |
| case gfx::ColorSpace::RangeID::INVALID: |
| return gfx::mojom::ColorSpaceRangeID::INVALID; |
| case gfx::ColorSpace::RangeID::LIMITED: |
| return gfx::mojom::ColorSpaceRangeID::LIMITED; |
| case gfx::ColorSpace::RangeID::FULL: |
| return gfx::mojom::ColorSpaceRangeID::FULL; |
| case gfx::ColorSpace::RangeID::DERIVED: |
| return gfx::mojom::ColorSpaceRangeID::DERIVED; |
| } |
| NOTREACHED(); |
| return gfx::mojom::ColorSpaceRangeID::INVALID; |
| } |
| |
| static bool FromMojom(gfx::mojom::ColorSpaceRangeID input, |
| gfx::ColorSpace::RangeID* out) { |
| switch (input) { |
| case gfx::mojom::ColorSpaceRangeID::INVALID: |
| *out = gfx::ColorSpace::RangeID::INVALID; |
| return true; |
| case gfx::mojom::ColorSpaceRangeID::LIMITED: |
| *out = gfx::ColorSpace::RangeID::LIMITED; |
| return true; |
| case gfx::mojom::ColorSpaceRangeID::FULL: |
| *out = gfx::ColorSpace::RangeID::FULL; |
| return true; |
| case gfx::mojom::ColorSpaceRangeID::DERIVED: |
| *out = gfx::ColorSpace::RangeID::DERIVED; |
| return true; |
| } |
| NOTREACHED(); |
| return false; |
| } |
| }; |
| |
| template <> |
| struct COMPONENT_EXPORT(GFX_SHARED_MOJOM_TRAITS) |
| StructTraits<gfx::mojom::ColorSpaceDataView, gfx::ColorSpace> { |
| static gfx::ColorSpace::PrimaryID primaries(const gfx::ColorSpace& input) { |
| return input.primaries_; |
| } |
| |
| static gfx::ColorSpace::TransferID transfer(const gfx::ColorSpace& input) { |
| return input.transfer_; |
| } |
| |
| static gfx::ColorSpace::MatrixID matrix(const gfx::ColorSpace& input) { |
| return input.matrix_; |
| } |
| |
| static gfx::ColorSpace::RangeID range(const gfx::ColorSpace& input) { |
| return input.range_; |
| } |
| |
| static base::span<const float> custom_primary_matrix( |
| const gfx::ColorSpace& input) { |
| return input.custom_primary_matrix_; |
| } |
| |
| static base::span<const float> transfer_params(const gfx::ColorSpace& input) { |
| return input.transfer_params_; |
| } |
| |
| static bool Read(gfx::mojom::ColorSpaceDataView data, gfx::ColorSpace* out); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // UI_GFX_MOJOM_COLOR_SPACE_MOJOM_TRAITS_H_ |