Added creation routine

This commit is contained in:
Robert 2020-05-16 15:40:57 +02:00
parent bb14fa9423
commit 740ddc2ca6
4 changed files with 98 additions and 2 deletions

View file

@ -6,6 +6,7 @@ add_library(${PNAME}
target_include_directories(${PNAME} PRIVATE
${PROJECT_SOURCE_DIR}/3rdparty/SDL/include
${CMAKE_CURRENT_LIST_DIR}
)
target_link_libraries(${PNAME} PRIVATE

View file

@ -1,3 +1,3 @@
#pragma once
#include "structures/Vector2.hpp"
#include "graphics/RenderWindow.hpp"

View file

@ -0,0 +1,44 @@
#include "RenderWindow.hpp"
#define IS_NULLPTR( x ) (x == nullptr)
namespace sdlu
{
RenderWindow::RenderWindow()
{
}
RenderWindow::RenderWindow(Vector2u dimension, const std::string& title,
Uint32 windowFlags, Uint32 rendererFlags)
{
Create(dimension, title, windowFlags, rendererFlags);
}
void RenderWindow::Create(Vector2u dimension, const std::string& title,
Uint32 windowFlags, Uint32 rendererFlags)
{
// Leave the function if the window or render already exist
if (!IS_NULLPTR(m_pWindow) ||
!IS_NULLPTR(m_pRenderer))
{
return;
}
m_pWindow = SDL_CreateWindow(title.c_str(),
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
dimension.x, dimension.y,
windowFlags);
if (IS_NULLPTR(m_pWindow))
{
// TODO: Implement exception
return
}
m_pRenderer = SDL_CreateRenderer(m_pWindow, -1, rendererFlags);
if (IS_NULLPTR(m_pRenderer))
{
// TODO: Implement exception
return
}
}
}

View file

@ -1 +1,52 @@
#pragma once
/**
* @file RenderWindow.hpp
* @brief A wrapper around SDL_Window and SDL_Renderer
* @author Lauchmelder23
* @date 16.05.2020
*/
#pragma once
#include <string>
#include <SDL.h>
#include "../structures/Vector2.hpp"
namespace sdlu
{
class RenderWindow
{
public:
/**
* @brief Default Constructor. No window or renderer is created.
*/
RenderWindow();
/**
* @brief Creates a window and renderer with the given parameters
*
* @param dimension A vector containing the width and height
* @param title The title of the create window
*/
RenderWindow(Vector2u dimension, const std::string& title,
Uint32 windowFlags, Uint32 rendererFlags);
RenderWindow(const RenderWindow& other) = delete;
RenderWindow(const RenderWindow&& other) = delete;
/**
* @brief Creates the window and renderer.
*
* This function creates the SDL_Window and SDL_Renderer objects. If
* they were already created the function does nothing and returns.
* If it fails to create either, an ObjectCreationException is thrown.
*
* @param dimension A vector containing the width and height
* @param title The title of the create window
*/
void Create(Vector2u dimension, const std::string& title,
Uint32 windowFlags, Uint32 rendererFlags);
private:
SDL_Window* m_pWindow;
SDL_Renderer* m_pRenderer;
};
}