summaryrefslogtreecommitdiffstats
path: root/engine/window.cpp
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2019-01-25 16:01:11 +0100
committerNao Pross <naopross@thearcway.org>2019-01-25 16:01:11 +0100
commit4607c8f0aaa1f27d844cdda3a472ac24c431bdfe (patch)
tree6dd5e8a6e424536598ae16631f9e210f7f0c8cfa /engine/window.cpp
parentEnable more compiler warnings (diff)
downloadflatland-4607c8f0aaa1f27d844cdda3a472ac24c431bdfe.tar.gz
flatland-4607c8f0aaa1f27d844cdda3a472ac24c431bdfe.zip
Rebuild flat::window around wsdl2::window
Diffstat (limited to '')
-rw-r--r--engine/window.cpp190
1 files changed, 6 insertions, 184 deletions
diff --git a/engine/window.cpp b/engine/window.cpp
index 4f22310..ae410d3 100644
--- a/engine/window.cpp
+++ b/engine/window.cpp
@@ -1,194 +1,16 @@
#include "window.hpp"
-
-#include <SDL2/SDL.h>
-#include <iostream>
-#include "layer.hpp"
#include "core/signal.hpp"
+#include "layer.hpp"
-using namespace std;
-using namespace flat;
-
-FlatWindow::FlatWindow( int x, int y,
- int width, int height,
- const string& title,
- window_status status)
-
- : title(title), status(status),
- sdl_window(0), screen(0)
-{
- bounds = new SDL_Rect;
-
- bounds->x = x;
- bounds->y = y;
- bounds->w = width;
- bounds->h = height;
-
- main_layer = new FlatLayer(0);
-}
-
-FlatWindow::FlatWindow( SDL_Rect *bounds,
- const string& title,
- window_status status)
-
- : FlatWindow(bounds->x, bounds->y, bounds->w, bounds->h, title, status)
-{
-}
-
-FlatWindow::FlatWindow( int width, int height,
- const string &title,
- window_status status)
-
- : FlatWindow( SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
- width, height,
- title, status)
-{
-}
-
-FlatWindow::FlatWindow(const FlatWindow& win)
-
- : flat::core::object(win),
- title(win.title), status(win.status),
- sdl_window(0), screen(0)
-{
- bounds = new SDL_Rect;
-
- *bounds = *win.bounds;
-
- main_layer = new FlatLayer(0);
-}
-
-FlatWindow::~FlatWindow()
-{
- close();
- delete bounds;
- delete main_layer;
-}
+using namespace flat;
-int FlatWindow::open()
+window::window(const std::string& title, std::size_t width, std::size_t height)
+ : wsdl2::window(title, width, height)
{
- uint32_t win_flags = winstatus_to_flags(status);
- sdl_window = SDL_CreateWindow( title.c_str(),
- bounds->x,
- bounds->y,
- bounds->w,
- bounds->h,
- win_flags);
-
- if (sdl_window == 0)
- {
- cout << "Error: failed to initialize window" << endl;
- // throw exception
- return -1;
- }
-
- screen = SDL_GetWindowSurface(sdl_window);
-
- if (screen == 0)
- {
- cout << "Error: SDL_SetVideoMode failed" << endl;
- // throw exception
- return -1;
- }
-
- return 0;
-}
-
-void FlatWindow::close()
-{
- if (screen != 0)
- {
- SDL_FreeSurface(screen);
- screen = 0;
- }
-
- if (sdl_window != 0)
- {
- SDL_DestroyWindow(sdl_window);
- sdl_window = 0;
- }
}
-int FlatWindow::getWidth() const
-{
- return bounds->w;
-}
-
-int FlatWindow::getHeight() const
-{
- return bounds->h;
-}
-
-const SDL_Rect * FlatWindow::getBounds() const
-{
- return bounds;
-}
-
-SDL_Window * FlatWindow::getSDLWindow()
-{
- return sdl_window;
-}
-
-SDL_Surface * FlatWindow::getScreenSurface()
-{
- return screen;
-}
-
-const std::string& FlatWindow::getTitle() const
-{
- return title;
-}
-
-void FlatWindow::setTitle(const std::string& title)
-{
- this->title = title;
-}
-
-window_status FlatWindow::getWindowStatus() const
-{
- return status;
-}
-
-void FlatWindow::setWindowStatus(window_status status)
-{
- this->status = status;
-}
-
-void FlatWindow::key_cb(const SDL_KeyboardEvent *event)
-{
- // TODO Default escape exits
-
- if (event->type == SDL_KEYDOWN && event->keysym.sym == SDLK_ESCAPE)
- {
- /* Close window */
- close();
-
- /* Say flatland to quit */
- // flat::core::signal quit(this, "quit", 0, 0xff);
- // quit.emit("core");
- }
+window::~window() {
+ // nothing to destroy yet
}
-
-uint32_t FlatWindow::winstatus_to_flags(window_status s)
-{
- uint32_t flags = 0;
-
- if (s.fullscreen)
- flags |= SDL_WINDOW_FULLSCREEN;
- if (s.hidden)
- flags |= SDL_WINDOW_HIDDEN;
- if (s.borderless)
- flags |= SDL_WINDOW_BORDERLESS;
- if (s.resizable)
- flags |= SDL_WINDOW_RESIZABLE;
- if (s.minimized)
- flags |= SDL_WINDOW_MINIMIZED;
- if (s.maximized)
- flags |= SDL_WINDOW_MAXIMIZED;
- if (s.focus)
- flags |= SDL_WINDOW_INPUT_GRABBED;
-
- return flags;
-}
-