freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 780e71d: [ftview, ftstring, ftgrid] Add keystro


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 780e71d: [ftview, ftstring, ftgrid] Add keystroke emulator.
Date: Wed, 22 May 2019 00:16:49 -0400 (EDT)

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

    [ftview,ftstring,ftgrid] Add keystroke emulator.
    
    * src/{ftview,ftstring,ftgrid}.c
    (parse_cmdline): New option to pass keystroke sequence.
    (Process_Event): Consume keystrokes from buffer before listening.
    (usage): Document it.
    * src/{ftview,ftstring,ftgrid}.1: Document it.
---
 ChangeLog      | 12 +++++++++++-
 src/ftgrid.1   |  4 ++++
 src/ftgrid.c   | 15 ++++++++++++---
 src/ftstring.1 |  4 ++++
 src/ftstring.c | 16 +++++++++++++---
 src/ftview.1   |  4 ++++
 src/ftview.c   | 16 +++++++++++++---
 7 files changed, 61 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5dc7bd0..18dc53b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,18 @@
+2018-05-22  Alexei Podtelezhnikov  <address@hidden>
+
+       [ftview,ftstring,ftgrid] Add keystroke emulator.
+
+       * src/{ftview,ftstring,ftgrid}.c
+       (parse_cmdline): New option to pass keystroke sequence.
+       (Process_Event): Consume keystrokes from buffer before listening.
+       (usage): Document it.
+       * src/{ftview,ftstring,ftgrid}.1: Document it.
+
 2018-05-21  Alexei Podtelezhnikov  <address@hidden>
 
        Prepare for scripting.
 
-       * src/{ftview.c,ftstring.c,ftgrid.c,ftmulti.c,ftgamma.c} 
+       * src/{ftview.c,ftstring.c,ftgrid.c,ftmulti.c,ftgamma.c}
        (main, Process_Event): Consolidate event handling.
 
 2019-04-28  Werner Lemberg  <address@hidden>
diff --git a/src/ftgrid.1 b/src/ftgrid.1
index c3635f3..ea97738 100644
--- a/src/ftgrid.1
+++ b/src/ftgrid.1
@@ -87,6 +87,10 @@ Ignored for all other font formats.
 Don't display named instances of variation fonts.
 .
 .TP
+.BI \-k \ keys
+Emulate sequence of keystrokes upon start up.
+.
+.TP
 .B \-v
 Show version.
 .
