summaryrefslogtreecommitdiffstats
path: root/engine/include/flatwindow.h
diff options
context:
space:
mode:
authorancarola <raffaele.ancarola@epfl.ch>2018-11-17 22:46:15 +0100
committerancarola <raffaele.ancarola@epfl.ch>2018-11-17 22:46:15 +0100
commitce7b39f47a1112941b3579f6502dd4e950cb099a (patch)
tree1d2a46f7dde690415302539c989f21067f270324 /engine/include/flatwindow.h
downloadflatland-ce7b39f47a1112941b3579f6502dd4e950cb099a.tar.gz
flatland-ce7b39f47a1112941b3579f6502dd4e950cb099a.zip
initialization
Diffstat (limited to 'engine/include/flatwindow.h')
-rw-r--r--engine/include/flatwindow.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/engine/include/flatwindow.h b/engine/include/flatwindow.h
new file mode 100644
index 0000000..f6645f6
--- /dev/null
+++ b/engine/include/flatwindow.h
@@ -0,0 +1,96 @@
+#ifndef __FLATWINDOW_H__
+#define __FLATWINDOW_H__
+
+#include <string>
+
+struct window_status
+{
+ window_status( unsigned char fullscreen = 0,
+ unsigned char hidden = 0,
+ unsigned char borderless = 0,
+ unsigned char resizable = 1,
+ unsigned char minimized = 0,
+ unsigned char maximized = 0,
+ unsigned char focus = 1)
+
+ : fullscreen(fullscreen), hidden(hidden), borderless(borderless),
+ resizable(resizable), minimized(minimized), maximized(maximized),
+ focus(focus) {}
+
+ unsigned char fullscreen:1;
+ unsigned char hidden:1;
+ unsigned char borderless:1;
+ unsigned char resizable:1;
+ unsigned char minimized:1;
+ unsigned char maximized:1;
+ unsigned char focus:1;
+};
+
+#include "flatobject.h"
+#include "focusable.h"
+
+class SDL_Window;
+class FlatLayer;
+
+class SDL_KeyEvent;
+
+class FlatWindow : public FlatObject, public Focusable
+{
+ std::string title;
+ window_status status;
+
+ SDL_Rect * bounds;
+ SDL_Window * sdl_window;
+ SDL_Surface * screen;
+
+ FlatLayer * main_layer;
+
+ void serial_cb(SDL_Event*) override;
+
+protected:
+
+ virtual void keyEvent(SDL_KeyEvent*);
+
+ virtual void quitEvent();
+
+public:
+
+ FlatWindow(int x, int y,
+ int width, int height,
+ const std::string& title,
+ window_status status = window_status());
+
+ FlatWindow( SDL_Rect *bounds, const std::string& title,
+ window_status status = window_status());
+
+ FlatWindow( int width, int height,
+ const std::string &title,
+ window_status status = window_status());
+
+ FlatWindow(const FlatWindow&);
+
+ ~FlatWindow();
+
+ int open();
+ void close();
+
+ int getWidth() const;
+ int getHeight() const;
+
+ const SDL_Rect * getBounds() const;
+
+ SDL_Window * getSDLWindow();
+ SDL_Surface * getScreenSurface();
+
+ const std::string& getTitle() const;
+
+ void setTitle(const std::string&);
+
+ window_status getWindowStatus() const;
+
+ void setWindowStatus(window_status);
+
+ static Uint32 winstatus_to_flags(window_status);
+};
+
+#endif