changeset 25674:b13f792efe7b

Use a transform_color function to reduce code duplication
author reimar
date Sat, 12 Jan 2008 16:30:41 +0000
parents d576b679747b
children fcac7e2a38fc
files libvo/x11_common.c
diffstat 1 files changed, 14 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/x11_common.c	Sat Jan 12 16:05:04 2008 +0000
+++ b/libvo/x11_common.c	Sat Jan 12 16:30:41 2008 +0000
@@ -1959,6 +1959,17 @@
 static int vo_brightness = 0;
 static int vo_contrast = 0;
 
+static int transform_color(float val,
+                           float brightness, float contrast, float gamma) {
+    float s = pow(val, gamma);
+    s = (s - 0.5) * contrast + 0.5;
+    s += brightness;
+    if (s < 0)
+        s = 0;
+    if (s > 1)
+        s = 1;
+    return (unsigned short) (s * 65535);
+}
 
 uint32_t vo_x11_set_equalizer(char *name, int value)
 {
@@ -2001,34 +2012,9 @@
     /* now recalculate the colormap using the newly set value */
     for (k = 0; k < cm_size; k++)
     {
-        float s;
-
-        s = pow(rf * k, gamma);
-        s = (s - 0.5) * contrast + 0.5;
-        s += brightness;
-        if (s < 0)
-            s = 0;
-        if (s > 1)
-            s = 1;
-        cols[k].red = (unsigned short) (s * 65535);
-
-        s = pow(gf * k, gamma);
-        s = (s - 0.5) * contrast + 0.5;
-        s += brightness;
-        if (s < 0)
-            s = 0;
-        if (s > 1)
-            s = 1;
-        cols[k].green = (unsigned short) (s * 65535);
-
-        s = pow(bf * k, gamma);
-        s = (s - 0.5) * contrast + 0.5;
-        s += brightness;
-        if (s < 0)
-            s = 0;
-        if (s > 1)
-            s = 1;
-        cols[k].blue = (unsigned short) (s * 65535);
+        cols[k].red   = transform_color(rf * k, brightness, contrast, gamma);
+        cols[k].green = transform_color(gf * k, brightness, contrast, gamma);
+        cols[k].blue  = transform_color(bf * k, brightness, contrast, gamma);
     }
 
     XStoreColors(mDisplay, cmap, cols, cm_size);