1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ui/ozone/common/chromeos/display_snapshot_proxy.h"
6
7#include "ui/ozone/common/chromeos/display_mode_proxy.h"
8#include "ui/ozone/common/gpu/ozone_gpu_message_params.h"
9
10namespace ui {
11
12namespace {
13
14bool SameModes(const DisplayMode_Params& lhs, const DisplayMode_Params& rhs) {
15  return lhs.size == rhs.size && lhs.is_interlaced == rhs.is_interlaced &&
16      lhs.refresh_rate == rhs.refresh_rate;
17}
18
19}  // namespace
20
21DisplaySnapshotProxy::DisplaySnapshotProxy(const DisplaySnapshot_Params& params)
22    : DisplaySnapshot(params.display_id,
23                      params.has_proper_display_id,
24                      params.origin,
25                      params.physical_size,
26                      params.type,
27                      params.is_aspect_preserving_scaling,
28                      params.has_overscan,
29                      params.display_name,
30                      std::vector<const DisplayMode*>(),
31                      NULL,
32                      NULL),
33      string_representation_(params.string_representation) {
34  for (size_t i = 0; i < params.modes.size(); ++i) {
35    modes_.push_back(new DisplayModeProxy(params.modes[i]));
36
37    if (params.has_current_mode &&
38        SameModes(params.modes[i], params.current_mode))
39      current_mode_ = modes_.back();
40
41    if (params.has_native_mode &&
42        SameModes(params.modes[i], params.native_mode))
43      native_mode_ = modes_.back();
44  }
45}
46
47DisplaySnapshotProxy::~DisplaySnapshotProxy() {}
48
49std::string DisplaySnapshotProxy::ToString() const {
50  return string_representation_;
51}
52
53}  // namespace ui
54