| // Copyright 2016 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 SKIA_PUBLIC_INTERFACES_IMAGE_INFO_MOJOM_SHARED_H_ |
| #define SKIA_PUBLIC_INTERFACES_IMAGE_INFO_MOJOM_SHARED_H_ |
| |
| #include <stdint.h> |
| |
| #include <functional> |
| #include <ostream> |
| #include <type_traits> |
| #include <utility> |
| |
| #include "base/compiler_specific.h" |
| #include "base/containers/flat_map.h" |
| #include "mojo/public/cpp/bindings/array_data_view.h" |
| #include "mojo/public/cpp/bindings/enum_traits.h" |
| #include "mojo/public/cpp/bindings/interface_data_view.h" |
| #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
| #include "mojo/public/cpp/bindings/lib/serialization.h" |
| #include "mojo/public/cpp/bindings/map_data_view.h" |
| #include "mojo/public/cpp/bindings/string_data_view.h" |
| #include "skia/public/interfaces/image_info.mojom-shared-internal.h" |
| |
| #include "mojo/public/cpp/bindings/lib/interface_serialization.h" |
| |
| |
| #include "mojo/public/cpp/bindings/native_enum.h" |
| #include "mojo/public/cpp/bindings/lib/native_struct_serialization.h" |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace skia { |
| namespace mojom { |
| class ImageInfoDataView; |
| |
| |
| |
| } // namespace mojom |
| } // namespace skia |
| |
| namespace mojo { |
| namespace internal { |
| |
| template <> |
| struct MojomTypeTraits<::skia::mojom::ImageInfoDataView> { |
| using Data = ::skia::mojom::internal::ImageInfo_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT; |
| }; |
| |
| } // namespace internal |
| } // namespace mojo |
| |
| |
| namespace skia { |
| namespace mojom { |
| |
| |
| // @generated_from: skia.mojom.ColorType |
| enum class ColorType : int32_t { |
| |
| // @generated_from: skia.mojom.ColorType.UNKNOWN |
| UNKNOWN, |
| |
| // @generated_from: skia.mojom.ColorType.ALPHA_8 |
| ALPHA_8, |
| |
| // @generated_from: skia.mojom.ColorType.RGB_565 |
| RGB_565, |
| |
| // @generated_from: skia.mojom.ColorType.ARGB_4444 |
| ARGB_4444, |
| |
| // @generated_from: skia.mojom.ColorType.RGBA_8888 |
| RGBA_8888, |
| |
| // @generated_from: skia.mojom.ColorType.BGRA_8888 |
| BGRA_8888, |
| |
| // @generated_from: skia.mojom.ColorType.INDEX_8 |
| INDEX_8, |
| |
| // @generated_from: skia.mojom.ColorType.GRAY_8 |
| GRAY_8, |
| kMinValue = 0, |
| kMaxValue = 7, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, ColorType value); |
| inline bool IsKnownEnumValue(ColorType value) { |
| return internal::ColorType_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| |
| |
| // @generated_from: skia.mojom.AlphaType |
| enum class AlphaType : int32_t { |
| |
| // @generated_from: skia.mojom.AlphaType.UNKNOWN |
| UNKNOWN, |
| |
| // @generated_from: skia.mojom.AlphaType.ALPHA_TYPE_OPAQUE |
| ALPHA_TYPE_OPAQUE, |
| |
| // @generated_from: skia.mojom.AlphaType.PREMUL |
| PREMUL, |
| |
| // @generated_from: skia.mojom.AlphaType.UNPREMUL |
| UNPREMUL, |
| kMinValue = 0, |
| kMaxValue = 3, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, AlphaType value); |
| inline bool IsKnownEnumValue(AlphaType value) { |
| return internal::AlphaType_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| class ImageInfoDataView { |
| public: |
| ImageInfoDataView() {} |
| |
| ImageInfoDataView( |
| internal::ImageInfo_Data* data, |
| mojo::internal::SerializationContext* context) |
| : data_(data), context_(context) {} |
| |
| bool is_null() const { return !data_; } |
| template <typename UserType> |
| WARN_UNUSED_RESULT bool ReadColorType(UserType* output) const { |
| auto data_value = data_->color_type; |
| return mojo::internal::Deserialize<::skia::mojom::ColorType>( |
| data_value, output); |
| } |
| |
| ColorType color_type() const { |
| return static_cast<ColorType>(data_->color_type); |
| } |
| template <typename UserType> |
| WARN_UNUSED_RESULT bool ReadAlphaType(UserType* output) const { |
| auto data_value = data_->alpha_type; |
| return mojo::internal::Deserialize<::skia::mojom::AlphaType>( |
| data_value, output); |
| } |
| |
| AlphaType alpha_type() const { |
| return static_cast<AlphaType>(data_->alpha_type); |
| } |
| inline void GetSerializedColorSpaceDataView( |
| mojo::ArrayDataView<uint8_t>* output); |
| |
| template <typename UserType> |
| WARN_UNUSED_RESULT bool ReadSerializedColorSpace(UserType* output) { |
| auto* pointer = data_->serialized_color_space.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<uint8_t>>( |
| pointer, output, context_); |
| } |
| uint32_t width() const { |
| return data_->width; |
| } |
| uint32_t height() const { |
| return data_->height; |
| } |
| private: |
| internal::ImageInfo_Data* data_ = nullptr; |
| mojo::internal::SerializationContext* context_ = nullptr; |
| }; |
| |
| |
| |
| } // namespace mojom |
| } // namespace skia |
| |
| namespace std { |
| |
| template <> |
| struct hash<::skia::mojom::ColorType> |
| : public mojo::internal::EnumHashImpl<::skia::mojom::ColorType> {}; |
| |
| template <> |
| struct hash<::skia::mojom::AlphaType> |
| : public mojo::internal::EnumHashImpl<::skia::mojom::AlphaType> {}; |
| |
| } // namespace std |
| |
| namespace mojo { |
| |
| |
| template <> |
| struct EnumTraits<::skia::mojom::ColorType, ::skia::mojom::ColorType> { |
| static ::skia::mojom::ColorType ToMojom(::skia::mojom::ColorType input) { return input; } |
| static bool FromMojom(::skia::mojom::ColorType input, ::skia::mojom::ColorType* output) { |
| *output = input; |
| return true; |
| } |
| }; |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::skia::mojom::ColorType, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::skia::mojom::ColorType, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(static_cast<::skia::mojom::ColorType>(input), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| template <> |
| struct EnumTraits<::skia::mojom::AlphaType, ::skia::mojom::AlphaType> { |
| static ::skia::mojom::AlphaType ToMojom(::skia::mojom::AlphaType input) { return input; } |
| static bool FromMojom(::skia::mojom::AlphaType input, ::skia::mojom::AlphaType* output) { |
| *output = input; |
| return true; |
| } |
| }; |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::skia::mojom::AlphaType, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::skia::mojom::AlphaType, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(static_cast<::skia::mojom::AlphaType>(input), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::skia::mojom::ImageInfoDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::skia::mojom::ImageInfoDataView, UserType>; |
| |
| static void Serialize(MaybeConstUserType& input, |
| Buffer* buffer, |
| ::skia::mojom::internal::ImageInfo_Data::BufferWriter* output, |
| SerializationContext* context) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| (*output).Allocate(buffer); |
| mojo::internal::Serialize<::skia::mojom::ColorType>( |
| Traits::color_type(input), &(*output)->color_type); |
| mojo::internal::Serialize<::skia::mojom::AlphaType>( |
| Traits::alpha_type(input), &(*output)->alpha_type); |
| decltype(Traits::serialized_color_space(input)) in_serialized_color_space = Traits::serialized_color_space(input); |
| typename decltype((*output)->serialized_color_space)::BaseType::BufferWriter |
| serialized_color_space_writer; |
| const mojo::internal::ContainerValidateParams serialized_color_space_validate_params( |
| 0, false, nullptr); |
| mojo::internal::Serialize<mojo::ArrayDataView<uint8_t>>( |
| in_serialized_color_space, buffer, &serialized_color_space_writer, &serialized_color_space_validate_params, |
| context); |
| (*output)->serialized_color_space.Set( |
| serialized_color_space_writer.is_null() ? nullptr : serialized_color_space_writer.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| (*output)->serialized_color_space.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null serialized_color_space in ImageInfo struct"); |
| (*output)->width = Traits::width(input); |
| (*output)->height = Traits::height(input); |
| } |
| |
| static bool Deserialize(::skia::mojom::internal::ImageInfo_Data* input, |
| UserType* output, |
| SerializationContext* context) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::skia::mojom::ImageInfoDataView data_view(input, context); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| } // namespace mojo |
| |
| |
| namespace skia { |
| namespace mojom { |
| |
| inline void ImageInfoDataView::GetSerializedColorSpaceDataView( |
| mojo::ArrayDataView<uint8_t>* output) { |
| auto pointer = data_->serialized_color_space.Get(); |
| *output = mojo::ArrayDataView<uint8_t>(pointer, context_); |
| } |
| |
| |
| |
| } // namespace mojom |
| } // namespace skia |
| |
| #endif // SKIA_PUBLIC_INTERFACES_IMAGE_INFO_MOJOM_SHARED_H_
|
| /* Metadata comment
|
| eyJtZXRhIjogW3siZW5kIjogMTczMCwgImJlZ2luIjogMTcyMSwgImVkZ2UiOiAiJS9reXRoZS9l
|
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
|
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
|
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogInNraWEubW9qb20uQ29sb3JUeXBlIn19LCB7ImVuZCI6
|
| IDE4MDQsICJiZWdpbiI6IDE3OTcsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
|
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
|
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
|
| dHVyZSI6ICJza2lhLm1vam9tLkNvbG9yVHlwZS5VTktOT1dOIn19LCB7ImVuZCI6IDE4NjcsICJi
|
| ZWdpbiI6IDE4NjAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh
|
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
|
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJz
|
| a2lhLm1vam9tLkNvbG9yVHlwZS5BTFBIQV84In19LCB7ImVuZCI6IDE5MzAsICJiZWdpbiI6IDE5
|
| MjMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm
|
| aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy
|
| b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJza2lhLm1vam9t
|
| LkNvbG9yVHlwZS5SR0JfNTY1In19LCB7ImVuZCI6IDE5OTcsICJiZWdpbiI6IDE5ODgsICJlZGdl
|
| IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
|
| bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
|
| IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJza2lhLm1vam9tLkNvbG9yVHlw
|
| ZS5BUkdCXzQ0NDQifX0sIHsiZW5kIjogMjA2NCwgImJlZ2luIjogMjA1NSwgImVkZ2UiOiAiJS9r
|
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog
|
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu
|
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInNraWEubW9qb20uQ29sb3JUeXBlLlJHQkFf
|
| ODg4OCJ9fSwgeyJlbmQiOiAyMTMxLCAiYmVnaW4iOiAyMTIyLCAiZWRnZSI6ICIlL2t5dGhlL2Vk
|
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1
|
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6
|
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAic2tpYS5tb2pvbS5Db2xvclR5cGUuQkdSQV84ODg4In19
|
| LCB7ImVuZCI6IDIxOTQsICJiZWdpbiI6IDIxODcsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
|
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo
|
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t
|
| IiwgInNpZ25hdHVyZSI6ICJza2lhLm1vam9tLkNvbG9yVHlwZS5JTkRFWF84In19LCB7ImVuZCI6
|
| IDIyNTUsICJiZWdpbiI6IDIyNDksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
|
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
|
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
|
| dHVyZSI6ICJza2lhLm1vam9tLkNvbG9yVHlwZS5HUkFZXzgifX0sIHsiZW5kIjogMjU1NSwgImJl
|
| Z2luIjogMjU0NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu
|
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
|
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInNr
|
| aWEubW9qb20uQWxwaGFUeXBlIn19LCB7ImVuZCI6IDI2MjksICJiZWdpbiI6IDI2MjIsICJlZGdl
|
| IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
|
| bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
|
| IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJza2lhLm1vam9tLkFscGhhVHlw
|
| ZS5VTktOT1dOIn19LCB7ImVuZCI6IDI3MTIsICJiZWdpbiI6IDI2OTUsICJlZGdlIjogIiUva3l0
|
| aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsi
|
| Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1
|
| YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJza2lhLm1vam9tLkFscGhhVHlwZS5BTFBIQV9U
|
| WVBFX09QQVFVRSJ9fSwgeyJlbmQiOiAyNzczLCAiYmVnaW4iOiAyNzY3LCAiZWRnZSI6ICIlL2t5
|
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7
|
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n
|
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAic2tpYS5tb2pvbS5BbHBoYVR5cGUuUFJFTVVM
|
| In19LCB7ImVuZCI6IDI4MzgsICJiZWdpbiI6IDI4MzAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
|
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog
|
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v
|
| am9tIiwgInNpZ25hdHVyZSI6ICJza2lhLm1vam9tLkFscGhhVHlwZS5VTlBSRU1VTCJ9fV0sICJ0
|
| eXBlIjogImt5dGhlMCJ9
|
| */ |