blob: 2da3c28af30a6a7c7e069552e0c10e3b0b6034be [file] [log] [blame]
// Copyright 2017 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_OZONE_PUBLIC_MOJOM_OVERLAY_SURFACE_CANDIDATE_MOJOM_TRAITS_H_
#define UI_OZONE_PUBLIC_MOJOM_OVERLAY_SURFACE_CANDIDATE_MOJOM_TRAITS_H_
#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
#include "ui/gfx/mojom/buffer_types_mojom_traits.h"
#include "ui/gfx/mojom/overlay_transform_mojom_traits.h"
#include "ui/ozone/public/mojom/overlay_surface_candidate.mojom.h"
#include "ui/ozone/public/overlay_surface_candidate.h"
namespace mojo {
template <>
struct EnumTraits<ui::ozone::mojom::OverlayStatus, ui::OverlayStatus> {
static ui::ozone::mojom::OverlayStatus ToMojom(ui::OverlayStatus format) {
switch (format) {
case ui::OverlayStatus::OVERLAY_STATUS_PENDING:
return ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_PENDING;
case ui::OverlayStatus::OVERLAY_STATUS_ABLE:
return ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_ABLE;
case ui::OverlayStatus::OVERLAY_STATUS_NOT:
return ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_NOT;
}
NOTREACHED();
return ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_NOT;
}
static bool FromMojom(ui::ozone::mojom::OverlayStatus input,
ui::OverlayStatus* out) {
switch (input) {
case ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_PENDING:
*out = ui::OverlayStatus::OVERLAY_STATUS_PENDING;
return true;
case ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_ABLE:
*out = ui::OverlayStatus::OVERLAY_STATUS_ABLE;
return true;
case ui::ozone::mojom::OverlayStatus::OVERLAY_STATUS_NOT:
*out = ui::OverlayStatus::OVERLAY_STATUS_NOT;
return true;
}
NOTREACHED();
return false;
}
};
template <>
struct StructTraits<ui::ozone::mojom::OverlaySurfaceCandidateDataView,
ui::OverlaySurfaceCandidate> {
static const gfx::OverlayTransform& transform(
const ui::OverlaySurfaceCandidate& osc) {
return osc.transform;
}
static const gfx::BufferFormat& format(
const ui::OverlaySurfaceCandidate& osc) {
return osc.format;
}
static const gfx::Size& buffer_size(const ui::OverlaySurfaceCandidate& osc) {
return osc.buffer_size;
}
static const gfx::RectF& display_rect(
const ui::OverlaySurfaceCandidate& osc) {
return osc.display_rect;
}
static const gfx::RectF& crop_rect(const ui::OverlaySurfaceCandidate& osc) {
return osc.crop_rect;
}
static const gfx::Rect& clip_rect(const ui::OverlaySurfaceCandidate& osc) {
return osc.clip_rect;
}
static bool is_clipped(const ui::OverlaySurfaceCandidate& osc) {
return osc.is_clipped;
}
static int plane_z_order(const ui::OverlaySurfaceCandidate& osc) {
return osc.plane_z_order;
}
static bool overlay_handled(const ui::OverlaySurfaceCandidate& osc) {
return osc.overlay_handled;
}
static bool Read(ui::ozone::mojom::OverlaySurfaceCandidateDataView data,
ui::OverlaySurfaceCandidate* out) {
out->is_clipped = data.is_clipped();
out->plane_z_order = data.plane_z_order();
out->overlay_handled = data.overlay_handled();
return data.ReadTransform(&out->transform) &&
data.ReadFormat(&out->format) &&
data.ReadBufferSize(&out->buffer_size) &&
data.ReadDisplayRect(&out->display_rect) &&
data.ReadCropRect(&out->crop_rect) &&
data.ReadClipRect(&out->clip_rect);
}
};
} // namespace mojo
#endif // UI_OZONE_PUBLIC_MOJOM_OVERLAY_SURFACE_CANDIDATE_MOJOM_TRAITS_H_