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.h109
1 files changed, 109 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..831f3e6
--- /dev/null
+++ b/src/libjin/graphics/je_window.h
@@ -0,0 +1,109 @@
+#ifndef __JE_RENDER_WINDOW
+#define __JE_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 JinEngine
+{
+ namespace Graphics
+ {
+ ///
+ ///
+ ///
+ class Window
+ : public Subsystem<Window>
+ {
+ public:
+ ///
+ ///
+ ///
+ struct Setting : SettingBase
+ {
+ public:
+ const char* title; ///< window title
+ const char* icon; ///< window icon
+ 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 mSize.w; }
+
+ ///
+ ///
+ ///
+ inline int getH(){ return mSize.h; }
+
+ ///
+ ///
+ ///
+ inline int getFPS(){ return mFps; }
+
+ ///
+ ///
+ ///
+ void swapBuffers();
+
+ ///
+ ///
+ ///
+ inline void hide() { SDL_HideWindow(mWnd); };
+
+ ///
+ ///
+ ///
+ void show() { SDL_ShowWindow(mWnd); };
+
+ private:
+
+ // declare a singleton
+ singleton(Window);
+
+ ///
+ ///
+ ///
+ Window() {};
+
+ ///
+ ///
+ ///
+ virtual ~Window() {};
+
+ ///
+ ///
+ ///
+ bool initSystem(const SettingBase* setting) override;
+
+ ///
+ ///
+ ///
+ void quitSystem() override;
+
+ SDL_Window* mWnd;
+ JinEngine::Math::Vector2<unsigned int> mSize;
+ int mFps;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif // jin_graphics
+
+#endif // __JE_RENDER_WINDOW \ No newline at end of file