Mir
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
stub_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 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 General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
17  */
18 
19 #ifndef MIR_TEST_DOUBLES_STUB_DISPLAY_CONFIGURATION_H_
20 #define MIR_TEST_DOUBLES_STUB_DISPLAY_CONFIGURATION_H_
21 
23 #include "mir/geometry/rectangle.h"
24 #include "mir_toolkit/common.h"
25 
26 #include <vector>
27 
28 namespace mir
29 {
30 namespace test
31 {
32 namespace doubles
33 {
34 
36 {
37 public:
40  {
41  }
42 
44  : graphics::DisplayConfiguration(),
45  cards(other.cards),
46  outputs(other.outputs)
47  {
48  }
49 
50  StubDisplayConfig(unsigned int num_displays)
51  : StubDisplayConfig(num_displays,
52  {
56  })
57  {
58  }
59 
60  StubDisplayConfig(std::vector<std::pair<bool,bool>> const& connected_used)
61  : StubDisplayConfig(connected_used.size())
62  {
63  for (auto i = 0u; i < outputs.size(); ++i)
64  {
65  outputs[i].connected = connected_used[i].first;
66  outputs[i].used = connected_used[i].second;
67  }
68  }
69 
70  StubDisplayConfig(unsigned int num_displays,
71  std::vector<MirPixelFormat> const& pfs)
72  {
73  /* construct a non-trivial dummy display config to send */
74  int mode_index = 0;
75  for (auto i = 0u; i < num_displays; i++)
76  {
77  std::vector<graphics::DisplayConfigurationMode> modes;
78 
79  for (auto j = 0u; j <= i; j++)
80  {
81  geometry::Size sz{mode_index*4, mode_index*3};
82  graphics::DisplayConfigurationMode mode{sz, 10.0f * mode_index };
83  mode_index++;
84  modes.push_back(mode);
85  }
86 
87  size_t mode_index = modes.size() - 1;
88  geometry::Size physical_size{};
89  geometry::Point top_left{};
90  graphics::DisplayConfigurationOutput output{
91  graphics::DisplayConfigurationOutputId{static_cast<int>(i + 1)},
92  graphics::DisplayConfigurationCardId{static_cast<int>(i)},
94  pfs, modes, i,
95  physical_size,
96  ((i % 2) == 0), // even numbers have connected==true
97  ((i % 4) == 0), // only every second even has used==true
98  top_left,
99  mode_index, pfs[0],
102  };
103 
104  outputs.push_back(output);
105 
106  graphics::DisplayConfigurationCard card{
107  graphics::DisplayConfigurationCardId{static_cast<int>(i)},
108  i + 1
109  };
110 
111  cards.push_back(card);
112  }
113 
114  };
115 
116  StubDisplayConfig(std::vector<geometry::Rectangle> const& rects)
117  {
118  int id = 1;
119  for (auto const& rect : rects)
120  {
122  {
126  std::vector<MirPixelFormat>{mir_pixel_format_abgr_8888},
127  {{rect.size, 60.0}},
128  0, geometry::Size{}, true, true, rect.top_left, 0,
131  };
132 
133  outputs.push_back(output);
134  ++id;
135  }
136 
138  graphics::DisplayConfigurationCardId{static_cast<int>(1)},
139  rects.size()
140  };
141 
142  cards.push_back(card);
143  }
144 
145  void for_each_card(std::function<void(graphics::DisplayConfigurationCard const&)> f) const override
146  {
147  for (auto const& card : cards)
148  f(card);
149  }
150 
151  void for_each_output(std::function<void(graphics::DisplayConfigurationOutput const&)> f) const override
152  {
153  for (auto& disp : outputs)
154  {
155  f(disp);
156  }
157  }
158 
159  void for_each_output(std::function<void(graphics::UserDisplayConfigurationOutput&)> f) override
160  {
161  for (auto& disp : outputs)
162  {
164  f(user);
165  }
166  }
167 
168  std::vector<graphics::DisplayConfigurationCard> cards;
169  std::vector<graphics::DisplayConfigurationOutput> outputs;
170 };
171 
172 }
173 }
174 }
175 
176 #endif /* MIR_TEST_DOUBLES_STUB_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't.
Definition: display_configuration.h:124
Configuration information for a display card.
Definition: display_configuration.h:44
void for_each_output(std::function< void(graphics::UserDisplayConfigurationOutput &)> f) override
Definition: stub_display_configuration.h:159
void for_each_card(std::function< void(graphics::DisplayConfigurationCard const &)> f) const override
Definition: stub_display_configuration.h:145
IntWrapper< detail::GraphicsConfOutputIdTag > DisplayConfigurationOutputId
Definition: display_configuration.h:39
Definition: common.h:87
StubDisplayConfig(std::vector< geometry::Rectangle > const &rects)
Definition: stub_display_configuration.h:116
Definition: common.h:103
std::vector< graphics::DisplayConfigurationOutput > outputs
Definition: stub_display_configuration.h:169
card
Definition: display_configuration.cpp:38
output(other.output)
Definition: common.h:106
mir_orientation_normal
Definition: display_configuration.cpp:33
mir_power_mode_on
Definition: display_configuration.cpp:33
StubDisplayConfig(StubDisplayConfig const &other)
Definition: stub_display_configuration.h:43
Configuration information for a display output.
Definition: display_configuration.h:84
IntWrapper< detail::GraphicsConfCardIdTag > DisplayConfigurationCardId
Definition: display_configuration.h:38
Definition: common.h:102
StubDisplayConfig()
Definition: stub_display_configuration.h:38
StubDisplayConfig(unsigned int num_displays)
Definition: stub_display_configuration.h:50
Definition: stub_display_configuration.h:35
int const size
Definition: make_socket_rpc_channel.cpp:50
void for_each_output(std::function< void(graphics::DisplayConfigurationOutput const &)> f) const override
Definition: stub_display_configuration.h:151
Interface to a configuration of display cards and outputs.
Definition: display_configuration.h:159
std::vector< graphics::DisplayConfigurationCard > cards
Definition: stub_display_configuration.h:168

Copyright © 2012,2013 Canonical Ltd.
Generated on Fri Apr 11 21:14:53 UTC 2014