Implemented set_gamma()
authorIngo Ruhnke <grumbel@gmail.com>
Wed, 30 Jul 2014 18:20:51 +0000 (20:20 +0200)
committerIngo Ruhnke <grumbel@gmail.com>
Wed, 30 Jul 2014 18:20:51 +0000 (20:20 +0200)
src/scripting/functions.cpp
src/video/gl/gl_renderer.cpp
src/video/gl/gl_renderer.hpp
src/video/renderer.hpp
src/video/sdl/sdl_renderer.cpp
src/video/sdl/sdl_renderer.hpp

index e82191b..ba0fc3f 100644 (file)
@@ -32,6 +32,7 @@
 #include "supertux/tile.hpp"
 #include "supertux/world.hpp"
 #include "util/gettext.hpp"
+#include "video/renderer.hpp"
 #include "worldmap/tux.hpp"
 
 #include "scripting/squirrel_util.hpp"
@@ -271,10 +272,9 @@ void camera()
   log_info << "Camera is at " << Sector::current()->camera->get_translation().x << "," << Sector::current()->camera->get_translation().y << std::endl;
 }
 
-void set_gamma(float /*gamma*/) {
-#ifdef OLD_SDL1
-  SDL_SetWindowGammaRamp(screen,gamma, gamma, gamma);
-#endif
+void set_gamma(float gamma)
+{
+  Renderer::instance()->set_gamma(gamma);
 }
 
 void quit()
index 991e3aa..ba3a601 100644 (file)
@@ -640,4 +640,12 @@ GLRenderer::apply_video_mode(const Size& size, bool fullscreen)
   }
 }
 
+void
+GLRenderer::set_gamma(float gamma)
+{
+  Uint16 ramp[256];
+  SDL_CalculateGammaRamp(gamma, ramp);
+  SDL_SetWindowGammaRamp(window, ramp, ramp, ramp);
+}
+
 /* EOF */
index 0282225..359103a 100644 (file)
@@ -129,6 +129,7 @@ public:
   void resize(int w, int h);
   void apply_config();
   void apply_video_mode(const Size& size, bool fullscreen);
+  void set_gamma(float gamma);
 };
 
 #endif
index 8bb39c7..e4430ad 100644 (file)
@@ -52,6 +52,7 @@ public:
   virtual void flip() = 0;
   virtual void resize(int w, int h) = 0;
   virtual void apply_config() = 0;
+  virtual void set_gamma(float gamma) = 0;
 
   static Renderer* instance() { assert(instance_); return instance_; }
   
index 591a9e5..26da4d3 100644 (file)
@@ -414,4 +414,12 @@ SDLRenderer::resize(int, int)
     
 }
 
+void
+SDLRenderer::set_gamma(float gamma)
+{
+  Uint16 ramp[256];
+  SDL_CalculateGammaRamp(gamma, ramp);
+  SDL_SetWindowGammaRamp(window, ramp, ramp, ramp);
+}
+
 /* EOF */
index b03cf41..042a285 100644 (file)
@@ -35,6 +35,7 @@ public:
   void flip();
   void resize(int w, int h);
   void apply_config() {}
+  void set_gamma(float gamma);
 
   SDL_Renderer* get_sdl_renderer() const { return renderer; };