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