Added more methods to the renderer.

This commit is contained in:
Relintai 2021-03-29 22:04:42 +02:00
parent b04d22497f
commit 692f0b76da
2 changed files with 66 additions and 13 deletions

View File

@ -31,6 +31,41 @@ void Renderer::draw_rect(const Rect2 &rect) {
SDL_RenderFillRect(_renderer, &r);
}
int Renderer::get_dpi() const {
float ddpi;
float hdpi;
float vdpi;
if (SDL_GetDisplayDPI(_window_display_index, &ddpi, &hdpi, &vdpi)) {
return ddpi;
}
//fallback
return 1;
}
int Renderer::get_size_w() const {
int w;
int h;
SDL_GetWindowSize(_window, &w, &h);
return w;
}
int Renderer::get_size_h() const {
int w;
int h;
SDL_GetWindowSize(_window, &w, &h);
return h;
}
void Renderer::get_size(int *w, int *h) const {
SDL_GetWindowSize(_window, w, h);
}
void Renderer::initialize() {
if (SDL_Init(_flags) != 0) {
printf("SDL_Init() hiba!\n");
@ -38,11 +73,13 @@ void Renderer::initialize() {
return;
}
if (SDL_CreateWindowAndRenderer(640, 480, _window_flags, &_window, &_renderer) != 0) {
if (SDL_CreateWindowAndRenderer(_initial_window_width, _initial_window_height, _window_flags, &_window, &_renderer) != 0) {
printf("SDL_CreateWindowAndRenderer() hiba!\n");
return;
}
_window_display_index = SDL_GetWindowDisplayIndex(_window);
}
void Renderer::destroy() {
@ -61,6 +98,9 @@ Renderer::Renderer() {
printf("Renderer::Renderer(): _singleton is not null!\n");
}
_initial_window_width = 640;
_initial_window_height = 480;
_singleton = this;
_flags = SDL_INIT_VIDEO | SDL_INIT_TIMER;
@ -69,11 +109,14 @@ Renderer::Renderer() {
initialize();
}
Renderer::Renderer(unsigned int flags, unsigned int window_flags) {
Renderer::Renderer(unsigned int flags, unsigned int window_flags, int initial_window_width, int initial_window_height) {
if (_singleton) {
printf("Renderer::Renderer(flags): _singleton is not null!\n");
}
_initial_window_width = initial_window_width;
_initial_window_height = initial_window_height;
_singleton = this;
_flags = flags;

View File

@ -16,22 +16,32 @@ public:
void draw_rect(const SDL_Rect &rect);
void draw_rect(const Rect2 &rect);
int get_dpi() const;
int get_size_w() const;
int get_size_h() const;
void get_size(int *w, int *h) const;
void initialize();
void destroy();
Renderer();
Renderer(unsigned int flags, unsigned int window_flags);
Renderer(unsigned int flags, unsigned int window_flags, int window_width = 640, int window_height = 480);
virtual ~Renderer();
static Renderer *get_singleton();
private:
int _initial_window_width;
int _initial_window_height;
unsigned int _flags;
unsigned int _window_flags;
SDL_Window *_window;
SDL_Renderer *_renderer;
int _window_display_index;
static Renderer *_singleton;
};