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"
27 #include "mir_toolkit/common.h"
28 
29 #include <functional>
30 #include <vector>
31 #include <memory>
32 
33 namespace mir
34 {
35 namespace graphics
36 {
37 namespace detail { struct GraphicsConfCardIdTag; struct GraphicsConfOutputIdTag; }
38 
41 
46 {
47  DisplayConfigurationCardId id;
49 };
50 
55 {
56  unknown = mir_output_type_unknown,
74 };
75 
80 {
82  double vrefresh_hz;
83 };
84 
89 {
91  DisplayConfigurationOutputId id;
93  DisplayConfigurationCardId card_id;
97  std::vector<MirPixelFormat> pixel_formats;
99  std::vector<DisplayConfigurationMode> modes;
105  bool connected;
107  bool used;
117 
119  float scale;
122 
125 
129 
131  std::vector<uint8_t> edid;
132 
135  geometry::Rectangle extents() const;
136  bool valid() const;
137 };
138 
144 {
145  DisplayConfigurationOutputId const& id;
146  DisplayConfigurationCardId const& card_id;
148  std::vector<MirPixelFormat> const& pixel_formats;
149  std::vector<DisplayConfigurationMode> const& modes;
150  uint32_t const& preferred_mode_index;
152  bool const& connected;
153  bool& used;
159  float& scale;
164  std::vector<uint8_t const> const& edid;
165 
167  geometry::Rectangle extents() const;
168 };
169 
170 std::ostream& operator<<(std::ostream& out, DisplayConfigurationCard const& val);
171 bool operator==(DisplayConfigurationCard const& val1, DisplayConfigurationCard const& val2);
172 bool operator!=(DisplayConfigurationCard const& val1, DisplayConfigurationCard const& val2);
173 
174 std::ostream& operator<<(std::ostream& out, DisplayConfigurationMode const& val);
175 bool operator==(DisplayConfigurationMode const& val1, DisplayConfigurationMode const& val2);
176 bool operator!=(DisplayConfigurationMode const& val1, DisplayConfigurationMode const& val2);
177 
178 std::ostream& operator<<(std::ostream& out, DisplayConfigurationOutput const& val);
181 
186 {
187 public:
188  virtual ~DisplayConfiguration() = default;
189 
191  virtual void for_each_card(std::function<void(DisplayConfigurationCard const&)> f) const = 0;
193  virtual void for_each_output(std::function<void(DisplayConfigurationOutput const&)> f) const = 0;
194  virtual void for_each_output(std::function<void(UserDisplayConfigurationOutput&)> f) = 0;
195 
196  virtual std::unique_ptr<DisplayConfiguration> clone() const = 0;
197 
198  virtual bool valid() const;
199 
200 protected:
201  DisplayConfiguration() = default;
202  DisplayConfiguration(DisplayConfiguration const& c) = delete;
203  DisplayConfiguration& operator=(DisplayConfiguration const& c) = delete;
204 };
205 
206 bool operator==(DisplayConfiguration const& lhs, DisplayConfiguration const& rhs);
207 bool operator!=(DisplayConfiguration const& lhs, DisplayConfiguration const& rhs);
208 
209 std::ostream& operator<<(std::ostream& out, DisplayConfiguration const& val);
210 
211 }
212 }
213 
214 #endif /* MIR_GRAPHICS_DISPLAY_CONFIGURATION_H_ */
Definition: size.h:30
Mirror of a DisplayConfigurationOutput, with some fields limited to being read-only, preventing users from changing things they shouldn&#39;t.
Definition: display_configuration.h:143
Definition: as_render_target.h:27
uint32_t const & preferred_mode_index
Definition: display_configuration.h:150
Configuration information for a display card.
Definition: display_configuration.h:45
DisplayConfigurationOutputType const & type
Definition: display_configuration.h:147
Configuration information for a display output mode.
Definition: display_configuration.h:79
Definition: common.h:201
geometry::Size const & physical_size_mm
Definition: display_configuration.h:151
Definition: common.h:210
bool & used
Definition: display_configuration.h:153
Definition: common.h:213
std::vector< DisplayConfigurationMode > modes
The modes supported by the output.
Definition: display_configuration.h:99
Definition: point.h:30
DisplayConfigurationOutputId id
The output&#39;s id.
Definition: display_configuration.h:91
Definition: common.h:209
Definition: common.h:196
DisplayConfigurationOutputType type
The type of the output.
Definition: display_configuration.h:95
Definition: common.h:197
IntWrapper< detail::GraphicsConfOutputIdTag > DisplayConfigurationOutputId
Definition: display_configuration.h:40
bool operator==(BufferProperties const &lhs, BufferProperties const &rhs)
Definition: buffer_properties.h:71
float scale
Requested scale factor for this output, for HiDPI support.
Definition: display_configuration.h:119
std::vector< MirPixelFormat > pixel_formats
The pixel formats supported by the output.
Definition: display_configuration.h:97
Definition: common.h:200
uint32_t preferred_mode_index
The index in the &#39;modes&#39; vector of the preferred output mode.
Definition: display_configuration.h:101
GammaCurves gamma
The current gamma for the display.
Definition: display_configuration.h:127
MirFormFactor form_factor
Form factor of this output; phone display, tablet, monitor, TV, projector...
Definition: display_configuration.h:121
MirPixelFormat & current_format
Definition: display_configuration.h:156
double vrefresh_hz
Definition: display_configuration.h:82
Definition: common.h:204
DisplayConfigurationCardId card_id
The id of the card the output is connected to.
Definition: display_configuration.h:93
Definition: common.h:205
MirSubpixelArrangement subpixel_arrangement
Subpixel arrangement of this output.
Definition: display_configuration.h:124
MirOrientation
Direction relative to the "natural" orientation of the display.
Definition: common.h:271
std::vector< uint8_t > edid
EDID of the display, if non-empty.
Definition: display_configuration.h:131
MirSubpixelArrangement
Physical arrangement of subpixels on the physical output.
Definition: common.h:421
geometry::Size physical_size_mm
The physical size of the output.
Definition: display_configuration.h:103
DisplayConfigurationOutputType
The type of a display output.
Definition: display_configuration.h:54
bool operator!=(BufferProperties const &lhs, BufferProperties const &rhs)
Definition: buffer_properties.h:78
MirOutputGammaSupported
Supports gamma correction.
Definition: common.h:457
std::vector< uint8_t const > const & edid
Definition: display_configuration.h:164
MirFormFactor & form_factor
Definition: display_configuration.h:160
MirOrientation & orientation
Definition: display_configuration.h:158
geometry::Size size
Definition: display_configuration.h:81
MirPowerMode
Definition: common.h:186
Definition: common.h:203
bool const & connected
Definition: display_configuration.h:152
MirPowerMode power_mode
Current power mode.
Definition: display_configuration.h:115
MirOutputGammaSupported const & gamma_supported
Definition: display_configuration.h:163
MirOrientation orientation
Definition: display_configuration.h:116
MirFormFactor
Form factor associated with a physical output.
Definition: common.h:405
MirPixelFormat
32-bit pixel formats (8888): The order of components in the enum matches the order of the components ...
Definition: common.h:241
bool connected
Whether the output is connected.
Definition: display_configuration.h:105
bool used
Whether the output is used in the configuration.
Definition: display_configuration.h:107
std::ostream & operator<<(std::ostream &out, DisplayConfigurationCard const &val)
Configuration information for a display output.
Definition: display_configuration.h:88
DisplayConfigurationCardId id
Definition: display_configuration.h:47
IntWrapper< detail::GraphicsConfCardIdTag > DisplayConfigurationCardId
Definition: display_configuration.h:39
Definition: common.h:199
Definition: gamma_curves.h:32
GammaCurves & gamma
Definition: display_configuration.h:162
Definition: rectangle.h:33
Definition: common.h:202
size_t max_simultaneous_outputs
Definition: display_configuration.h:48
Definition: common.h:198
geometry::Point top_left
The top left point of this output in the virtual coordinate space.
Definition: display_configuration.h:109
geometry::Point & top_left
Definition: display_configuration.h:154
Definition: common.h:206
DisplayConfigurationOutputId const & id
Definition: display_configuration.h:145
MirSubpixelArrangement & subpixel_arrangement
Definition: display_configuration.h:161
Definition: common.h:207
std::vector< DisplayConfigurationMode > const & modes
Definition: display_configuration.h:149
DisplayConfigurationCardId const & card_id
Definition: display_configuration.h:146
MirOutputGammaSupported gamma_supported
Definition: display_configuration.h:128
Definition: common.h:208
uint32_t current_mode_index
The index in the &#39;modes&#39; vector of the current output mode.
Definition: display_configuration.h:111
Definition: common.h:212
uint32_t & current_mode_index
Definition: display_configuration.h:155
float & scale
Definition: display_configuration.h:159
Definition: common.h:211
Interface to a configuration of display cards and outputs.
Definition: display_configuration.h:185
MirPixelFormat current_format
The current output pixel format.
Definition: display_configuration.h:113
MirPowerMode & power_mode
Definition: display_configuration.h:157
std::vector< MirPixelFormat > const & pixel_formats
Definition: display_configuration.h:148

Copyright © 2012-2016 Canonical Ltd.
Generated on Tue Oct 31 05:57:28 UTC 2017