]> git.tdb.fi Git - libs/gui.git/blob - source/graphics/cocoa/window.cpp
321934c13b03d39140651be61330614a07236bbf
[libs/gui.git] / source / graphics / cocoa / window.cpp
1 #include "cocoadisplay.h"
2 #include "cocoawindow.h"
3 #include "display.h"
4 #include "display_private.h"
5 #include "window.h"
6 #include "window_private.h"
7
8 namespace Msp {
9 namespace Graphics {
10
11 void Window::platform_init()
12 {
13         CocoaDisplay *dpy = display.get_private().display;
14         priv->window = create_window(dpy, options.width, options.height, options.fullscreen, options.resizable);
15 }
16
17 void Window::platform_cleanup()
18 {
19         destroy_window(priv->window);
20 }
21
22 void Window::set_title(const std::string &title)
23 {
24         set_window_title(priv->window, title.c_str());
25 }
26
27 void Window::platform_reconfigure(bool /*fullscreen_changed*/)
28 {
29         set_window_size(priv->window, options.width, options.height);
30 }
31
32 void Window::show_cursor(bool)
33 {
34 }
35
36 void Window::warp_pointer(int, int)
37 {
38 }
39
40 void Window::platform_show()
41 {
42         show_window(priv->window);
43 }
44
45 void Window::platform_hide()
46 {
47         hide_window(priv->window);
48 }
49
50 bool Window::event(const Event &ev)
51 {
52         switch(ev.cevent.type)
53         {
54         case LEFT_MOUSE_DOWN:
55         case LEFT_MOUSE_UP:
56         case RIGHT_MOUSE_DOWN:
57         case RIGHT_MOUSE_UP:
58         case KEY_DOWN:
59         case KEY_UP:
60         case OTHER_MOUSE_DOWN:
61         case OTHER_MOUSE_UP:
62                 signal_input_event.emit(ev);
63                 break;
64         case MOUSE_MOVED:
65                 if(ev.cevent.motion.x>=0 && ev.cevent.motion.x<options.width && ev.cevent.motion.y>=0 && ev.cevent.motion.y<options.height)
66                         signal_input_event.emit(ev);
67                 break;
68         case WINDOW_CLOSED:
69                 signal_close.emit();
70                 break;
71         default:
72                 return false;
73         }
74
75         return true;
76 }
77
78 } // namespace Graphics
79 } // namespace Msp