mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-05-11 22:52:11 +02:00
Added more methods to the renderer.
This commit is contained in:
parent
b04d22497f
commit
692f0b76da
@ -11,7 +11,7 @@ void Renderer::set_draw_color(const Uint8 r, const Uint8 g, const Uint8 b, const
|
||||
}
|
||||
|
||||
void Renderer::set_draw_color(const Color &color) {
|
||||
SDL_SetRenderDrawColor(_renderer, color.r, color.g, color.b, color.a);
|
||||
SDL_SetRenderDrawColor(_renderer, color.r, color.g, color.b, color.a);
|
||||
}
|
||||
|
||||
void Renderer::clear() {
|
||||
@ -19,16 +19,51 @@ void Renderer::clear() {
|
||||
}
|
||||
|
||||
void Renderer::draw_rect(const SDL_Rect &rect) {
|
||||
SDL_RenderFillRect(_renderer, &rect);
|
||||
SDL_RenderFillRect(_renderer, &rect);
|
||||
}
|
||||
void Renderer::draw_rect(const Rect2 &rect) {
|
||||
SDL_Rect r;
|
||||
SDL_Rect r;
|
||||
r.x = rect.x;
|
||||
r.y = rect.y;
|
||||
r.w = rect.w;
|
||||
r.h = rect.h;
|
||||
|
||||
SDL_RenderFillRect(_renderer, &r);
|
||||
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() {
|
||||
@ -38,22 +73,24 @@ 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() {
|
||||
if (_window)
|
||||
SDL_DestroyWindow(_window);
|
||||
if (_window)
|
||||
SDL_DestroyWindow(_window);
|
||||
|
||||
if (_renderer)
|
||||
SDL_DestroyRenderer(_renderer);
|
||||
if (_renderer)
|
||||
SDL_DestroyRenderer(_renderer);
|
||||
|
||||
_window = nullptr;
|
||||
_renderer = nullptr;
|
||||
_window = nullptr;
|
||||
_renderer = nullptr;
|
||||
}
|
||||
|
||||
Renderer::Renderer() {
|
||||
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user