blob: 8745cd2b623255d70c98093d1eeed47243072821 [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_DISPLAY_MOJOM_DISPLAY_SNAPSHOT_MOJOM_TRAITS_H_
#define UI_DISPLAY_MOJOM_DISPLAY_SNAPSHOT_MOJOM_TRAITS_H_
#include "ipc/ipc_message_utils.h"
#include "ui/display/mojom/display_constants_mojom_traits.h"
#include "ui/display/mojom/display_mode_mojom_traits.h"
#include "ui/display/mojom/display_snapshot.mojom.h"
#include "ui/display/types/display_mode.h"
#include "ui/display/types/display_snapshot.h"
#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
#include "ui/gfx/ipc/color/gfx_param_traits.h"
namespace mojo {
template <>
struct StructTraits<display::mojom::DisplaySnapshotDataView,
std::unique_ptr<display::DisplaySnapshot>> {
static int64_t display_id(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->display_id();
}
static const gfx::Point& origin(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->origin();
}
static const gfx::Size& physical_size(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->physical_size();
}
static display::DisplayConnectionType type(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->type();
}
static display::PanelOrientation panel_orientation(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->panel_orientation();
}
static bool is_aspect_preserving_scaling(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->is_aspect_preserving_scaling();
}
static bool has_overscan(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->has_overscan();
}
static display::PrivacyScreenState privacy_screen_state(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->privacy_screen_state();
}
static bool has_color_correction_matrix(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->has_color_correction_matrix();
}
static bool color_correction_in_linear_space(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->color_correction_in_linear_space();
}
static const gfx::ColorSpace& color_space(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->color_space();
}
static uint32_t bits_per_channel(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->bits_per_channel();
}
static std::string display_name(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->display_name();
}
static const base::FilePath& sys_path(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->sys_path();
}
static std::vector<uint8_t> edid(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->edid();
}
static std::vector<std::unique_ptr<display::DisplayMode>> modes(
const std::unique_ptr<display::DisplaySnapshot>& snapshot);
static uint64_t current_mode_index(
const std::unique_ptr<display::DisplaySnapshot>& snapshot);
static bool has_current_mode(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->current_mode() != nullptr;
}
static uint64_t native_mode_index(
const std::unique_ptr<display::DisplaySnapshot>& snapshot);
static bool has_native_mode(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->native_mode() != nullptr;
}
static int64_t product_code(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->product_code();
}
static int32_t year_of_manufacture(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->year_of_manufacture();
}
static const gfx::Size& maximum_cursor_size(
const std::unique_ptr<display::DisplaySnapshot>& snapshot) {
return snapshot->maximum_cursor_size();
}
static bool Read(display::mojom::DisplaySnapshotDataView data,
std::unique_ptr<display::DisplaySnapshot>* out);
};
} // namespace mojo
#endif // UI_DISPLAY_MOJOM_DISPLAY_SNAPSHOT_MOJOM_TRAITS_H_