From ca091e358a8b02423ba304bfca055712b3a70881 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Mon, 21 Jan 2019 04:48:02 +0100 Subject: Add basic window wrapper --- include/input.hpp | 0 include/video.hpp | 29 +++++++++++++++++++++++++++++ include/wrapsdl.hpp | 6 ------ include/wrapsdl2.hpp | 9 +++++++++ video.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ wrapsdl.cpp | 19 ------------------- wrapsdl2.cpp | 19 +++++++++++++++++++ 7 files changed, 101 insertions(+), 25 deletions(-) create mode 100644 include/input.hpp create mode 100644 include/video.hpp delete mode 100644 include/wrapsdl.hpp create mode 100644 include/wrapsdl2.hpp create mode 100644 video.cpp delete mode 100644 wrapsdl.cpp create mode 100644 wrapsdl2.cpp diff --git a/include/input.hpp b/include/input.hpp new file mode 100644 index 0000000..e69de29 diff --git a/include/video.hpp b/include/video.hpp new file mode 100644 index 0000000..1b6e022 --- /dev/null +++ b/include/video.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include + +class SDL_Window; +class SDL_Surface; + +namespace wrapsdl2 { + class window { + public: + window() = delete; + window(const window& other) = delete; + + window(const std::string& title, std::size_t width, std::size_t height); + ~window(); + + // manipulation + void show(); + void hide(); + void raise(); + + // rendering + void update(); + + private: + SDL_Window *m_window; + SDL_Surface *m_surface; + }; +} \ No newline at end of file diff --git a/include/wrapsdl.hpp b/include/wrapsdl.hpp deleted file mode 100644 index 9b9a72c..0000000 --- a/include/wrapsdl.hpp +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -namespace wrapsdl { - bool initialize(void); - void quit(void); -} \ No newline at end of file diff --git a/include/wrapsdl2.hpp b/include/wrapsdl2.hpp new file mode 100644 index 0000000..993a704 --- /dev/null +++ b/include/wrapsdl2.hpp @@ -0,0 +1,9 @@ +#pragma once + +namespace wrapsdl2 { + bool initialize(void); + void quit(void); + + // tool functions + void delay() +} \ No newline at end of file diff --git a/video.cpp b/video.cpp new file mode 100644 index 0000000..8413cb4 --- /dev/null +++ b/video.cpp @@ -0,0 +1,44 @@ +#include "video.hpp" +#include "debug.hpp" + +extern "C" { +#include +} + +#include + + +using namespace wrapsdl2; + +window::window(const std::string& title, std::size_t width, std::size_t height) { + // create (hidden) window + m_window = SDL_CreateWindow( + title.c_str(), + SDL_WINDOWPOS_CENTERED, + SDL_WINDOWPOS_CENTERED, + static_cast(width), + static_cast(height), + SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN + ); + + if (m_window == NULL) { + throw std::runtime_error("failed to create SDL window"); + } + + // create surface + m_surface = SDL_GetWindowSurface(m_window); +} + +window::~window() { + SDL_FreeSurface(m_surface); + SDL_DestroyWindow(m_window); +} + + +void window::show() { SDL_ShowWindow(m_window); } +void window::hide() { SDL_HideWindow(m_window); } +void window::raise() { SDL_RaiseWindow(m_window); } + +void window::update() { + SDL_UpdateWindowSurface(m_window); +} \ No newline at end of file diff --git a/wrapsdl.cpp b/wrapsdl.cpp deleted file mode 100644 index e91ec8c..0000000 --- a/wrapsdl.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "wrapsdl.hpp" -#include "debug.hpp" - -extern "C" { -#include -} - -bool wrapsdl::initialize(void) { - if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { - npdebug("failed to initialize sdl video subsystem"); - return false; - } - - return true; -} - -void wrapsdl::quit(void) { - SDL_Quit(); -} diff --git a/wrapsdl2.cpp b/wrapsdl2.cpp new file mode 100644 index 0000000..6c7896f --- /dev/null +++ b/wrapsdl2.cpp @@ -0,0 +1,19 @@ +#include "wrapsdl2.hpp" +#include "debug.hpp" + +extern "C" { +#include +} + +bool wrapsdl2::initialize(void) { + if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { + npdebug("failed to initialize sdl video subsystem"); + return false; + } + + return true; +} + +void wrapsdl2::quit(void) { + SDL_Quit(); +} -- cgit v1.2.1