diff --git a/src/ftgrid.c b/src/ftgrid.c
index e472448..481a257 100644
--- a/src/ftgrid.c
+++ b/src/ftgrid.c
@@ -95,6 +95,7 @@
 
   typedef struct  GridStatusRec_
   {
+    const char*  keys;
     const char*  dims;
 
     int          ptsize;
@@ -164,6 +165,7 @@
   static void
   grid_status_init( GridStatus  st )
   {
+    st->keys          = "";
     st->dims          = DIM;
     st->res           = 72;
 
@@ -1379,8 +1381,10 @@
     grEvent  event;
     int      ret = 0;
 
-
-    grListenSurface( display->surface, 0, &event );
+    if ( *status.keys )
+      event.key = grKEY( *status.keys++ );
+    else
+      grListenSurface( display->surface, 0, &event );
 
     status.header = NULL;
 
@@ -1735,6 +1739,7 @@
     fprintf( stderr,
       "  -d WxHxD  Set the window width, height, and color depth\n"
       "            (default: 640x480x24).\n"
+      "  -k keys   Emulate sequence of keystrokes upon start up.\n"
       "  -r R      Use resolution R dpi (default: 72dpi).\n"
       "  -f index  Specify first index to display (default: 0).\n"
       "  -e enc    Specify encoding tag (default: no encoding).\n"
@@ -1764,7 +1769,7 @@
 
     while ( 1 )
     {
-      option = getopt( *argc, *argv, "a:d:e:f:nr:v" );
+      option = getopt( *argc, *argv, "a:d:e:f:k:nr:v" );
 
       if ( option == -1 )
         break;
@@ -1804,6 +1809,10 @@
         status.Num = atoi( optarg );
         break;
 
+      case 'k':
+        status.keys = optarg;
+        break;
+
       case 'n':
         status.no_named_instances = 1;
         break;
diff --git a/src/ftstring.1 b/src/ftstring.1
index 46f9ace..16908fe 100644
--- a/src/ftstring.1
+++ b/src/ftstring.1
@@ -79,6 +79,10 @@ Use
 for rendering.
 .
 .TP
+.BI \-k \ keys
+Emulate sequence of keystrokes upon start up.
+.
+.TP
 .B \-v
 Show version.
 .
diff --git a/src/ftstring.c b/src/ftstring.c
index 8933227..ddf93da 100644
--- a/src/ftstring.c
+++ b/src/ftstring.c
@@ -83,6 +83,7 @@
 
   static struct  status_
   {
+    const char*    keys;
     const char*    dims;
 
     int            render_mode;
@@ -99,7 +100,8 @@
     char*      header;
     char       header_buffer[256];
 
-  } status = { DIM, RENDER_MODE_STRING, FT_ENCODING_UNICODE, 72, 48, 0, NULL,
+  } status = { "", DIM, RENDER_MODE_STRING, FT_ENCODING_UNICODE,
+               72, 48, 0, NULL,
                { 0, 0, 0x8000, 0, NULL, 0, 0 },
                { 0, 0, 0, 0 }, 0, NULL, { 0 } };
 
@@ -444,7 +446,10 @@
     int                     ret = 0;
 
 
-    grListenSurface( display->surface, 0, &event );
+    if ( *status.keys )
+      event.key = grKEY( *status.keys++ );
+    else
+      grListenSurface( display->surface, 0, &event );
 
     if ( event.key >= '1' && event.key < '1' + N_RENDER_MODES )
     {
@@ -616,6 +621,7 @@
     fprintf( stderr,
       "  -d WxHxD  Set the window width, height, and color depth\n"
       "            (default: 640x480x24).\n"
+      "  -k keys   Emulate sequence of keystrokes upon start up.\n"
       "  -r R      Use resolution R dpi (default: 72dpi).\n"
       "  -e enc    Specify encoding tag (default: Unicode).\n"
       "            Common values: `unic' (Unicode), `symb' (symbol),\n"
@@ -641,7 +647,7 @@
 
     while ( 1 )
     {
-      option = getopt( *argc, *argv, "d:e:m:r:v" );
+      option = getopt( *argc, *argv, "d:e:k:m:r:v" );
 
       if ( option == -1 )
         break;
@@ -656,6 +662,10 @@
         status.encoding = FTDemo_Make_Encoding_Tag( optarg );
         break;
 
+      case 'k':
+        status.keys = optarg;
+        break;
+
       case 'm':
         if ( *argc < 3 )
           usage( execname );
diff --git a/src/ftview.1 b/src/ftview.1
index 9415357..3d4e763 100644
--- a/src/ftview.1
+++ b/src/ftview.1
@@ -99,6 +99,10 @@ depending on the implemented subpixel rendering method.
 Preload file in memory to simulate memory-mapping.
 .
 .TP
+.BI \-k \ keys
+Emulate sequence of keystrokes upon start up.
+.
+.TP
 .B \-v
 Show version.
 .
diff --git a/src/ftview.c b/src/ftview.c
index cee95ce..534aa5f 100644
--- a/src/ftview.c
+++ b/src/ftview.c
@@ -98,6 +98,7 @@
   {
     int            update;
 
+    const char*    keys;
     const char*    dims;
     int            render_mode;
 
@@ -128,7 +129,7 @@
     int            fw_idx;
 
   } status = { 1,
-               DIM, RENDER_MODE_ALL,
+               "", DIM, RENDER_MODE_ALL,
                72, 48, 1, 0.04, 0.04, 0.02, 0.22,
                0, 0, 0, { 0 }, 0, 0, 0, /* default values are set at runtime */
                0, 0, 0, 0, 0,
@@ -1123,7 +1124,11 @@
     int      ret = 0;
 
 
-    grListenSurface( display->surface, 0, &event );
+    if ( *status.keys )
+      event.key = grKEY( *status.keys++ );
+    else
+      grListenSurface( display->surface, 0, &event );
+
     status.update = 0;
 
     if ( status.render_mode == (int)( event.key - '1' ) )
@@ -1784,6 +1789,7 @@
     fprintf( stderr,
       "  -d WxHxD  Set the window width, height, and color depth\n"
       "            (default: 640x480x24).\n"
+      "  -k keys   Emulate sequence of keystrokes upon start up.\n"
       "  -r R      Use resolution R dpi (default: 72dpi).\n"
       "  -f index  Specify first index to display (default: 0).\n"
       "  -e enc    Specify encoding tag (default: no encoding).\n"
@@ -1816,7 +1822,7 @@
 
     while ( 1 )
     {
-      option = getopt( *argc, *argv, "d:e:f:L:l:m:pr:v" );
+      option = getopt( *argc, *argv, "d:e:f:k:L:l:m:pr:v" );
 
       if ( option == -1 )
         break;
@@ -1835,6 +1841,10 @@
         status.offset = atoi( optarg );
         break;
 
+      case 'k':
+        status.keys = optarg;
+        break;
+
       case 'l':
         status.lcd_idx = atoi( optarg );
         if ( status.lcd_idx < 0 || status.lcd_idx >= N_LCD_IDXS )



reply via email to

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