29 lines
1.3 KiB
C++
29 lines
1.3 KiB
C++
#pragma once
|
|
/// @file video.hpp
|
|
/// For complete documentation, see src/video.cpp
|
|
#include <hdk/sdl/video/Display.hpp>
|
|
#include <hdk/sdl/video/Surface.hpp>
|
|
#include <hdk/sdl/video/Window.hpp>
|
|
|
|
/// We need to be able to return a Renderer from Window, but Renderer also needs to be able to return a Window, so we
|
|
/// have to include both headers here to resolve the circular dependency.
|
|
#include <hdk/sdl/render/Renderer.hpp>
|
|
|
|
namespace hdk::sdl {
|
|
inline Renderer Window::GetRenderer() const { return Renderer(Renderer::get_or_view(SDL_GetRenderer(*this))); }
|
|
inline Window Renderer::GetWindow() const { return Window(Window::get_or_view(SDL_GetRenderWindow(*this))); }
|
|
inline std::pair<Window, Renderer> CreateWindowAndRenderer(
|
|
const char* title, int width, int height, SDL_WindowFlags window_flags) {
|
|
SDL_Window* window_ptr = nullptr;
|
|
SDL_Renderer* renderer_ptr = nullptr;
|
|
if (SDL_CreateWindowAndRenderer(title, width, height, window_flags, &window_ptr, &renderer_ptr)) {
|
|
return { Window::get_or_cache(window_ptr, SDL_DestroyWindow),
|
|
Renderer::get_or_cache(renderer_ptr, SDL_DestroyRenderer) };
|
|
} else {
|
|
return { Window(nullptr), Renderer(nullptr) };
|
|
}
|
|
}
|
|
inline Palette Surface::CreatePalette() const {
|
|
return Palette::get_or_cache(SDL_CreateSurfacePalette(*this), SDL_DestroyPalette);
|
|
}
|
|
} |