freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 5ac49ab: [ftgrid] Enable LCD filtering.


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 5ac49ab: [ftgrid] Enable LCD filtering.
Date: Sun, 21 Feb 2016 08:12:16 +0000

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

    [ftgrid] Enable LCD filtering.
    
    * src/ftgrid.c (event_lcd_filter_change): New function.
    (status, main, Process_Event, event_help): Updated.
---
 ChangeLog    |    7 ++++++
 src/ftgrid.c |   61 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b883bff..700a6fd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-21  Alexei Podtelezhnikov  <address@hidden>
+
+       [ftgrid] Enable LCD filtering.
+
+       * src/ftgrid.c (event_lcd_filter_change): New function.
+       (status, main, Process_Event, event_help): Updated.
+
 2016-02-20  Alexei Podtelezhnikov  <address@hidden>
 
        [ftgrid] Improve stroked path appearance.
diff --git a/src/ftgrid.c b/src/ftgrid.c
index bf1eef3..04087c8 100644
--- a/src/ftgrid.c
+++ b/src/ftgrid.c
@@ -27,6 +27,7 @@
 
 #include FT_STROKER_H
 #include FT_SYNTHESIS_H
+#include FT_LCD_FILTER_H
 #include FT_CFF_DRIVER_H
 #include FT_TRUETYPE_DRIVER_H
 #include FT_MULTIPLE_MASTERS_H
@@ -128,6 +129,7 @@
     int          do_dotnumbers;
     int          do_segment;
 
+    int          lcd_filter;
     double       gamma;
     const char*  header;
     char         header_buffer[BUFSIZE];
@@ -169,6 +171,7 @@
     st->do_segment    = 0;
 
     st->Num           = 0;
+    st->lcd_filter    = FT_LCD_FILTER_DEFAULT;
     st->gamma         = GAMMA;
     st->header        = "";
 
@@ -969,12 +972,13 @@
     grWriteln( "f           toggle forced auto-         d           toggle dot 
display      " );
     grWriteln( "             hinting (if hinting)       o           toggle 
outline display  " );
     grWriteln( "                                        D           toggle 
dotnumber display" );
-    grWriteln( "a           toggle anti-aliasing        g, v        adjust 
gamma value      " );
-    grWriteln( "                                                               
             " );
-    grWriteln( "if Multiple Master or GX font:          q, ESC      quit 
ftgrid             " );
-    grWriteln( "  F2        cycle through axes                                 
             " );
-    grWriteln( "  F3, F4    adjust current axis by      F5, F6      cycle 
through           " );
-    grWriteln( "             1/50th of its range                    
anti-aliasing modes     " );
+    grWriteln( "a           toggle anti-aliasing                               
             " );
+    grWriteln( "F5, F6      cycle through               if Multiple Master or 
GX font:      " );
+    grWriteln( "             anti-aliasing modes          F2        cycle 
through axes      " );
+    grWriteln( "L           cycle through LCD             F3, F4    adjust 
current axis by  " );
+    grWriteln( "             filters                                 1/50th of 
its range    " );
+    grWriteln( "g, v        adjust gamma value                                 
             " );
+    grWriteln( "                                        q, ESC      quit 
ftgrid             " );
     /*          |----------------------------------|    
|----------------------------------| */
     grLn();
     grLn();
@@ -1179,6 +1183,45 @@
 
 
   static void
+  event_lcd_filter_change( void )
+  {
+    if ( handle->antialias && handle->lcd_mode > 1 )
+    {
+      const char*  lcd_filter = NULL;
+
+
+      status.lcd_filter++;
+
+      switch ( status.lcd_filter )
+      {
+        case FT_LCD_FILTER_DEFAULT:
+          lcd_filter = "default";
+          break;
+        case FT_LCD_FILTER_LIGHT:
+          lcd_filter = "light";
+          break;
+        case FT_LCD_FILTER_LEGACY1:
+          lcd_filter = "legacy";
+          break;
+        case FT_LCD_FILTER_NONE:
+        default:
+          status.lcd_filter = 0;
+          lcd_filter = "none";
+      }
+
+      sprintf( status.header_buffer, "LCD filter changed to %s",
+               lcd_filter );
+
+      status.header = (const char *)status.header_buffer;
+
+      FT_Library_SetLcdFilter( handle->library, status.lcd_filter );
+    }
+    else
+      status.header = "need LCD mode to change filter";
+  }
+
+
+  static void
   event_size_change( int  delta )
   {
     status.ptsize += delta;
@@ -1443,6 +1486,10 @@
       break;
 #endif /* FT_DEBUG_AUTOFIT */
 
+    case grKEY( 'L' ):
+      event_lcd_filter_change();
+      break;
+
     case grKEY( 'g' ):
       event_gamma_change( 0.1 );
       break;
@@ -1835,6 +1882,8 @@
                      "autofitter",
                      "warping", &status.warping );
 
+    FT_Library_SetLcdFilter( handle->library, status.lcd_filter );
+
     display = FTDemo_Display_New( gr_pixel_mode_rgb24,
                                   status.width, status.height );
     if ( !display )



reply via email to

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