display_window_provider.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2013 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 "../api_display.h"
35 #include "../../Core/Signals/signal_v0.h"
36 #include "../../Core/Signals/signal_v1.h"
37 #include "../../Core/Signals/signal_v2.h"
38 #include "../../Core/Signals/callback_v1.h"
39 #include "../Window/display_window.h"
40 #include <memory>
41 
42 #if !defined(WIN32) && !defined(__APPLE__)
43 #include <X11/Xlib.h>
44 #endif
45 
46 namespace clan
47 {
50 
51 class Point;
52 class DisplayWindowDescription;
53 class GraphicContext;
54 class InputContext;
55 class CursorProvider;
56 class CursorDescription;
57 
59 class CL_API_DISPLAY DisplayWindowSite
60 {
63 public:
66 
69 
72 
75 
78 
81 
84 
87 
90 
93 
96 
99 
100 #ifdef WIN32
102 #endif
103 
105 };
106 
108 class CL_API_DISPLAY DisplayWindowProvider
109 {
112 public:
113  virtual ~DisplayWindowProvider() { return; }
114 
118 public:
120  virtual Rect get_geometry() const = 0;
121 
123  virtual Rect get_viewport() const = 0;
124 
126  virtual bool has_focus() const = 0;
127 
129  virtual bool is_minimized() const = 0;
130 
132  virtual bool is_maximized() const = 0;
133 
135  virtual bool is_visible() const = 0;
136 
138  virtual bool is_fullscreen() const = 0;
139 
141  virtual Size get_minimum_size(bool client_area) const = 0;
142 
144  virtual Size get_maximum_size(bool client_area) const = 0;
145 
147  virtual std::string get_title() const = 0;
148 
150  virtual GraphicContext& get_gc() = 0;
151 
153  virtual InputContext get_ic() = 0;
154 
155 #ifdef WIN32
156 
160  virtual HWND get_hwnd() const = 0;
161 #elif defined(__APPLE__)
162  // nothing
163 #else
164  virtual ::Display *get_display() const = 0;
166 
168  virtual ::Window get_window() const = 0;
169 #endif
170 
172  virtual bool is_clipboard_text_available() const = 0;
173 
175  virtual bool is_clipboard_image_available() const = 0;
176 
178  virtual std::string get_clipboard_text() const = 0;
179 
181  virtual PixelBuffer get_clipboard_image() const = 0;
182 
186 public:
187 
189  virtual Point client_to_screen(const Point &client) = 0;
190 
192  virtual Point screen_to_client(const Point &screen) = 0;
193 
195  virtual void capture_mouse(bool capture) = 0;
196 
198  virtual void request_repaint(const Rect &rect) = 0;
199 
201  virtual void create(DisplayWindowSite *site, const DisplayWindowDescription &description) = 0;
202 
204  virtual void show_system_cursor() = 0;
205 
207  virtual CursorProvider *create_cursor(const CursorDescription &cursor_description, const Point &hotspot) = 0;
208 
210  virtual void set_cursor(CursorProvider *cursor) = 0;
211 
213  virtual void set_cursor(enum StandardCursor type) = 0;
214 
215 #ifdef WIN32
216  virtual void set_cursor_handle(HCURSOR cursor) = 0;
218 #endif
219 
221  virtual void hide_system_cursor() = 0;
222 
224  virtual void set_title(const std::string &new_title) = 0;
225 
227  virtual void set_position(const Rect &pos, bool client_area) = 0;
228 
234  virtual void set_size(int width, int height, bool client_area) = 0;
235 
241  virtual void set_minimum_size(int width, int height, bool client_area) = 0;
242 
248  virtual void set_maximum_size(int width, int height, bool client_area) = 0;
249 
251  virtual void set_enabled(bool enable) = 0;
252 
254  virtual void minimize() = 0;
255 
257  virtual void restore() = 0;
258 
260  virtual void maximize() = 0;
261 
263  virtual void show(bool activate) = 0;
264 
266  virtual void hide() = 0;
267 
269  virtual void bring_to_front() = 0;
270 
272  virtual void flip(int interval) = 0;
273 
275  virtual void update(const Rect &rect) = 0;
276 
278  virtual void set_clipboard_text(const std::string &text) = 0;
279 
281  virtual void set_clipboard_image(const PixelBuffer &buf) = 0;
282 
284  virtual void set_large_icon(const PixelBuffer &image) = 0;
285 
287  virtual void set_small_icon(const PixelBuffer &image) = 0;
288 
293  virtual void enable_alpha_channel(const Rect &blur_rect) = 0;
294 
298  virtual void extend_frame_into_client_area(int height) = 0;
299 
300 
304 private:
306 };
307 
308 }
309 
Signal_v0 * sig_window_destroy
Pointer to window destroy signal.
Definition: display_window_provider.h:80
Signal_v2< int, int > * sig_resize
Pointer to resize signal.
Definition: display_window_provider.h:71
StandardCursor
Standard Cursor.
Definition: display_window.h:67
Display Window site.
Definition: display_window_provider.h:59
virtual ~DisplayWindowProvider()
Definition: display_window_provider.h:113
Pixel data container.
Definition: pixel_buffer.h:69
Signal_v0 * sig_got_focus
Pointer to got focus signal.
Definition: display_window_provider.h:68
Signal_v0 * sig_window_minimized
Pointer to window minimized signal.
Definition: display_window_provider.h:83
Signal_v0 * sig_window_restored
Pointer to window restored signal.
Definition: display_window_provider.h:89
Interface for implementing a Cursor target.
Definition: cursor_provider.h:40
Callback_0< bool > * func_minimize_clicked
Pointer to minimized clicked callback function.
Definition: display_window_provider.h:95
Signal_v0 * sig_window_moved
Pointer to window moved signal.
Definition: display_window_provider.h:98
Signal_v0 * sig_window_maximized
Pointer to window maximized signal.
Definition: display_window_provider.h:86
Signal_v0 * sig_lost_focus
Pointer to lost focus signal.
Definition: display_window_provider.h:65
2D (left,top,right,bottom) rectangle structure - Integer
Definition: rect.h:453
Signal_v1.
Definition: signal_v1.h:110
Signal_v1< const Rect & > * sig_paint
Pointer to paint signal.
Definition: display_window_provider.h:74
Callback_v1< Rect & > * func_window_resize
Pointer to window resize callback function.
Definition: display_window_provider.h:92
This class contains everything to construct a cursor - its data, default settings etc...
Definition: cursor_description.h:71
Callback_v1.
Definition: callback_v1.h:156
Interface to drawing graphics.
Definition: graphic_context.h:257
2D (x,y) point structure - Integer
Definition: point.h:63
InputContext.
Definition: input_context.h:45
Display window description class.
Definition: display_window_description.h:53
Interface for implementing a DisplayWindow target.
Definition: display_window_provider.h:108
2D (width,height) size structure - Integer
Definition: size.h:157
Signal_v0.
Definition: signal_v0.h:107
Signal_v0 * sig_window_close
Pointer to window close signal.
Definition: display_window_provider.h:77
Callback_4.
Definition: callback_4.h:156