blob: 73fcf4e24ba359a3fd7f270f5fdac2276c72ed97 [file] [log] [blame]
// 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
*/