SDLRenderer();
~SDLRenderer();
- void draw_surface(const DrawingRequest& request);
- void draw_surface_part(const DrawingRequest& request);
- void draw_text(const DrawingRequest& request);
- void draw_gradient(const DrawingRequest& request);
- void draw_filled_rect(const DrawingRequest& request);
- void draw_inverse_ellipse(const DrawingRequest& request);
- void do_take_screenshot();
- void flip();
- void resize(int w, int h);
- void apply_config() {}
-
- SDL_Renderer* get_sdl_renderer() const { return renderer; };
+ void start_draw() override;
+ void end_draw() override;
+ void draw_surface(const DrawingRequest& request) override;
+ void draw_surface_part(const DrawingRequest& request) override;
+ void draw_gradient(const DrawingRequest& request) override;
+ void draw_filled_rect(const DrawingRequest& request) override;
+ void draw_inverse_ellipse(const DrawingRequest& request) override;
+ void do_take_screenshot() override;
+ void flip() override;
+ void resize(int w, int h) override;
+ void apply_config() override;
+ Vector to_logical(int physical_x, int physical_y) override;
+ void set_gamma(float gamma) override;
+
+ SDL_Window* get_window() const { return m_window; }
+ SDL_Renderer* get_sdl_renderer() const { return m_renderer; };
+
+private:
+ void apply_video_mode();
+ void apply_viewport();
private:
- SDL_Window* window;
- SDL_Renderer* renderer;
- int numerator;
- int denominator;
+ SDL_Window* m_window;
+ SDL_Renderer* m_renderer;
+ SDL_Rect m_viewport;
+ Size m_desktop_size;
+ Vector m_scale;
private:
SDLRenderer(const SDLRenderer&);