From bc2876d1b596517acc2837f849a41e4b36f04a9d Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 5 Nov 2020 15:08:34 +0100 Subject: [PATCH] Added screen base class --- include/Screen.hpp | 19 +++++++++++++++++++ src/CMakeLists.txt | 2 +- src/Screen.cpp | 18 ++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 include/Screen.hpp create mode 100644 src/Screen.cpp diff --git a/include/Screen.hpp b/include/Screen.hpp new file mode 100644 index 0000000..ca06e11 --- /dev/null +++ b/include/Screen.hpp @@ -0,0 +1,19 @@ +#pragma once + +struct SDL_Renderer; +struct SDL_Texture; +struct SDL_Rect { int x, y, w, h }; + +class Screen +{ +public: + Screen(SDL_Renderer* renderer, int x, int y, int w, int h); + ~Screen(); + + virtual void Update() = 0; + virtual void Render(SDL_Renderer* renderer) = 0; + +protected: + SDL_Rect screenSpace; + SDL_Texture* texture; +}; \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8968ed6..c904840 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ add_executable(fourier "main.cpp" "RenderWindow.cpp" - ) + "Screen.cpp") target_include_directories(fourier PRIVATE ${CMAKE_SOURCE_DIR}/include diff --git a/src/Screen.cpp b/src/Screen.cpp new file mode 100644 index 0000000..06bbe0b --- /dev/null +++ b/src/Screen.cpp @@ -0,0 +1,18 @@ +#include "Screen.hpp" +#include +#include + +Screen::Screen(SDL_Renderer* renderer, int x, int y, int w, int h) : + screenSpace{ x, y, w, h } +{ + texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_TARGET, w, h); + if (texture == nullptr) + { + throw std::runtime_error(SDL_GetErrorMsg((char*)malloc(512), 511)); + } +} + +Screen::~Screen() +{ + SDL_DestroyTexture(texture); +} \ No newline at end of file