apply contrast before blend-gamma-calc



git-svn-id: http://skia.googlecode.com/svn/trunk@3283 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp
index 2b0f997..e794f89 100644
--- a/src/ports/SkFontHost_FreeType.cpp
+++ b/src/ports/SkFontHost_FreeType.cpp
@@ -55,8 +55,8 @@
 //#define DUMP_STRIKE_CREATION
 
 //#define SK_GAMMA_APPLY_TO_A8
-#define SK_GAMMA_CONTRAST   0x33
-#define SK_GAMMA_EXPONENT   1.8
+#define SK_GAMMA_CONTRAST   0x80
+#define SK_GAMMA_EXPONENT   2.2
 
 #ifdef SK_DEBUG
     #define SkASSERT_CONTINUE(pred)                                                         \
@@ -1063,11 +1063,15 @@
         build_power_table(invPowTable, 1/g);
         gInit = true;
     }
-    int linSrc = powTable[src];
-    int linDst = powTable[dst];
 
+    const int linSrc = powTable[src];
+    const int linDst = powTable[dst];
+    // have our contrast value taper off to 0 as the src luminance becomes white
+    const int contrast = SK_GAMMA_CONTRAST * (255 - linSrc) / 255;
+    
     for (int i = 0; i < 256; ++i) {
-        int srca = i;
+        int srca = apply_contrast(i, contrast);
+        SkASSERT((unsigned)srca <= 255);
         int dsta = 255 - srca;
 
         //Calculate the output we want.
@@ -1079,10 +1083,7 @@
         int result = ((255 * out) - (255 * dst)) / (src - dst);
         SkASSERT((unsigned)result <= 255);
 
-        result = apply_contrast(result, SK_GAMMA_CONTRAST);
-        SkASSERT((unsigned)result <= 255);
-
-        table[srca] = result;
+        table[i] = result;
     }
 }