aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/je_window.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics/je_window.h')
-rw-r--r--src/libjin/Graphics/je_window.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/libjin/Graphics/je_window.h b/src/libjin/Graphics/je_window.h
new file mode 100644
index 0000000..995d8b0
--- /dev/null
+++ b/src/libjin/Graphics/je_window.h
@@ -0,0 +1,96 @@
+#ifndef __LIBJIN_RENDER_WINDOW
+#define __LIBJIN_RENDER_WINDOW
+#include "../core/je_configuration.h"
+#if defined(jin_graphics)
+
+#include "SDL2/SDL.h"
+
+#include "../utils/je_utils.h"
+#include "../math/je_vector2.hpp"
+#include "../common/je_subsystem.hpp"
+
+namespace jin
+{
+ namespace graphics
+ {
+ ///
+ ///
+ ///
+ class Window : public Subsystem<Window>
+ {
+ public:
+ ///
+ ///
+ ///
+ struct Setting : SettingBase
+ {
+ public:
+ const char* title; ///< window title
+ bool fullscreen; ///< full screen
+ int width, height; ///< window size
+ bool vsync; ///< vsync
+ int fps; ///< frame per second
+ bool resizable; ///< resizable
+ };
+
+ ///
+ ///
+ ///
+ void setTitle(const char* title);
+
+ ///
+ ///
+ ///
+ inline int getW(){ return size.w; }
+
+ ///
+ ///
+ ///
+ inline int getH(){ return size.h; }
+
+ ///
+ ///
+ ///
+ inline int getFPS(){ return fps; }
+
+ ///
+ ///
+ ///
+ void swapBuffers();
+
+ private:
+ // declare a singleton
+ singleton(Window);
+
+ ///
+ ///
+ ///
+ Window() {};
+
+ ///
+ ///
+ ///
+ virtual ~Window() {};
+
+ ///
+ ///
+ ///
+ bool initSystem(const SettingBase* setting) override;
+
+ ///
+ ///
+ ///
+ void quitSystem() override;
+
+ SDL_Window* wnd;
+ jin::math::Vector2<unsigned int> size;
+ int fps;
+
+ };
+
+ } // namespace graphics
+} // namespace jin
+
+#endif // jin_graphics
+
+#endif // __LIBJIN_RENDER_WINDOW \ No newline at end of file