freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 23d2e84: [ftstring] Enable sub-pixel rendering,


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 23d2e84: [ftstring] Enable sub-pixel rendering,
Date: Wed, 25 Nov 2015 04:17:44 +0000

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

    [ftstring] Enable sub-pixel rendering,
    
    * src/ftstring.c (event_lcdmode_change): New function.
    (Process_Event): New event to change LCD mode.
    (event_help): Offer it.
    (main): Select light LCD filter.
---
 ChangeLog      |   11 +++++++++-
 src/ftstring.c |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0e2a445..60efd4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
+2015-11-24  Alexei Podtelezhnikov  <address@hidden>
+
+       [ftstring] Enable sub-pixel rendering,
+
+       * src/ftstring.c (event_lcdmode_change): New function.
+       (Process_Event): New event to change LCD mode.
+       (event_help): Offer it.
+       (main): Select light LCD filter.
+
 2015-11-22  Alexei Podtelezhnikov  <address@hidden>
 
-       * src/ftstring.c (main); Move gamma curve in the background.
+       * src/ftstring.c (main): Move gamma curve in the background.
 
 2015-11-22  Alexei Podtelezhnikov  <address@hidden>
 
diff --git a/src/ftstring.c b/src/ftstring.c
index 5f2bd6b..91e8e3d 100644
--- a/src/ftstring.c
+++ b/src/ftstring.c
@@ -2,7 +2,7 @@
 /*                                                                          */
 /*  The FreeType project -- a free and portable quality TrueType renderer.  */
 /*                                                                          */
-/*  Copyright 1996-2007, 2009-2014 by                                       */
+/*  Copyright 1996-2007, 2009-2015 by                                       */
 /*  D. Turner, R.Wilhelm, and W. Lemberg                                    */
 /*                                                                          */
 /*                                                                          */
@@ -20,6 +20,8 @@
 #include <stdarg.h>
 #include <math.h>
 
+#include FT_LCD_FILTER_H
+
 #define CELLSTRING_HEIGHT  8
 #define MAXPTSIZE          500   /* dtp */
 
@@ -112,10 +114,11 @@
     grWriteln( "  h         : toggle outline hinting" );
     grLn();
     grWriteln( "  1-2       : select rendering mode" );
+    grWriteln( "  l         : cycle through LCD modes" );
     grWriteln( "  k         : cycle through kerning modes" );
     grWriteln( "  t         : cycle through kerning degrees" );
-    grWriteln( "  V         : toggle vertical rendering" );
     grWriteln( "  space     : cycle through color" );
+    grWriteln( "  V         : toggle vertical rendering" );
     grLn();
     grWriteln( "  g         : increase gamma by 0.1" );
     grWriteln( "  v         : decrease gamma by 0.1" );
@@ -191,6 +194,43 @@
 
 
   static void
+  event_lcdmode_change()
+  {
+    const char  *lcd_mode = NULL;
+
+
+    handle->lcd_mode++;
+
+    switch ( handle->lcd_mode )
+    {
+    case N_LCD_MODES:
+      handle->lcd_mode = 0;
+    case LCD_MODE_AA:
+      lcd_mode = " normal AA";
+      break;
+    case LCD_MODE_LIGHT:
+      lcd_mode = " light AA";
+      break;
+    case LCD_MODE_RGB:
+      lcd_mode = " LCD (horiz. RGB)";
+      break;
+    case LCD_MODE_BGR:
+      lcd_mode = " LCD (horiz. BGR)";
+      break;
+    case LCD_MODE_VRGB:
+      lcd_mode = " LCD (vert. RGB)";
+      break;
+    case LCD_MODE_VBGR:
+      lcd_mode = " LCD (vert. BGR)";
+      break;
+    }
+
+    sprintf( status.header_buffer, "mode changed to %s", lcd_mode );
+    status.header = status.header_buffer;
+  }
+
+
+  static void
   event_color_change()
   {
     static int     i = 0;
@@ -334,6 +374,12 @@
       FTDemo_Update_Current_Flags( handle );
       break;
 
+    case grKEY( 'l' ):
+      event_lcdmode_change();
+
+      FTDemo_Update_Current_Flags( handle );
+      break;
+
     case grKEY( 'k' ):
       sc->kerning_mode = ( sc->kerning_mode + 1 ) % N_KERNING_MODES;
       status.header =
@@ -356,6 +402,10 @@
             : (char *)"tight track kerning active";
       break;
 
+    case grKeySpace:
+      event_color_change();
+      break;
+
     case grKEY( 'V' ):
       sc->vertical  = !sc->vertical;
       status.header = sc->vertical
@@ -363,10 +413,6 @@
                       : (char *)"using horizontal layout";
       break;
 
-    case grKeySpace:
-      event_color_change();
-      break;
-
     case grKEY( 'g' ):
       event_gamma_change( 0.1 );
       break;
@@ -612,6 +658,8 @@
 
     parse_cmdline( &argc, &argv );
 
+    FT_Library_SetLcdFilter( handle->library, FT_LCD_FILTER_LIGHT );
+
     handle->encoding  = status.encoding;
     handle->use_sbits = 0;
     FTDemo_Update_Current_Flags( handle );



reply via email to

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