freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] sdf 70df782 4/9: [ftsdf] Handle window events.


From: Werner LEMBERG
Subject: [freetype2-demos] sdf 70df782 4/9: [ftsdf] Handle window events.
Date: Tue, 22 Dec 2020 12:07:36 -0500 (EST)

branch: sdf
commit 70df78208e3597284b77553cdf468ea7b85fc323
Author: Anuj Verma <anujv@iitbhilai.ac.in>
Commit: Werner Lemberg <wl@gnu.org>

    [ftsdf] Handle window events.
    
    * src/ftsdf.c (Process_Event): New function.
---
 ChangeLog   |   6 +++
 src/ftsdf.c | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 146 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 4cb59f5..5d1cd55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2020-08-22  Anuj Verma  <anujv@iitbhilai.ac.in>
 
+       [ftsdf] Handle window events.
+
+       * src/ftsdf.c (Process_Event): New function.
+
+2020-08-22  Anuj Verma  <anujv@iitbhilai.ac.in>
+
        [ftsdf] Add function to display some information.
 
        * src/ftsdf.c (write_header): New function.
diff --git a/src/ftsdf.c b/src/ftsdf.c
index b842198..d428476 100644
--- a/src/ftsdf.c
+++ b/src/ftsdf.c
@@ -251,4 +251,144 @@
   }
 
 
+  /* Listen to the events on the display and process them. */
+  static int
+  Process_Event( void )
+  {
+    grEvent  event;
+
+    int  ret   = 0;
+    int  speed = 10 * status.scale;
+
+
+    grListenSurface( display->surface, 0, &event );
+
+    switch ( event.key )
+    {
+    case grKEY( 'q' ):
+    case grKeyEsc:
+      ret = 1;
+      break;
+
+    case grKEY( 'z' ):
+      status.scale++;
+      break;
+    case grKEY( 'x' ):
+      status.scale--;
+      if ( status.scale < 1 )
+        status.scale = 1;
+      break;
+
+    case grKeyPageUp:
+      status.ptsize += 24;
+      /* fall through */
+    case grKeyUp:
+      status.ptsize++;
+      if ( status.ptsize > 512 )
+        status.ptsize = 512;
+      event_font_update();
+      break;
+
+    case grKeyPageDown:
+      status.ptsize -= 24;
+      /* fall through */
+    case grKeyDown:
+      status.ptsize--;
+      if ( status.ptsize < 8 )
+        status.ptsize = 8;
+      event_font_update();
+      break;
+
+    case grKEY( 'o' ):
+      status.spread++;
+      if ( status.spread > 32 )
+        status.spread = 32;
+      event_font_update();
+      break;
+    case grKEY( 'l' ):
+      status.spread--;
+      if ( status.spread < 2 )
+        status.spread = 2;
+      event_font_update();
+      break;
+
+    case grKeyF8:
+      status.glyph_index += 450;
+      /* fall through */
+    case grKeyF6:
+      status.glyph_index += 49;
+      /* fall through */
+    case grKeyRight:
+      status.glyph_index++;
+      event_font_update();
+      break;
+
+    case grKeyF7:
+      status.glyph_index -= 450;
+      /* fall through */
+    case grKeyF5:
+      status.glyph_index -= 49;
+      /* fall through */
+    case grKeyLeft:
+      status.glyph_index--;
+      if ( status.glyph_index < 0 )
+        status.glyph_index = 0;
+      event_font_update();
+      break;
+
+    case grKEY( 'b' ):
+      status.use_bitmap = !status.use_bitmap;
+      event_font_update();
+      break;
+    case grKEY( 'f' ):
+      status.nearest_filtering = !status.nearest_filtering;
+      break;
+    case grKEY( 'r' ):
+      status.reconstruct = !status.reconstruct;
+      break;
+
+    case grKEY( 'i' ):
+      status.width += 0.5f;
+      break;
+    case grKEY( 'k' ):
+      status.width -= 0.5f;
+      break;
+    case grKEY( 'u' ):
+      status.edge += 0.2f;
+      break;
+    case grKEY( 'j' ):
+      status.edge -= 0.2f;
+      break;
+
+    case grKEY( 'd' ):
+      status.x_offset += speed;
+      break;
+    case grKEY( 'a' ):
+      status.x_offset -= speed;
+      break;
+    case grKEY( 's' ):
+      status.y_offset -= speed;
+      break;
+    case grKEY( 'w' ):
+      status.y_offset += speed;
+      break;
+
+    case grKEY( 'm' ):
+      status.overlaps = !status.overlaps;
+      event_font_update();
+      break;
+
+    case grKEY( '?' ):
+    case grKEY( '/' ):
+    case grKeyF1:
+      event_help();
+      break;
+
+    default:
+        break;
+    }
+
+    return ret;
+  }
+
 /* END */



reply via email to

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