freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 02ef7d7: [ftgrid, ftstring, ftview] Unify top h


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 02ef7d7: [ftgrid, ftstring, ftview] Unify top header lines.
Date: Thu, 18 May 2017 14:40:09 -0400 (EDT)

branch: master
commit 02ef7d7e42edd2ba736aded1a4e79aa9b72da394
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>

    [ftgrid, ftstring, ftview] Unify top header lines.
    
    * src/ftcommon.[ch] (FTDemo_Draw_Header): New function that displays
    information about face, size, resolution, and gamma to be used in...
    
    * src/ftview.c (write_header): ... here.
    * src/ftstring.c (write_header): ... here.
    * src/ftgrid.c (write_header): ... and here.
    (event_gamma_change): Updated.
---
 ChangeLog      | 12 ++++++++
 src/ftcommon.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/ftcommon.h | 10 +++++++
 src/ftgrid.c   | 58 ++++++++------------------------------
 src/ftstring.c | 60 ++++-----------------------------------
 src/ftview.c   | 66 +++----------------------------------------
 6 files changed, 131 insertions(+), 164 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index eb18e1a..452236a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2017-05-18  Alexei Podtelezhnikov  <address@hidden>
+
+       [ftgrid, ftstring, ftview] Unify top header lines.
+
+       * src/ftcommon.[ch] (FTDemo_Draw_Header): New function that displays
+       information about face, size, resolution, and gamma to be used in...
+
+       * src/ftview.c (write_header): ... here.
+       * src/ftstring.c (write_header): ... here.
+       * src/ftgrid.c (write_header): ... and here.
+       (event_gamma_change): Updated.
+
 2017-05-15  Alexei Podtelezhnikov  <address@hidden>
 
        * src/ftgrid.c (main): Fix segmentation fault.
diff --git a/src/ftcommon.c b/src/ftcommon.c
index 0c19127..11fef65 100644
--- a/src/ftcommon.c
+++ b/src/ftcommon.c
@@ -739,6 +739,95 @@
   }
 
 
+  void
+  FTDemo_Draw_Header( FTDemo_Handle*   handle,
+                      FTDemo_Display*  display,
+                      int              ptsize,
+                      int              res,
+                      double           gamma,
+                      int              error_code )
+  {
+    FT_Face      face;
+    char         buf[256];
+    const char*  basename;
+
+    int          line = 0;
+    int          x1, x2;
+
+
+    error = FTC_Manager_LookupFace( handle->cache_manager,
+                                    handle->scaler.face_id, &face );
+    if ( error )
+    {
+      FTDemo_Display_Done( display );
+      FTDemo_Done( handle );
+      PanicZ( "can't access font file" );
+    }
+
+
+    /* font and file name */
+    basename = ft_basename( handle->current_font->filepathname );
+    sprintf( buf, "%.50s %.50s (file `%.100s')",
+             face->family_name, face->style_name, basename );
+    grWriteCellString( display->bitmap, 0, (line++) * HEADER_HEIGHT,
+                       buf, display->fore_color );
+
+    /* pt and dpi */
+    x1 = sprintf( buf, "%gpt at %ddpi ",
+                       ptsize / 64.0, res );
+    grWriteCellString( display->bitmap, 0, line * HEADER_HEIGHT,
+                       buf, display->fore_color );
+
+    if ( error_code == FT_Err_Ok )
+    {
+      int  highlight;
+
+
+      highlight = abs( ptsize * res - face->size->metrics.y_ppem * 72 * 64 )
+                  > 36 * 64;
+
+      /* ppem */
+      if ( FT_IS_SCALABLE( face ) )
+        x2 = sprintf( buf, "(%.4gppem)",
+                      FT_MulFix( face->units_per_EM,
+                                 face->size->metrics.y_scale ) / 64.0 );
+      else
+        x2 = sprintf( buf, "(%dppem)",
+                      face->size->metrics.y_ppem );
+      grWriteCellString( display->bitmap, 8 * x1, line * HEADER_HEIGHT,
+                         buf, highlight ? display->warn_color
+                                        : display->fore_color );
+    }
+    else
+    {
+      /* errors */
+      switch ( error_code )
+      {
+      case FT_Err_Invalid_Pixel_Size:
+        x2 = sprintf( buf, "Invalid pixel size" );
+        break;
+      case FT_Err_Invalid_PPem:
+        x2 = sprintf( buf, "Invalid ppem value" );
+        break;
+      default:
+        x2 = sprintf( buf, "error 0x%04x",
+                      (FT_UShort)error_code );
+      }
+      grWriteCellString( display->bitmap, 8 * x1, line++ * HEADER_HEIGHT,
+                         buf, display->warn_color );
+    }
+
+    /* gamma */
+    if ( gamma == 0.0 )
+      sprintf( buf, ", gamma: sRGB mode" );
+    else
+      sprintf( buf, ", gamma: %.1f", gamma );
+    grWriteCellString( display->bitmap, 8 * ( x1 + x2 ),
+                       (line++) * HEADER_HEIGHT,
+                       buf, display->fore_color );
+  }
+
+
   FT_Error
   FTDemo_Glyph_To_Bitmap( FTDemo_Handle*  handle,
                           FT_Glyph        glyf,
diff --git a/src/ftcommon.h b/src/ftcommon.h
index 67f01ca..45a2156 100644
--- a/src/ftcommon.h
+++ b/src/ftcommon.h
@@ -260,6 +260,16 @@
                    FT_Size*        asize );
 
 
