Mercurial > mplayer.hg
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);