diff options
Diffstat (limited to 'src/libjin/graphics/je_window.h')
| -rw-r--r-- | src/libjin/graphics/je_window.h | 109 | 
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  | 
