freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 2c4dde7: [ftgrid] Display rendered bitmap (new


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 2c4dde7: [ftgrid] Display rendered bitmap (new feature).
Date: Sat, 13 Feb 2016 04:20:03 +0000

branch: master
commit 2c4dde78e160b3a1c850c37dd59e35648be8d329
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>

    [ftgrid] Display rendered bitmap (new feature).
    
    * src/ftgrid.c (status): New field to control new feature.
    (grid_status_draw_outline): Implement new feature here.
    (Process_Event, usage): Updated.
---
 ChangeLog    |    8 +++++++
 src/ftgrid.c |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 60 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b07e793..b1822b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-02-12  Alexei Podtelezhnikov  <address@hidden>
+
+       [ftgrid] Display rendered bitmap (new feature).
+
+       * src/ftgrid.c (status): New field to control new feature.
+       (grid_status_draw_outline): Implement new feature here.
+       (Process_Event, usage): Updated.
+
 2016-02-10  Alexei Podtelezhnikov  <address@hidden>
 
        * src/ftgrid.c (grid_status_draw_outline): Use simpler line join.
diff --git a/src/ftgrid.c b/src/ftgrid.c
index ffcc8db..449c55e 100644
--- a/src/ftgrid.c
+++ b/src/ftgrid.c
@@ -122,6 +122,7 @@
     int          do_horz_hints;
     int          do_vert_hints;
     int          do_blue_hints;
+    int          do_bitmap;
     int          do_outline;
     int          do_dots;
     int          do_dotnumbers;
@@ -161,6 +162,7 @@
     st->do_horz_hints = 1;
     st->do_vert_hints = 1;
     st->do_blue_hints = 1;
+    st->do_bitmap     = 1;
     st->do_dots       = 1;
     st->do_dotnumbers = 0;
     st->do_outline    = 1;
@@ -588,6 +590,44 @@
       int          nn;
 
 
+      /* render scaled bitmap */
+      if ( st->do_bitmap )
+      {
+        int             i, ii, j, jj;
+        FT_Bitmap       bitm;
+        FT_BitmapGlyph  bitg;
+
+
+        FT_Get_Glyph( slot, &glyph );
+        FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, NULL, 1 );
+        bitg = (FT_BitmapGlyph)glyph;
+
+        bitm.width      = (unsigned int)scale;
+        bitm.rows       = (unsigned int)scale;
+        bitm.pitch      = (int)bitm.width;
+        bitm.num_grays  = 256;
+        bitm.pixel_mode = FT_PIXEL_MODE_GRAY;
+        bitm.buffer     = (unsigned char*)malloc( scale * scale );
+
+        for ( ii = oy - bitg->top * scale,
+              i = 0; i < bitg->bitmap.rows; i++, ii += scale )
+          for ( jj = ox + bitg->left * scale,
+                j = 0; j < bitg->bitmap.width; j++, jj += scale )
+          {
+            memset( bitm.buffer,
+                    bitg->bitmap.buffer[i * bitg->bitmap.pitch + j],
+                    scale * scale );
+            ft_bitmap_draw( &bitm,
+                            jj,
+                            ii,
+                            display,
+                            st->axis_color );
+          }
+
+        free( bitm.buffer );
+        FT_Done_Glyph( glyph );
+      }
+
       /* scale the outline */
       for ( nn = 0; nn < gimage->n_points; nn++ )
       {
@@ -831,14 +871,14 @@
     grWriteln( "p, n        previous/next font          PgUp, PgDn  zoom 
in/out grid        " );
     grWriteln( "                                        SPC         reset zoom 
and position " );
 #endif /* FT_DEBUG_AUTOFIT */
-    grWriteln( "Up, Down    adjust size by 0.5pt                               
             " );
-    grWriteln( "                                        if not auto-hinting:   
             " );
-    grWriteln( "Left, Right adjust index by 1             H         cycle 
through hinting   " );
-    grWriteln( "F7, F8      adjust index by 10                       engines 
(if available) " );
-    grWriteln( "F9, F10     adjust index by 100         if light auto-hinting: 
             " );
-    grWriteln( "F11, F12    adjust index by 1000          w         toggle 
warping          " );
-    grWriteln( "                                                      (if 
available)        " );
-    grWriteln( "h           toggle hinting                                     
             " );
+    grWriteln( "Up, Down    adjust size by 0.5pt        if not auto-hinting:   
             " );
+    grWriteln( "                                          H         cycle 
through hinting   " );
+    grWriteln( "Left, Right adjust index by 1                        engines 
(if available) " );
+    grWriteln( "F7, F8      adjust index by 10          if light auto-hinting: 
             " );
+    grWriteln( "F9, F10     adjust index by 100           w         toggle 
warping          " );
+    grWriteln( "F11, F12    adjust index by 1000                      (if 
available)        " );
+    grWriteln( "                                                               
             " );
+    grWriteln( "h           toggle hinting              b           toggle 
bitmap           " );
     grWriteln( "f           toggle forced auto-         d           toggle dot 
display      " );
     grWriteln( "             hinting (if hinting)       o           toggle 
outline display  " );
     grWriteln( "                                        D           toggle 
dotnumber display" );
@@ -1348,6 +1388,10 @@
       status.do_outline = !status.do_outline;
       break;
 
+    case grKEY( 'b' ):
+      status.do_bitmap = !status.do_bitmap;
+      break;
+
     case grKEY( 'p' ):
       event_font_change( -1 );
       break;



reply via email to

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