freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master f82037e: * graph/gblender.c (gblender_set_gamma


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master f82037e: * graph/gblender.c (gblender_set_gamma_table): Rounding, formatting.
Date: Sat, 19 Dec 2015 03:59:38 +0000

branch: master
commit f82037eb3d5a652f5bade703dd241213f9598d73
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>

    * graph/gblender.c (gblender_set_gamma_table): Rounding, formatting.
---
 ChangeLog        |    4 ++++
 graph/gblender.c |   21 ++++++++++-----------
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 23c29eb..01d0511 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-12-18  Alexei Podtelezhnikov  <address@hidden>
+
+       * graph/gblender.c (gblender_set_gamma_table): Rounding, formatting.
+
 2015-12-15  Werner Lemberg  <address@hidden>
 
        * src/ftgamma.c (do_fill): Fix compiler warning.
diff --git a/graph/gblender.c b/graph/gblender.c
index 0a368f5..91f8016 100644
--- a/graph/gblender.c
+++ b/graph/gblender.c
@@ -7,7 +7,7 @@ gblender_set_gamma_table( double           gamma_value,
                           unsigned short*  gamma_ramp,
                           unsigned char*   gamma_ramp_inv )
 {
-  int  gmax = (256 << GBLENDER_GAMMA_SHIFT)-1;
+  const int  gmax = (256 << GBLENDER_GAMMA_SHIFT)-1;
 
   if ( gamma_value <= 0 )  /* special case for sRGB */
   {
@@ -22,10 +22,10 @@ gblender_set_gamma_table( double           gamma_value,
       else
         x = pow( (x+0.055)/ 1.055, 2.4 );
 
-      gamma_ramp[ii] = (unsigned short)(gmax*x);
+      gamma_ramp[ii] = (unsigned short)(gmax*x + 0.5);
     }
 
-    for ( ii = 0; ii < gmax; ii++ )
+    for ( ii = 0; ii <= gmax; ii++ )
     {
       double  x = (double)ii / gmax;
 
@@ -34,24 +34,23 @@ gblender_set_gamma_table( double           gamma_value,
       else
         x = 1.055*pow(x,1/2.4) - 0.055;
 
-      gamma_ramp_inv[ii] = (unsigned char)(255*x);
+      gamma_ramp_inv[ii] = (unsigned char)(255.*x + 0.5);
     }
-    gamma_ramp_inv[gmax] = 255;
   }
   else
   {
     int     ii;
-    double  gamma_inv = 1.0f / gamma_value;
+    double  gamma_inv = 1. / gamma_value;
 
     /* voltage to linear */
     for ( ii = 0; ii < 256; ii++ )
-      gamma_ramp[ii] = (unsigned short)( pow( (double)ii/255.0f, gamma_value 
)*gmax );
+      gamma_ramp[ii] =
+        (unsigned short)( gmax*pow( (double)ii/255., gamma_value ) + 0.5 );
 
     /* linear to voltage */
-    for ( ii = 0; ii < gmax; ii++ )
-      gamma_ramp_inv[ii] = (unsigned char)( pow( (double)ii/gmax, gamma_inv ) 
* 255.0f );
-
-    gamma_ramp_inv[gmax] = 255;
+    for ( ii = 0; ii <= gmax; ii++ )
+      gamma_ramp_inv[ii] =
+        (unsigned char)( 255.*pow( (double)ii/gmax, gamma_inv ) + 0.5 );
   }
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]