display_window_description.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2015 The ClanLib Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** arising from the use of this software.
8 **
9 ** Permission is granted to anyone to use this software for any purpose,
10 ** including commercial applications, and to alter it and redistribute it
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries ClanLib may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Magnus Norddahl
27 ** Harry Storbacka
28 ** Kenneth Gangstoe
29 */
30 
31 
32 #pragma once
33 
34 #include <memory>
35 
36 namespace clan
37 {
40 
41 enum class WindowType
42 {
43  // \brief Normal application window decorated by the windowing system
44  normal,
45  // \brief Popup window (not decorated)
46  popup,
47  // \brief Popup window registered as a tool window (not decorated)
48  tool,
49  // \brief Custom drawn application window
50  custom
51 };
52 
53 class Sizef;
54 class Rectf;
55 class DisplayWindow;
56 class DisplayWindowDescription_Impl;
57 struct DisplayWindowHandle;
58 
63 {
66 public:
69 
71  DisplayWindowDescription(const std::string &title);
72 
74  DisplayWindowDescription(const std::string &title, const Rectf &position, bool client_area);
75 
77  DisplayWindowDescription(const std::string &title, const Sizef &size, bool client_area);
78 
80  DisplayWindowDescription(const Rectf &position, bool client_area);
81 
85 
86  // \brief Copy the entire description (not just the implementation)
88 
90 
94 public:
95 
97  const std::string &get_title() const;
98 
100  Sizef get_size() const;
101 
104 
107 
109  bool is_fullscreen() const;
110 
112  int get_flipping_buffers() const;
113 
115  int get_swap_interval() const;
116 
118  bool get_allow_resize() const;
119 
121  int get_bpp() const;
122 
126  int get_refresh_rate() const;
127 
129  bool is_layered() const;
130 
134 
136  bool has_caption() const;
137 
139  bool has_sysmenu() const;
140 
142  bool has_minimize_button() const;
143 
145  bool has_maximize_button() const;
146 
148  bool is_visible() const;
149 
151  bool is_topmost() const;
152 
154  bool has_no_activate() const;
155 
157 
159 
161  bool has_drop_shadow() const;
162 
165 
167  bool get_tablet_context() const;
168 
170  int get_depth_size() const;
171 
173  int get_stencil_size() const;
174 
177 
179  bool get_allow_screensaver() const;
180 
182  bool is_update_supported() const;
183 
185  int get_multisampling() const;
186 
187  float get_extend_frame_left() const;
188  float get_extend_frame_top() const;
189  float get_extend_frame_right() const;
190  float get_extend_frame_bottom() const;
191 
193 
197 public:
200 
202  void show_caption(bool value = true);
203 
205  void show_sysmenu(bool value = true);
206 
208  void show_minimize_button(bool value = true);
209 
211  void show_maximize_button(bool value = true);
212 
214  void set_visible(bool value = true);
215 
217  void set_topmost(bool value = true);
218 
220  void set_no_activate(bool value = true);
221 
223  void set_drop_shadow(bool value = true);
224 
226  void set_owner_window(const DisplayWindow &owner);
227 
229  void set_title(const std::string &title);
230 
234  void set_size(const Sizef &size, bool client_area);
235 
242  void set_position(const Rectf &position, bool client_area);
243 
245  void set_fullscreen(bool fullscreen = true, int monitor = 0);
246 
248  void set_flipping_buffers(int num_buffers = 2);
249 
251  void set_swap_interval(int interval = -1);
252 
254  void set_allow_resize(bool allow_resize = true);
255 
257  void set_bpp(int bpp);
258 
262  void set_refresh_rate(int refresh_rate);
263 
265  void set_tablet_context(bool create);
266 
272  void set_using_gui_window_cache(bool value);
273 
275  void set_layered(bool layered);
276 
280  void set_allow_screensaver(bool allow_screensaver = true);
281 
285 
287 
289  void set_depth_size(int value);
290 
292 
294  void set_stencil_size(int value);
295 
300  void set_update_supported(bool value) const;
301 
303  void set_multisampling(int value);
304 
305  void set_extend_frame(float left, float top, float right, float bottom);
306 
307  void set_type(WindowType type);
308 
309 
313 private:
314  std::shared_ptr<DisplayWindowDescription_Impl> impl;
316 };
317 
318 }
319 
DisplayWindowDescription & operator=(const DisplayWindowDescription &copy)
Copy assignment operator.
void set_fullscreen(bool fullscreen=true, int monitor=0)
Makes the window initially fullscreen.
bool is_fullscreen() const
Returns if window should be initially fullscreen.
void set_size(const Sizef &size, bool client_area)
Sets the size of the window (including window frame).
DisplayWindowDescription(const std::string &title, const Rectf &position, bool client_area)
Constructs a window description with default values, a title and a position.
void set_position(const Rectf &position, bool client_area)
Sets the position of the window (including window frame).
void set_visible(bool value=true)
Toggles whether the window is created as initially visible.
void set_multisampling(int value)
Sets the number of samples per pixel.
void set_refresh_rate(int refresh_rate)
DisplayWindowDescription clone() const
void set_owner_window(const DisplayWindow &owner)
Specifies another window which owns this one.
void set_handle(DisplayWindowHandle handle)
void set_extend_frame(float left, float top, float right, float bottom)
bool has_no_activate() const
Indicates if window is automatically activated or not.
Rectf get_position() const
Returns the initial position of the window.
bool is_update_supported() const
Returns true if DisplayWindow::update should be supported.
void set_type(WindowType type)
DisplayWindowDescription(const std::string &title)
Constructs a window description with default values and a title.
int get_depth_size() const
Returns the minimum required depth buffer.
bool has_sysmenu() const
Returns true if the window has a window menu on its title bar.
bool has_maximize_button() const
Returns true if the window has a maximize button.
2D (left,top,right,bottom) rectangle structure - Float
Definition: rect.h:485
WindowType
Definition: display_window_description.h:42
void set_depth_size(int value)
Sets the minimum required depth buffer.
const std::string & get_title() const
Returns the window title stored in the description.
void show_minimize_button(bool value=true)
Sets if the window has a minimize button.
int get_stencil_size() const
Returns the minimum required stencil buffer.
bool get_allow_resize() const
Returns true if window should be resizeable.
DisplayWindowDescription(const DisplayWindowDescription &copy)
Constructs a DisplayWindowDescription.
bool get_allow_screensaver() const
Returns true if the screensaver is allowed.
void set_flipping_buffers(int num_buffers=2)
Sets the amount of flipping buffers to be used.
int get_fullscreen_monitor() const
Returns the index of the monitor to go fullscreen on. See ScreenInfo.
float get_extend_frame_bottom() const
void set_update_supported(bool value) const
Controls if DisplayWindow::update is supported.
DisplayWindowDescription()
Constructs a window description with default values.
void set_bpp(int bpp)
Sets the number of bytes per pixel.
Display window description class.
Definition: display_window_description.h:63
void set_no_activate(bool value=true)
Prevents window from being automatically activated.
bool is_visible() const
Returns true if the window is initially visible.
int get_multisampling() const
Returns the number of samples per pixel.
void set_topmost(bool value=true)
Sets if the window should be placed above all non-topmost windows.
void show_sysmenu(bool value=true)
Sets if the window has a window menu on its title bar.
void show_caption(bool value=true)
Controls if a title bar (including frame) is shown or not.
Sizef get_size() const
Returns the size of the window stored in description.
WindowType get_type() const
bool is_layered() const
Returns true if window is layered (black is transparent)
void set_layered(bool layered)
Creates a layered window (complex shaped window)
void set_allow_screensaver(bool allow_screensaver=true)
Allow the screensaver to appear.
Definition: clanapp.h:36
bool get_tablet_context() const
Returns true if a tablet context is to be created for the window.
Definition: display_window.h:88
bool get_position_client_area() const
Returns if the client area is used for the initial position of the window.
int get_flipping_buffers() const
Returns the amount of flipping buffers to be created.
void set_swap_interval(int interval=-1)
Sets the swap interval to be used for the window.
void set_tablet_context(bool create)
Sets to true if a tablet input context should be created for this window.
bool has_minimize_button() const
Returns true if the window has a minimize button.
bool is_topmost() const
Returns true if the window should be placed above all non-topmost windows.
bool has_caption() const
Returns true if a title bar is shown.
DisplayWindow get_owner() const
Returns the window owning this one.
int get_bpp() const
Returns the numbers of bytes per pixel in the window.
bool has_drop_shadow() const
Returns true if the window is drawn with a drop shadow effect.
int get_swap_interval() const
Returns the swap interval to be used for the window.
bool get_using_gui_window_cache() const
Returns true if window from the window cache should be used. (GUI Only)
void show_maximize_button(bool value=true)
Sets if the window has a maximize button.
void set_using_gui_window_cache(bool value)
void set_drop_shadow(bool value=true)
Enables a drop shadow effect on the window.
DisplayWindowHandle get_handle() const
DisplayWindowDescription(const std::string &title, const Sizef &size, bool client_area)
Constructs a window description with default values, a title and a size.
void set_title(const std::string &title)
Sets the title of the window.
2D (width,height) size structure - Float
Definition: size.h:170
DisplayWindowDescription(const Rectf &position, bool client_area)
Constructs a window description with default values and a position.
Top-level window class.
Definition: display_window.h:102
void set_stencil_size(int value)
Sets the minimum required stencil buffer.
void set_allow_resize(bool allow_resize=true)
Sets if windows should be resizable.
float get_extend_frame_right() const