+  /* draw common header */
+  void
+  FTDemo_Draw_Header( FTDemo_Handle*   handle,
+                      FTDemo_Display*  display,
+                      int              ptsize,
+                      int              res,
+                      double           gamma,
+                      int              error_code );
+
+
   /* convert a FT_Glyph to a grBitmap (don't free target->buffer) */
   /* if aglyf != NULL, you should FT_Glyph_Done the aglyf */
   FT_Error
diff --git a/src/ftgrid.c b/src/ftgrid.c
index ba939bc..36087ca 100644
--- a/src/ftgrid.c
+++ b/src/ftgrid.c
@@ -1110,13 +1110,6 @@
       status.gamma = 0.0;
 
     grSetGlyphGamma( status.gamma );
-
-    if ( status.gamma == 0.0 )
-      sprintf( status.header_buffer, "gamma changed to sRGB mode" );
-    else
-      sprintf( status.header_buffer, "gamma changed to %.1f", status.gamma );
-
-    status.header = (const char *)status.header_buffer;
   }
 
 
@@ -1710,64 +1703,35 @@
   write_header( FT_Error  error_code )
   {
     FT_Face      face;
-    const char*  basename;
     const char*  format;
 
 
+    FTDemo_Draw_Header( handle, display, status.ptsize, status.res,
+                        status.gamma, error_code );
+
+    if ( status.header )
+      grWriteCellString( display->bitmap, 0, 3 * HEADER_HEIGHT,
+                         status.header, display->fore_color );
+
     error = FTC_Manager_LookupFace( handle->cache_manager,
                                     handle->scaler.face_id, &face );
     if ( error )
       Fatal( "can't access font file" );
 
-    if ( !status.header )
-    {
-      basename = ft_basename( handle->current_font->filepathname );
-
-      switch ( error_code )
-      {
-      case FT_Err_Ok:
-        sprintf( status.header_buffer, "%.50s %.50s (file `%.100s')",
-                 face->family_name, face->style_name, basename );
-        break;
-
-      case FT_Err_Invalid_Pixel_Size:
-        sprintf( status.header_buffer, "Invalid pixel size (file `%.100s')",
-                 basename );
-        break;
-
-      case FT_Err_Invalid_PPem:
-        sprintf( status.header_buffer, "Invalid ppem value (file `%.100s')",
-                 basename );
-        break;
-
-      default:
-        sprintf( status.header_buffer, "File `%.100s': error 0x%04x",
-                 basename, (FT_UShort)error_code );
-        break;
-      }
-
-      status.header = (const char *)status.header_buffer;
-    }
-
-    grWriteCellString( display->bitmap, 0, 0, status.header,
-                       display->fore_color );
-
     if ( status.mm )
     {
-      format = " %s axis: %.02f, %gpt, glyph %d";
+      format = "%s axis: %.02f, glyph %d";
       snprintf( status.header_buffer, BUFSIZE, format,
                 status.axis_name[status.current_axis]
                   ? status.axis_name[status.current_axis]
                   : status.mm->axis[status.current_axis].name,
                 status.design_pos[status.current_axis] / 65536.0,
-                status.ptsize / 64.0,
                 status.Num );
     }
     else
     {
-      format = " %gpt, glyph %d";
+      format = "glyph %d";
       snprintf( status.header_buffer, BUFSIZE, format,
-                status.ptsize / 64.0,
                 status.Num );
     }
 
@@ -1796,8 +1760,8 @@
     }
 
     status.header = (const char *)status.header_buffer;
-    grWriteCellString( display->bitmap, 0, HEADER_HEIGHT,
-                       status.header_buffer, display->fore_color );
+    grWriteCellString( display->bitmap, 0, 2 * HEADER_HEIGHT,
+                       status.header, display->fore_color );
 
     grRefreshSurface( display->surface );
   }
