Mir
display_configuration.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com>
17  */
18 
19 #ifndef MIR_GRAPHICS_DISPLAY_CONFIGURATION_H_
20 #define MIR_GRAPHICS_DISPLAY_CONFIGURATION_H_
21 
22 #include "mir/int_wrapper.h"
23 #include "mir/geometry/size.h"
24 #include "mir/geometry/rectangle.h"
25 #include "mir/geometry/point.h"
26 #include "mir_toolkit/common.h"
27 
28 #include <functional>
29 #include <vector>
30 
31 namespace mir
32 {
33 namespace graphics
34 {
35 namespace detail { struct GraphicsConfCardIdTag; struct GraphicsConfOutputIdTag; }
36 
39 
44 {
45  DisplayConfigurationCardId id;
47 };
48 
53 {
54  unknown,
55  vga,
56  dvii,
57  dvid,
58  dvia,
59  composite,
60  svideo,
61  lvds,
62  component,
63  ninepindin,
65  hdmia,
66  hdmib,
67  tv,
68  edp
69 };
70 
75 {
77  double vrefresh_hz;
78 };
79 
84 {
86  DisplayConfigurationOutputId id;
88  DisplayConfigurationCardId card_id;
92  std::vector<MirPixelFormat> pixel_formats;
94  std::vector<DisplayConfigurationMode> modes;
100  bool connected;
102  bool used;
112 
116  bool valid() const;
117 };
118 
124 {
125  DisplayConfigurationOutputId const& id;
126  DisplayConfigurationCardId const& card_id;
128  std::vector<MirPixelFormat> const& pixel_formats;
129  std::vector<DisplayConfigurationMode> const& modes;
130  size_t const& preferred_mode_index;
132  bool const& connected;
133  bool& used;
139 
142 };
143 
144 std::ostream& operator<<(std::ostream& out, DisplayConfigurationCard const& val);
145 bool operator==(DisplayConfigurationCard const& val1, DisplayConfigurationCard const& val2);
146 bool operator!=(DisplayConfigurationCard const& val1, DisplayConfigurationCard const& val2);
147 
148 std::ostream& operator<<(std::ostream& out, DisplayConfigurationMode const& val);
149 bool operator==(DisplayConfigurationMode const& val1, DisplayConfigurationMode const& val2);
150 bool operator!=(DisplayConfigurationMode const& val1, DisplayConfigurationMode const& val2);
151 
152 std::ostream& operator<<(std::ostream& out, DisplayConfigurationOutput const& val);
155 
160 {
161 public:
163 
165  virtual void for_each_card(std::function<void(DisplayConfigurationCard const&)> f) const = 0;
167  virtual void for_each_output(std::function<void(DisplayConfigurationOutput const&)> f) const = 0;
168  virtual void for_each_output(std::function<void(UserDisplayConfigurationOutput&)> f) = 0;
169  virtual bool valid() const;
170 
171 protected:
172  DisplayConfiguration() = default;
173  DisplayConfiguration(DisplayConfiguration const& c) = delete;
175 };
176 
177 }
178 }
179 
180 #endif /* MIR_GRAPHICS_DISPLAY_CONFIGURATION_H_ */
Definition: size.h:30
size_t & current_mode_index
Definition: display_configuration.h:135
Mirror of a DisplayConfigurationOutput, with some fields limited to being read-only, preventing users from changing things they shouldn't.
Definition: display_configuration.h:123
All things Mir.
Definition: buffer_stream.h:37
Configuration information for a display card.
Definition: display_configuration.h:43
DisplayConfigurationOutputType const & type
Definition: display_configuration.h:127
Configuration information for a display output mode.
Definition: display_configuration.h:74
geometry::Size const & physical_size_mm
Definition: display_configuration.h:131
bool & used
Definition: display_configuration.h:133
std::vector< DisplayConfigurationMode > modes
The modes supported by the output.
Definition: display_configuration.h:94
Definition: point.h:30
DisplayConfigurationOutputId id
The output's id.
Definition: display_configuration.h:86
DisplayConfigurationOutputType type
The type of the output.
Definition: display_configuration.h:90
IntWrapper< detail::GraphicsConfOutputIdTag > DisplayConfigurationOutputId
Definition: display_configuration.h:38
bool operator==(BufferProperties const &lhs, BufferProperties const &rhs)
Definition: buffer_properties.h:71
std::vector< MirPixelFormat > pixel_formats
The pixel formats supported by the output.
Definition: display_configuration.h:92
virtual void for_each_output(std::function< void(DisplayConfigurationOutput const &)> f) const =0
Executes a function object for each output in the configuration.
MirPixelFormat & current_format
Definition: display_configuration.h:136
size_t current_mode_index
The index in the 'modes' vector of the current output mode.
Definition: display_configuration.h:106
double vrefresh_hz
Definition: display_configuration.h:77
DisplayConfigurationCardId card_id
The id of the card the output is connected to.
Definition: display_configuration.h:88
MirOrientation
Direction relative to the "natural" orientation of the display.
Definition: common.h:142
std::ostream & operator<<(std::ostream &out, DisplayConfigurationCard const &val)
Definition: display_configuration.cpp:81
geometry::Size physical_size_mm
The physical size of the output.
Definition: display_configuration.h:98
geometry::Rectangle extents() const
Definition: display_configuration.cpp:266
DisplayConfigurationOutputType
The type of a display output.
Definition: display_configuration.h:52
bool operator!=(BufferProperties const &lhs, BufferProperties const &rhs)
Definition: buffer_properties.h:78
size_t preferred_mode_index
The index in the 'modes' vector of the preferred output mode.
Definition: display_configuration.h:96
bool valid() const
Definition: display_configuration.cpp:217
virtual ~DisplayConfiguration()
Definition: display_configuration.h:162
MirOrientation & orientation
Definition: display_configuration.h:138
geometry::Size size
Definition: display_configuration.h:76
MirPowerMode
Definition: common.h:103
bool const & connected
Definition: display_configuration.h:132
MirPowerMode power_mode
Current power mode.
Definition: display_configuration.h:110
UserDisplayConfigurationOutput(DisplayConfigurationOutput &master)
Definition: display_configuration.cpp:247
MirOrientation orientation
Definition: display_configuration.h:111
MirPixelFormat
The order of components in a format enum matches the order of the components as they would be written...
Definition: common.h:127
DisplayConfiguration & operator=(DisplayConfiguration const &c)=delete
bool connected
Whether the output is connected.
Definition: display_configuration.h:100
size_t const & preferred_mode_index
Definition: display_configuration.h:130
bool used
Whether the output is used in the configuration.
Definition: display_configuration.h:102
Configuration information for a display output.
Definition: display_configuration.h:83
DisplayConfigurationCardId id
Definition: display_configuration.h:45
IntWrapper< detail::GraphicsConfCardIdTag > DisplayConfigurationCardId
Definition: display_configuration.h:37
virtual void for_each_card(std::function< void(DisplayConfigurationCard const &)> f) const =0
Executes a function object for each card in the configuration.
Definition: rectangle.h:33
size_t max_simultaneous_outputs
Definition: display_configuration.h:46
geometry::Point top_left
The top left point of this output in the virtual coordinate space.
Definition: display_configuration.h:104
geometry::Point & top_left
Definition: display_configuration.h:134
DisplayConfigurationOutputId const & id
Definition: display_configuration.h:125
virtual bool valid() const
Definition: display_configuration.cpp:234
geometry::Rectangle extents() const
The logical rectangle occupied by the output, based on its position, current mode and orientation (ro...
Definition: display_configuration.cpp:212
std::vector< DisplayConfigurationMode > const & modes
Definition: display_configuration.h:129
DisplayConfigurationCardId const & card_id
Definition: display_configuration.h:126
Interface to a configuration of display cards and outputs.
Definition: display_configuration.h:159
MirPixelFormat current_format
The current output pixel format.
Definition: display_configuration.h:108
MirPowerMode & power_mode
Definition: display_configuration.h:137
std::vector< MirPixelFormat > const & pixel_formats
Definition: display_configuration.h:128

Copyright © 2012,2013 Canonical Ltd.
Generated on Tue Mar 24 16:15:19 UTC 2015