]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/cocoa/window.cpp
Basic OS X support
[libs/gui.git] / source / graphics / cocoa / window.cpp
diff --git a/source/graphics/cocoa/window.cpp b/source/graphics/cocoa/window.cpp
new file mode 100644 (file)
index 0000000..321934c
--- /dev/null
@@ -0,0 +1,79 @@
+#include "cocoadisplay.h"
+#include "cocoawindow.h"
+#include "display.h"
+#include "display_private.h"
+#include "window.h"
+#include "window_private.h"
+
+namespace Msp {
+namespace Graphics {
+
+void Window::platform_init()
+{
+       CocoaDisplay *dpy = display.get_private().display;
+       priv->window = create_window(dpy, options.width, options.height, options.fullscreen, options.resizable);
+}
+
+void Window::platform_cleanup()
+{
+       destroy_window(priv->window);
+}
+
+void Window::set_title(const std::string &title)
+{
+       set_window_title(priv->window, title.c_str());
+}
+
+void Window::platform_reconfigure(bool /*fullscreen_changed*/)
+{
+       set_window_size(priv->window, options.width, options.height);
+}
+
+void Window::show_cursor(bool)
+{
+}
+
+void Window::warp_pointer(int, int)
+{
+}
+
+void Window::platform_show()
+{
+       show_window(priv->window);
+}
+
+void Window::platform_hide()
+{
+       hide_window(priv->window);
+}
+
+bool Window::event(const Event &ev)
+{
+       switch(ev.cevent.type)
+       {
+       case LEFT_MOUSE_DOWN:
+       case LEFT_MOUSE_UP:
+       case RIGHT_MOUSE_DOWN:
+       case RIGHT_MOUSE_UP:
+       case KEY_DOWN:
+       case KEY_UP:
+       case OTHER_MOUSE_DOWN:
+       case OTHER_MOUSE_UP:
+               signal_input_event.emit(ev);
+               break;
+       case MOUSE_MOVED:
+               if(ev.cevent.motion.x>=0 && ev.cevent.motion.x<options.width && ev.cevent.motion.y>=0 && ev.cevent.motion.y<options.height)
+                       signal_input_event.emit(ev);
+               break;
+       case WINDOW_CLOSED:
+               signal_close.emit();
+               break;
+       default:
+               return false;
+       }
+
+       return true;
+}
+
+} // namespace Graphics
+} // namespace Msp