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.
5 #include "ui/ozone/common/display_util.h"
7 #include "base/command_line.h"
8 #include "ui/display/types/display_mode.h"
9 #include "ui/display/types/display_snapshot.h"
10 #include "ui/ozone/public/ozone_switches.h"
16 const int64_t kDummyDisplayId
= 1;
20 FindDisplayById::FindDisplayById(int64_t display_id
) : display_id_(display_id
) {
23 bool FindDisplayById::operator()(const DisplaySnapshot_Params
& display
) const {
24 return display
.display_id
== display_id_
;
27 DisplayMode_Params
GetDisplayModeParams(const DisplayMode
& mode
) {
28 DisplayMode_Params params
;
29 params
.size
= mode
.size();
30 params
.is_interlaced
= mode
.is_interlaced();
31 params
.refresh_rate
= mode
.refresh_rate();
36 DisplaySnapshot_Params
GetDisplaySnapshotParams(
37 const DisplaySnapshot
& display
) {
38 DisplaySnapshot_Params params
;
39 params
.display_id
= display
.display_id();
40 params
.origin
= display
.origin();
41 params
.physical_size
= display
.physical_size();
42 params
.type
= display
.type();
43 params
.is_aspect_preserving_scaling
= display
.is_aspect_preserving_scaling();
44 params
.has_overscan
= display
.has_overscan();
45 params
.display_name
= display
.display_name();
46 for (size_t i
= 0; i
< display
.modes().size(); ++i
)
47 params
.modes
.push_back(GetDisplayModeParams(*display
.modes()[i
]));
49 params
.has_current_mode
= display
.current_mode() != NULL
;
50 if (params
.has_current_mode
)
51 params
.current_mode
= GetDisplayModeParams(*display
.current_mode());
53 params
.has_native_mode
= display
.native_mode() != NULL
;
54 if (params
.has_native_mode
)
55 params
.native_mode
= GetDisplayModeParams(*display
.native_mode());
57 params
.string_representation
= display
.ToString();
62 DisplaySnapshot_Params
CreateSnapshotFromCommandLine() {
63 DisplaySnapshot_Params display_param
;
65 CommandLine
* cmd
= CommandLine::ForCurrentProcess();
67 cmd
->GetSwitchValueASCII(switches::kOzoneInitialDisplayBounds
);
68 std::string physical_spec
=
69 cmd
->GetSwitchValueASCII(switches::kOzoneInitialDisplayPhysicalSizeMm
);
76 if (sscanf(spec
.c_str(), "%dx%d", &width
, &height
) < 2)
79 if (width
== 0 || height
== 0)
82 int physical_width
= 0;
83 int physical_height
= 0;
84 sscanf(physical_spec
.c_str(), "%dx%d", &physical_width
, &physical_height
);
86 DisplayMode_Params mode_param
;
87 mode_param
.size
= gfx::Size(width
, height
);
88 mode_param
.refresh_rate
= 60;
90 display_param
.display_id
= kDummyDisplayId
;
91 display_param
.modes
.push_back(mode_param
);
92 display_param
.type
= DISPLAY_CONNECTION_TYPE_INTERNAL
;
93 display_param
.physical_size
= gfx::Size(physical_width
, physical_height
);
94 display_param
.has_current_mode
= true;
95 display_param
.current_mode
= mode_param
;
96 display_param
.has_native_mode
= true;
97 display_param
.native_mode
= mode_param
;