diff --git a/src/ftstring.c b/src/ftstring.c
index 4d46a7a..5ee0bf2 100644
--- a/src/ftstring.c
+++ b/src/ftstring.c
@@ -524,62 +524,12 @@
   static void
   write_header( FT_Error  error_code )
   {
-    FT_Face      face;
-    const char*  basename;
-    double       ppem = 0.0;
+    FTDemo_Draw_Header( handle, display, status.ptsize, status.res,
+                        status.gamma, error_code );
 
-
-    error = FTC_Manager_LookupFace( handle->cache_manager,
-                                    handle->scaler.face_id, &face );
-    if ( error )
-      PanicZ( "can't access font file" );
-
-    if ( !status.header )
-    {
-      basename = ft_basename( handle->current_font->filepathname );
-
-      switch ( error_code )
-      {
-      case FT_Err_Ok:
-        sprintf( status.header_buffer,
-                 "%.50s %.50s (file `%.100s')", face->family_name,
-                 face->style_name, basename );
-
-       if ( FT_IS_SCALABLE( face ) )
-          ppem = FT_MulFix( face->units_per_EM,
-                            face->size->metrics.y_scale ) / 64.0;
-        else
-          ppem = (double)face->size->metrics.y_ppem;
-
-        break;
-
-      case FT_Err_Invalid_Pixel_Size:
-        sprintf( status.header_buffer, "Invalid pixel size (file `%.100s')",
-                 basename );
-        break;
-
-      case FT_Err_Invalid_PPem:
-        sprintf( status.header_buffer, "Invalid ppem value (file `%.100s')",
-                 basename );
-        break;
-
-      default:
-        sprintf( status.header_buffer, "File `%.100s': error 0x%04x", basename,
-            (FT_UShort)error_code );
-        break;
-      }
-
-      status.header = status.header_buffer;
-    }
-
-    grWriteCellString( display->bitmap, 0, 0,
-                       status.header, display->fore_color );
-
-    sprintf( status.header_buffer,
-             "at %g points (%.4g ppem), angle = %d, gamma = %g",
-             status.ptsize / 64.0, ppem, status.angle, status.gamma );
-    grWriteCellString( display->bitmap, 0, CELLSTRING_HEIGHT,
-                       status.header_buffer, display->fore_color );
+    if ( status.header )
+      grWriteCellString( display->bitmap, 0, 2 * HEADER_HEIGHT,
+                         status.header, display->fore_color );
 
     grRefreshSurface( display->surface );
   }
diff --git a/src/ftview.c b/src/ftview.c
index 1060a57..15ded59 100644
--- a/src/ftview.c
+++ b/src/ftview.c
@@ -1374,69 +1374,19 @@
   {
     FT_Face      face;
     char         buf[256];
-    const char*  basename;
     const char*  format;
 
-    int          line = 0, x;
+    int          line = 2;
 
 
+    FTDemo_Draw_Header( handle, display, status.ptsize, status.res,
+                        status.gamma, error_code );
+
     error = FTC_Manager_LookupFace( handle->cache_manager,
                                     handle->scaler.face_id, &face );
     if ( error )
       Fatal( "can't access font file" );
 
-    /* font and file name */
-    basename = ft_basename( handle->current_font->filepathname );
-    sprintf( buf, "%.50s %.50s (file `%.100s')",
-             face->family_name, face->style_name, basename );
-    grWriteCellString( display->bitmap, 0, (line++) * HEADER_HEIGHT,
-                       buf, display->fore_color );
-
-    /* pt and dpi */
-    x = sprintf( buf, "%gpt at %ddpi ",
-                      status.ptsize / 64.0, status.res );
-    grWriteCellString( display->bitmap, 0, line * HEADER_HEIGHT,
-                       buf, display->fore_color );
-
-    if ( error_code == FT_Err_Ok )
-    {
-      int  highlight;
-
-
-      highlight = abs( status.ptsize * status.res -
-                       face->size->metrics.y_ppem * 72 * 64 ) > 36 * 64;
-
-      /* ppem */
-      if ( FT_IS_SCALABLE( face ) )
-        sprintf( buf, "(%.4gppem)",
-                      FT_MulFix( face->units_per_EM,
-                                 face->size->metrics.y_scale ) / 64.0 );
-      else
-        sprintf( buf, "(%dppem)",
-                      face->size->metrics.y_ppem );
-      grWriteCellString( display->bitmap, 8 * x , (line++) * HEADER_HEIGHT,
-                         buf, highlight ? display->warn_color
-                                        : display->fore_color );
-    }
-    else
-    {
-      /* errors */
-      switch ( error_code )
-      {
-      case FT_Err_Invalid_Pixel_Size:
-        sprintf( buf, "Invalid pixel size" );
-        break;
-      case FT_Err_Invalid_PPem:
-        sprintf( buf, "Invalid ppem value" );
-        break;
-      default:
-        sprintf( buf, "error 0x%04x",
-                      (FT_UShort)error_code );
-      }
-      grWriteCellString( display->bitmap, 8 * x, (line++) * HEADER_HEIGHT,
-                         buf, display->warn_color );
-    }
-
     /* char code, glyph index, glyph name */
     if ( status.encoding == FT_ENCODING_UNICODE      ||
          status.render_mode == RENDER_MODE_TEXT      ||
@@ -1741,14 +1691,6 @@
     grWriteCellString( display->bitmap, 0, (line++) * HEADER_HEIGHT,
                        buf, display->fore_color );
 
-    /* gamma */
-    if ( status.gamma == 0.0 )
-      sprintf( buf, "gamma: sRGB mode" );
-    else
-      sprintf( buf, "gamma: %.1f", status.gamma );
-    grWriteCellString( display->bitmap, 0, (line++) * HEADER_HEIGHT,
-                       buf, display->fore_color );
-
     line++;
 
     /* LCD filtering */



reply via email to

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