freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 29d6b2b: [ftview] Keep custom LCD filters norma


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 29d6b2b: [ftview] Keep custom LCD filters normalized and balanced.
Date: Mon, 11 May 2020 00:24:20 -0400 (EDT)

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

    [ftview] Keep custom LCD filters normalized and balanced.
    
    Unorthodox filters are still available through the `-L' option.
    
    * src/ftview.c (event_fw_change): New function with distributed delta.
    (Process_Event): Updated.
---
 ChangeLog    |  9 +++++++++
 src/ftview.c | 35 +++++++++++++++++++++++------------
 2 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f487a71..09b22c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2020-05-04  Alexei Podtelezhnikov  <address@hidden>
 
+       [ftview] Keep custom LCD filters normalized and balanced.
+
+       Unorthodox filters are still available through the `-L' option.
+
+       * src/ftview.c (event_fw_change): New function with distributed delta.
+       (Process_Event): Updated.
+
+2020-05-04  Alexei Podtelezhnikov  <address@hidden>
+
        * src/ftcommon.c (FTDemo_Install_Font): Remove unused buffer.
 
 2029-05-09  Werner Lemberg  <address@hidden>
diff --git a/src/ftview.c b/src/ftview.c
index f6b8a83..54fa662 100644
--- a/src/ftview.c
+++ b/src/ftview.c
@@ -923,6 +923,27 @@
   }
 
 
+  static void
+  event_fw_change( int  delta )
+  {
+    int  i = status.fw_idx;
+    int  j = ( i ^ 1 ) & 1;
+
+
+    FTC_Manager_RemoveFaceID( handle->cache_manager,
+                              handle->scaler.face_id );
+
+    /* keep it normalized and balanced */
+    status.filter_weights[    i] += delta;
+    status.filter_weights[4 - i] += delta;
+    status.filter_weights[    j] -= delta;
+    status.filter_weights[4 - j] -= delta;
+
+    FT_Library_SetLcdFilterWeights( handle->library,
+                                    status.filter_weights );
+  }
+
+
   static int
   event_bold_change( double  xdelta,
                      double  ydelta )
@@ -1448,12 +1469,7 @@
     case grKEY( '-' ):
       if ( status.lcd_filter < 0 )
       {
-        FTC_Manager_RemoveFaceID( handle->cache_manager,
-                                  handle->scaler.face_id );
-
-        status.filter_weights[status.fw_idx]--;
-        FT_Library_SetLcdFilterWeights( handle->library,
-                                        status.filter_weights );
+        event_fw_change( -1 );
         status.update = 1;
       }
       break;
@@ -1462,12 +1478,7 @@
     case grKEY( '=' ):
       if ( status.lcd_filter < 0 )
       {
-        FTC_Manager_RemoveFaceID( handle->cache_manager,
-                                  handle->scaler.face_id );
-
-        status.filter_weights[status.fw_idx]++;
-        FT_Library_SetLcdFilterWeights( handle->library,
-                                        status.filter_weights );
+        event_fw_change( 1 );
         status.update = 1;
       }
       break;



reply via email to

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