Commit 52166ab0a7e51ebedd144e8cac546a3f732c77b1

Werner Lemberg 2013-11-27T10:10:16

[autofit] Fix use of dumping functions in `ftgrid' demo program. * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro. (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to handle output to stdout. Use AF_DUMP. (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.

diff --git a/ChangeLog b/ChangeLog
index 2dc7a62..196bd76 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2013-11-27  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Fix use of dumping functions in `ftgrid' demo program.
+
+	* src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
+	(af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
+	af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
+	handle output to stdout.
+	Use AF_DUMP.
+	(af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
+	af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
+
 2013-11-25  Werner Lemberg  <wl@gnu.org>
 
 	* Version 2.5.1 released.
diff --git a/src/autofit/afhints.c b/src/autofit/afhints.c
index 24184af..ce504cc 100644
--- a/src/autofit/afhints.c
+++ b/src/autofit/afhints.c
@@ -144,6 +144,17 @@
 
 #include FT_CONFIG_STANDARD_LIBRARY_H
 
+  /* The dump functions are used in the `ftgrid' demo program, too. */
+#define AF_DUMP( varformat )          \
+          do                          \
+          {                           \
+            if ( to_stdout )          \
+              printf varformat;       \
+            else                      \
+              FT_TRACE7( varformat ); \
+          } while ( 0 )
+
+
   static const char*
   af_dir_str( AF_Direction  dir )
   {
@@ -179,34 +190,35 @@
   extern "C" {
 #endif
   void
-  af_glyph_hints_dump_points( AF_GlyphHints  hints )
+  af_glyph_hints_dump_points( AF_GlyphHints  hints,
+                              FT_Bool        to_stdout )
   {
     AF_Point  points = hints->points;
     AF_Point  limit  = points + hints->num_points;
     AF_Point  point;
 
 
-    FT_TRACE7(( "Table of points:\n"
-                "  [ index |  xorg |  yorg | xscale | yscale"
-                " |  xfit |  yfit |  flags ]\n" ));
+    AF_DUMP(( "Table of points:\n"
+              "  [ index |  xorg |  yorg | xscale | yscale"
+              " |  xfit |  yfit |  flags ]\n" ));
 
     for ( point = points; point < limit; point++ )
-      FT_TRACE7(( "  [ %5d | %5d | %5d | %6.2f | %6.2f"
-                  " | %5.2f | %5.2f | %c%c%c%c%c%c ]\n",
-                  point - points,
-                  point->fx,
-                  point->fy,
-                  point->ox / 64.0,
-                  point->oy / 64.0,
-                  point->x / 64.0,
-                  point->y / 64.0,
-                  ( point->flags & AF_FLAG_WEAK_INTERPOLATION ) ? 'w' : ' ',
-                  ( point->flags & AF_FLAG_INFLECTION )         ? 'i' : ' ',
-                  ( point->flags & AF_FLAG_EXTREMA_X )          ? '<' : ' ',
-                  ( point->flags & AF_FLAG_EXTREMA_Y )          ? 'v' : ' ',
-                  ( point->flags & AF_FLAG_ROUND_X )            ? '(' : ' ',
-                  ( point->flags & AF_FLAG_ROUND_Y )            ? 'u' : ' '));
-    FT_TRACE7(( "\n" ));
+      AF_DUMP(( "  [ %5d | %5d | %5d | %6.2f | %6.2f"
+                " | %5.2f | %5.2f | %c%c%c%c%c%c ]\n",
+                point - points,
+                point->fx,
+                point->fy,
+                point->ox / 64.0,
+                point->oy / 64.0,
+                point->x / 64.0,
+                point->y / 64.0,
+                ( point->flags & AF_FLAG_WEAK_INTERPOLATION ) ? 'w' : ' ',
+                ( point->flags & AF_FLAG_INFLECTION )         ? 'i' : ' ',
+                ( point->flags & AF_FLAG_EXTREMA_X )          ? '<' : ' ',
+                ( point->flags & AF_FLAG_EXTREMA_Y )          ? 'v' : ' ',
+                ( point->flags & AF_FLAG_ROUND_X )            ? '(' : ' ',
+                ( point->flags & AF_FLAG_ROUND_Y )            ? 'u' : ' '));
+    AF_DUMP(( "\n" ));
   }
 #ifdef __cplusplus
   }
@@ -247,7 +259,8 @@
   extern "C" {
 #endif
   void
-  af_glyph_hints_dump_segments( AF_GlyphHints  hints )
+  af_glyph_hints_dump_segments( AF_GlyphHints  hints,
+                                FT_Bool        to_stdout )
   {
     FT_Int  dimension;
 
@@ -262,34 +275,34 @@
       AF_Segment    seg;
 
 
-      FT_TRACE7(( "Table of %s segments:\n",
-                  dimension == AF_DIMENSION_HORZ ? "vertical"
-                                                 : "horizontal" ));
+      AF_DUMP(( "Table of %s segments:\n",
+                dimension == AF_DIMENSION_HORZ ? "vertical"
+                                               : "horizontal" ));
       if ( axis->num_segments )
-        FT_TRACE7(( "  [ index |  pos  |  dir  | from"
-                    " |  to  | link | serif | edge"
-                    " | height | extra |    flags    ]\n" ));
+        AF_DUMP(( "  [ index |  pos  |  dir  | from"
+                  " |  to  | link | serif | edge"
+                  " | height | extra |    flags    ]\n" ));
       else
-        FT_TRACE7(( "  (none)\n" ));
+        AF_DUMP(( "  (none)\n" ));
 
       for ( seg = segments; seg < limit; seg++ )
-        FT_TRACE7(( "  [ %5d | %5.2g | %5s | %4d"
-                    " | %4d | %4d | %5d | %4d"
-                    " | %6d | %5d | %11s ]\n",
-                    seg - segments,
-                    dimension == AF_DIMENSION_HORZ
-                                 ? (int)seg->first->ox / 64.0
-                                 : (int)seg->first->oy / 64.0,
-                    af_dir_str( (AF_Direction)seg->dir ),
-                    AF_INDEX_NUM( seg->first, points ),
-                    AF_INDEX_NUM( seg->last, points ),
-                    AF_INDEX_NUM( seg->link, segments ),
-                    AF_INDEX_NUM( seg->serif, segments ),
-                    AF_INDEX_NUM( seg->edge, edges ),
-                    seg->height,
-                    seg->height - ( seg->max_coord - seg->min_coord ),
-                    af_edge_flags_to_string( (AF_Edge_Flags)seg->flags ) ));
-      FT_TRACE7(( "\n" ));
+        AF_DUMP(( "  [ %5d | %5.2g | %5s | %4d"
+                  " | %4d | %4d | %5d | %4d"
+                  " | %6d | %5d | %11s ]\n",
+                  seg - segments,
+                  dimension == AF_DIMENSION_HORZ
+                               ? (int)seg->first->ox / 64.0
+                               : (int)seg->first->oy / 64.0,
+                  af_dir_str( (AF_Direction)seg->dir ),
+                  AF_INDEX_NUM( seg->first, points ),
+                  AF_INDEX_NUM( seg->last, points ),
+                  AF_INDEX_NUM( seg->link, segments ),
+                  AF_INDEX_NUM( seg->serif, segments ),
+                  AF_INDEX_NUM( seg->edge, edges ),
+                  seg->height,
+                  seg->height - ( seg->max_coord - seg->min_coord ),
+                  af_edge_flags_to_string( (AF_Edge_Flags)seg->flags ) ));
+      AF_DUMP(( "\n" ));
     }
   }
 #ifdef __cplusplus
@@ -366,7 +379,8 @@
   extern "C" {
 #endif
   void
-  af_glyph_hints_dump_edges( AF_GlyphHints  hints )
+  af_glyph_hints_dump_edges( AF_GlyphHints  hints,
+                             FT_Bool        to_stdout )
   {
     FT_Int  dimension;
 
@@ -383,94 +397,35 @@
        *  note: AF_DIMENSION_HORZ corresponds to _vertical_ edges
        *        since they have a constant X coordinate.
        */
-      FT_TRACE7(( "Table of %s edges:\n",
-                  dimension == AF_DIMENSION_HORZ ? "vertical"
-                                                 : "horizontal" ));
+      AF_DUMP(( "Table of %s edges:\n",
+                dimension == AF_DIMENSION_HORZ ? "vertical"
+                                               : "horizontal" ));
       if ( axis->num_edges )
-        FT_TRACE7(( "  [ index |  pos  |  dir  | link"
-                    " | serif | blue | opos  |  pos  |    flags    ]\n" ));
+        AF_DUMP(( "  [ index |  pos  |  dir  | link"
+                  " | serif | blue | opos  |  pos  |    flags    ]\n" ));
       else
-        FT_TRACE7(( "  (none)\n" ));
+        AF_DUMP(( "  (none)\n" ));
 
       for ( edge = edges; edge < limit; edge++ )
-        FT_TRACE7(( "  [ %5d | %5.2g | %5s | %4d"
-                    " | %5d |   %c  | %5.2f | %5.2f | %11s ]\n",
-                    edge - edges,
-                    (int)edge->opos / 64.0,
-                    af_dir_str( (AF_Direction)edge->dir ),
-                    AF_INDEX_NUM( edge->link, edges ),
-                    AF_INDEX_NUM( edge->serif, edges ),
-                    edge->blue_edge ? 'y' : 'n',
-                    edge->opos / 64.0,
-                    edge->pos / 64.0,
-                    af_edge_flags_to_string( (AF_Edge_Flags)edge->flags ) ));
-      FT_TRACE7(( "\n" ));
+        AF_DUMP(( "  [ %5d | %5.2g | %5s | %4d"
+                  " | %5d |   %c  | %5.2f | %5.2f | %11s ]\n",
+                  edge - edges,
+                  (int)edge->opos / 64.0,
+                  af_dir_str( (AF_Direction)edge->dir ),
+                  AF_INDEX_NUM( edge->link, edges ),
+                  AF_INDEX_NUM( edge->serif, edges ),
+                  edge->blue_edge ? 'y' : 'n',
+                  edge->opos / 64.0,
+                  edge->pos / 64.0,
+                  af_edge_flags_to_string( (AF_Edge_Flags)edge->flags ) ));
+      AF_DUMP(( "\n" ));
     }
   }
 #ifdef __cplusplus
   }
 #endif
 
-#else /* !FT_DEBUG_AUTOFIT */
-
-  /* these empty stubs are only used to link the `ftgrid' test program */
-  /* if debugging is disabled                                          */
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-  void
-  af_glyph_hints_dump_points( AF_GlyphHints  hints )
-  {
-    FT_UNUSED( hints );
-  }
-
-
-  void
-  af_glyph_hints_dump_segments( AF_GlyphHints  hints )
-  {
-    FT_UNUSED( hints );
-  }
-
-
-  FT_Error
-  af_glyph_hints_get_num_segments( AF_GlyphHints  hints,
-                                   FT_Int         dimension,
-                                   FT_Int*        num_segments )
-  {
-    FT_UNUSED( hints );
-    FT_UNUSED( dimension );
-    FT_UNUSED( num_segments );
-
-    return 0;
-  }
-
-
-  FT_Error
-  af_glyph_hints_get_segment_offset( AF_GlyphHints  hints,
-                                     FT_Int         dimension,
-                                     FT_Int         idx,
-                                     FT_Pos*        offset )
-  {
-    FT_UNUSED( hints );
-    FT_UNUSED( dimension );
-    FT_UNUSED( idx );
-    FT_UNUSED( offset );
-
-    return 0;
-  }
-
-
-  void
-  af_glyph_hints_dump_edges( AF_GlyphHints  hints )
-  {
-    FT_UNUSED( hints );
-  }
-
-#ifdef __cplusplus
-  }
-#endif
+#undef AF_DUMP
 
 #endif /* !FT_DEBUG_AUTOFIT */