]> git.mxchange.org Git - simgear.git/commitdiff
Don't do any calculations when thay are not needed
authorehofman <ehofman>
Thu, 15 Jan 2004 14:22:03 +0000 (14:22 +0000)
committerehofman <ehofman>
Thu, 15 Jan 2004 14:22:03 +0000 (14:22 +0000)
simgear/screen/colors.hxx

index 197597079de733b06f3e0d72decd28dcfcdd8a43..aa0d414555f390235ddffcec8c6c6a893c502666 100644 (file)
@@ -36,33 +36,46 @@ const float system_gamma = 1.7;
 const float system_gamma = 2.5;
 #endif
 
-
 // simple architecture independant gamma correction function.
 inline void gamma_correct_rgb(float *color,
-                          float reff = 2.5, float system = system_gamma)
+                              float reff = 2.5, float system = system_gamma)
 {
-   color[0] = pow(color[0], reff/system);
-   color[1] = pow(color[1], reff/system);
-   color[2] = pow(color[2], reff/system);
+    if (reff == system)
+       return;
+
+    float tmp = reff/system;
+    color[0] = pow(color[0], tmp);
+    color[1] = pow(color[1], tmp);
+    color[2] = pow(color[2], tmp);
 };
 
 inline void gamma_correct_c(float *color,
-                          float reff = 2.5, float system = system_gamma)
+                            float reff = 2.5, float system = system_gamma)
 {
+   if (reff == system)
+      return;
+
    *color = pow(*color, reff/system);
 };
 
 inline void gamma_restore_rgb(float *color,
-                          float reff = 2.5, float system = system_gamma)
+                              float reff = 2.5, float system = system_gamma)
 {
-   color[0] = pow(color[0], system/reff);
-   color[1] = pow(color[1], system/reff);
-   color[2] = pow(color[2], system/reff);
+    if (reff == system)
+       return;
+
+    float tmp = system/reff;
+    color[0] = pow(color[0], tmp);
+    color[1] = pow(color[1], tmp);
+    color[2] = pow(color[2], tmp);
 };
 
 inline void gamma_restore_c(float *color,
-                          float reff = 2.5, float system = system_gamma)
+                            float reff = 2.5, float system = system_gamma)
 {
+   if (reff == system)
+      return;
+
    *color = pow(*color, system/reff);
 };