From 0d30bb843d3aeeacae211e1d0ba3cbf5faa01cd7 Mon Sep 17 00:00:00 2001 From: ancarola Date: Sun, 3 Feb 2019 21:52:52 +0100 Subject: Create an interface to SDL events List of basic events interfaces in namespace wsdl2::event - event_t - e_key - mouse::e_mouse - mouse::e_motion - mouse::e_button - e_quit (pure SDL quit callback) - window::e_window - window::e_resize - window::e_move --- video.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'video.cpp') diff --git a/video.cpp b/video.cpp index 5a5e933..e777371 100644 --- a/video.cpp +++ b/video.cpp @@ -87,6 +87,10 @@ renderer::~renderer() { /* class window */ +// existing window mapping (SDL_ID <-> window) +std::map window::win_map; + + window::window(const std::string& title, std::size_t width, std::size_t height) { // create (hidden) window m_window = SDL_CreateWindow( @@ -102,6 +106,9 @@ window::window(const std::string& title, std::size_t width, std::size_t height) throw std::runtime_error("failed to create SDL window"); } + // put into window id mapping + win_map.insert(std::pair(static_cast(SDL_GetWindowID(m_window)), this)); + m_renderer.create_sdl_renderer(m_window); // other attributes @@ -134,7 +141,14 @@ bool window::is_visible() { return SDL_WINDOW_SHOWN & SDL_GetWindowFlags(m_window); } +window * window::get(Uint8 id) +{ + auto it = win_map.find(id); + return (it != win_map.end()) ? it->second : 0; +} + void window::update() { + m_renderer.clear(); m_renderer.present(); } @@ -150,3 +164,4 @@ SDL_Window * window::sdl() { return m_window; } + -- cgit v1.2.1