Fix music not properly fading in again
[supertux.git] / src / video / sdl / sdl_renderer.hpp
index 7f78180..fa3cd0a 100644 (file)
@@ -17,8 +17,7 @@
 #ifndef HEADER_SUPERTUX_VIDEO_SDL_RENDERER_HPP
 #define HEADER_SUPERTUX_VIDEO_SDL_RENDERER_HPP
 
-#include <SDL_video.h>
-
+#include "SDL.h"
 #include "video/renderer.hpp"
 
 class SDLRenderer : public Renderer
@@ -27,21 +26,33 @@ public:
   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() {}
+  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_Surface *screen;
-  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&);