shithub: freetype+ttf2subf

Download patch

ref: 9a754ce32be316367ff55a1427804249a9fcbed8
parent: 91e52d416aedfdfcf5b4331c2156a3866898738e
author: Werner Lemberg <[email protected]>
date: Fri Jun 2 17:31:32 EDT 2000

Formatting; adding some tracing code.

git/fs: mount .git/fs: mount/attach disallowed
--- a/config/unix/ftsystem.c
+++ b/config/unix/ftsystem.c
@@ -1,6 +1,6 @@
 /**************************************************************************
  *
- *  ftsystem.h                                                        1.0
+ *  ftsystem.c                                                        1.0
  *
  *    Unix-specific FreeType low-level system interface
  *
@@ -9,7 +9,7 @@
  *    as thread synchronisation.              
  *
  *
- *  Copyright 1996-1999 by                                                   
+ *  Copyright 1996-2000 by                                                   
  *  David Turner, Robert Wilhelm, and Werner Lemberg                         
  *                                                                           
  *  This file is part of the FreeType project, and may only be used          
@@ -208,7 +208,7 @@
     if (file < 0)
     {
       FT_ERROR(( "FT.Unix.Open:" ));
-      FT_ERROR(( " could not open '%s'\n", filepathname ));
+      FT_ERROR(( " could not open `%s'\n", filepathname ));
       return FT_Err_Cannot_Open_Stream;
     }
 
@@ -215,7 +215,7 @@
     if (fstat( file, &stat_buf ) < 0)
     {
       FT_ERROR(( "FT.Unix.Open:" ));
-      FT_ERROR(( " could not 'fstat' file '%s'\n", filepathname ));
+      FT_ERROR(( " could not `fstat' file `%s'\n", filepathname ));
       goto Fail_Map;
     }
       
@@ -231,7 +231,7 @@
     if ( (long)stream->base == -1 )
     {
       FT_ERROR(( "FT.Unix.Open:" ));
-      FT_ERROR(( " Could not map file '%s'\n", filepathname ));
+      FT_ERROR(( " Could not map file `%s'\n", filepathname ));
       goto Fail_Map;
     }
 
@@ -244,7 +244,7 @@
     stream->read  = 0;
     
     FT_TRACE1(( "FT.Unix.Open:" ));
-    FT_TRACE1(( " opened '%s' (%d bytes) succesfully\n",
+    FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
                 filepathname, stream->size ));
 
     return FT_Err_Ok;
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -206,8 +206,8 @@
   /*                                                                       */
   /*   Don't define any of these macros to compile in `release' mode.      */
   /*                                                                       */
-#undef  FT_DEBUG_LEVEL_ERROR
-#undef  FT_DEBUG_LEVEL_TRACE
+#define  FT_DEBUG_LEVEL_ERROR
+#define  FT_DEBUG_LEVEL_TRACE
 
 
   /*************************************************************************/
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -41,12 +41,13 @@
 
 #define SQRT_64( z )  FT_Sqrt64( z )
 
-  FT_EXPORT_DEF(FT_Int32)  FT_Sqrt64( FT_Int64  x );
+  FT_EXPORT_DEF( FT_Int32 )  FT_Sqrt64( FT_Int64  l );
 
 #endif /* OLD_CALCS */
 
 #else /* LONG64 */
 
+
   typedef struct  FT_Int64_
   {
     FT_Word32  lo;
@@ -58,17 +59,22 @@
 #define MUL_64( x, y, z )  FT_MulTo64( x, y, &z )
 #define DIV_64( x, y )     FT_Div64by32( &x, y )
 
-  FT_EXPORT_DEF(void)      FT_Add64    ( FT_Int64* x, FT_Int64* y, FT_Int64*  z );
+  FT_EXPORT_DEF( void )      FT_Add64    ( FT_Int64*  x,
+                                           FT_Int64*  y,
+                                           FT_Int64*  z );
 
-  FT_EXPORT_DEF(void)      FT_MulTo64  ( FT_Int32  x, FT_Int32  y, FT_Int64*  z );
+  FT_EXPORT_DEF( void )      FT_MulTo64  ( FT_Int32   x,
+                                           FT_Int32   y,
+                                           FT_Int64*  z );
 
-  FT_EXPORT_DEF(FT_Int32)  FT_Div64by32( FT_Int64* x, FT_Int32  y );
+  FT_EXPORT_DEF( FT_Int32 )  FT_Div64by32( FT_Int64*  x,
+                                           FT_Int32   y );
 
 #ifdef FT_CONFIG_OPTION_OLD_CALCS
 
 #define SQRT_64( z )  FT_Sqrt64( &z )
 
-  FT_EXPORT_DEF(FT_Int32)  FT_Sqrt64( FT_Int64*  x );
+  FT_EXPORT_DEF( FT_Int32 )  FT_Sqrt64( FT_Int64*  x );
 
 #endif /* OLD_CALC */
 
@@ -77,11 +83,13 @@
 
 #ifndef FT_CONFIG_OPTION_OLD_CALCS
 
-#define SQRT_32( x )       FT_Sqrt32( x )
+#define SQRT_32( x )  FT_Sqrt32( x )
 
-  BASE_DEF(FT_Int32)  FT_Sqrt32( FT_Int32  l );
-#endif
+  BASE_DEF(FT_Int32)  FT_Sqrt32( FT_Int32  x );
 
+#endif /* FT_CONFIG_OPTION_OLD_CALCS */
+
+
   /*************************************************************************/
   /*                                                                       */
   /* FT_MulDiv() and FT_MulFix() are declared in freetype.h.               */
@@ -95,8 +103,8 @@
 #define F2DOT14_TO_FIXED( x )  ( (FT_Long)(x) << 2  )
 #define FLOAT_TO_FIXED( x )    ( (FT_Long)(x * 65536.0) )
 
-#define ROUND_F26DOT6( x )     ( x >= 0 ? (   ((x) + 32) & -64) \
-                                        : ( -((32 - (x)) & -64) ) )
+#define ROUND_F26DOT6( x )     ( x >= 0 ? (    ( (x) + 32 ) & -64 )     \
+                                        : ( -( ( 32 - (x) ) & -64 ) ) )
 
 #ifdef __cplusplus
   }
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -15,47 +15,29 @@
 /*                                                                         */
 /***************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This component contains various macros and functions used to ease the */
-  /* debugging of the FreeType engine.  Its main purpose is in assertion   */
-  /* checking, tracing, and error detection.                               */
-  /*                                                                       */
-  /* There are now three debugging modes:                                  */
-  /*                                                                       */
-  /* - trace mode                                                          */
-  /*                                                                       */
-  /*   Error and trace messages are sent to the log file (which can be the */
-  /*   standard error output).                                             */
-  /*                                                                       */
-  /* - error mode                                                          */
-  /*                                                                       */
-  /*   Only error messages are generated.                                  */
-  /*                                                                       */
-  /* - release mode:                                                       */
-  /*                                                                       */
-  /*   No error message is sent or generated.  The code is free from any   */
-  /*   debugging parts.                                                    */
-  /*                                                                       */
-  /*************************************************************************/
 
-
 #ifndef FTDEBUG_H
 #define FTDEBUG_H
 
-#include <freetype/config/ftconfig.h>   /* for FT_DEBUG_LEVEL_TRACE, FT_DEBUG_LEVEL_ERROR */
+#include <freetype/config/ftconfig.h>   /* for FT_DEBUG_LEVEL_TRACE, */
+                                        /* FT_DEBUG_LEVEL_ERROR      */
 
-
 #ifdef __cplusplus
   extern "C" {
 #endif
 
 
-/* A very stupid pre-processor trick. See K&R version 2 */
-/* section A12.3 for details..                          */
-#define FT_CAT(x,y)   x ## y
-#define FT_XCAT(x,y)  FT_CAT(x,y)
+  /* A very stupid pre-processor trick.  See K&R version 2 */
+  /* section A12.3 for details...                          */
+  /*                                                       */
+  /* It is also described in the section `Separate         */
+  /* Expansion of Macro Arguments' in the info file        */
+  /* `cpp.info', describing GNU cpp.                       */
+  /*                                                       */
+#define FT_CAT( x, y )   x ## y
+#define FT_XCAT( x, y )  FT_CAT( x, y )
 
+
 #ifdef FT_DEBUG_LEVEL_TRACE
 
 
@@ -64,15 +46,14 @@
     /* the first level must always be `trace_any' */
     trace_any = 0,
 
-    /* first, define an enum for each common component */
-    trace_io,        /* in ftsys */
-    trace_memory,    /* in ftsys */
-    trace_sync,      /* in ftsys */
-    trace_stream,    /* stream manager - see ftstream.c */
-    trace_calc,      /* computations   - see ftcalc.c   */
-    trace_raster,    /* raster         - see ftraster.c */
-    trace_list,      /* list manager   - see ftlist.c   */
-    trace_objs,      /* base objects   - see ftobjs.c   */
+    /* we start with an enum for each common component */
+    trace_io,        /* i/o monitoring -- see ftsystem.c */
+    trace_memory,    /* memory manager -- see ftobjs.c   */
+    trace_stream,    /* stream manager -- see ftstream.c */
+    trace_calc,      /* computations   -- see ftcalc.c   */
+    trace_raster,    /* raster         -- see ftraster.c */
+    trace_list,      /* list manager   -- see ftlist.c   */
+    trace_objs,      /* base objects   -- see ftobjs.c   */
 
     /* then define an enum for each TrueType driver component */
     trace_ttobjs,
@@ -92,6 +73,7 @@
 
     /* other trace levels */
     trace_init,
+    trace_extend,
 
     /* the last level must always be `trace_max' */
     trace_max
--- a/src/base/ftdebug.c
+++ b/src/base/ftdebug.c
@@ -16,6 +16,31 @@
 /***************************************************************************/
 
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* This component contains various macros and functions used to ease the */
+  /* debugging of the FreeType engine.  Its main purpose is in assertion   */
+  /* checking, tracing, and error detection.                               */
+  /*                                                                       */
+  /* There are now three debugging modes:                                  */
+  /*                                                                       */
+  /* - trace mode                                                          */
+  /*                                                                       */
+  /*   Error and trace messages are sent to the log file (which can be the */
+  /*   standard error output).                                             */
+  /*                                                                       */
+  /* - error mode                                                          */
+  /*                                                                       */
+  /*   Only error messages are generated.                                  */
+  /*                                                                       */
+  /* - release mode:                                                       */
+  /*                                                                       */
+  /*   No error message is sent or generated.  The code is free from any   */
+  /*   debugging parts.                                                    */
+  /*                                                                       */
+  /*************************************************************************/
+
+
 #include <freetype/internal/ftdebug.h>
 
 #ifdef FT_DEBUG_LEVEL_TRACE
--- a/src/base/ftextend.c
+++ b/src/base/ftextend.c
@@ -27,7 +27,13 @@
 
 #include <freetype/internal/ftextend.h>
 
-/* required by the tracing mode */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
+  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
+  /* messages during execution.                                            */
+  /*                                                                       */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_extend
 
@@ -71,6 +77,8 @@
     registry->cur_offset     = 0;
     driver->extensions       = registry;
 
+    FT_TRACE2(( "FT_Init_Extensions: success" ));
+
     return FT_Err_Ok;
   }
 
@@ -144,6 +152,9 @@
 
       registry->num_extensions++;
       registry->cur_offset += ( cur->size + FT_ALIGNMENT-1 ) & -FT_ALIGNMENT;
+
+      FT_TRACE1(( "FT_Register_Extension: `%s' successfully registered",
+                  cur->id ));
     }
 
     return FT_Err_Ok;
@@ -192,11 +203,16 @@
         if ( strcmp( cur->id, extension_id ) == 0 )
         {
           *extension_interface = cur->interface;
+
+          FT_TRACE1(( "FT_Get_Extension: got `%s'", extension_id ));
+
           return (void*)((char*)face->extensions + cur->offset);
         }
     }
 
     /* could not find the extension id */
+
+    FT_ERROR(( "FT_Get_Extension: couldn't find `%s'", extension_id ));
 
     *extension_interface = 0;
 
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -42,6 +42,13 @@
 #include <freetype/internal/ftdebug.h>
 #include <freetype/internal/ftdriver.h>
 
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
+  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
+  /* messages during execution.                                            */
+  /*                                                                       */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_init
 
--- a/src/base/ftstream.c
+++ b/src/base/ftstream.c
@@ -19,6 +19,13 @@
 #include <freetype/internal/ftstream.h>
 #include <freetype/internal/ftdebug.h>
 
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
+  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
+  /* messages during execution.                                            */
+  /*                                                                       */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_stream
 
--- a/src/base/ftsystem.c
+++ b/src/base/ftsystem.c
@@ -1,6 +1,6 @@
 /***************************************************************************/
 /*                                                                         */
-/*  ftsystem.h                                                             */
+/*  ftsystem.c                                                             */
 /*                                                                         */
 /*    ANSI-specific FreeType low-level system interface (body).            */
 /*                                                                         */
@@ -26,6 +26,7 @@
 
 
 #include <freetype/config/ftconfig.h>
+#include <freetype/internal/ftdebug.h>
 #include <freetype/ftsystem.h>
 #include <freetype/fterrors.h>
 #include <freetype/fttypes.h>
@@ -137,6 +138,17 @@
   /*************************************************************************/
 
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
+  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
+  /* messages during execution.                                            */
+  /*                                                                       */
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_io
+
+  /* We use the macro STREAM_FILE for convenience to extract the       */
+  /* system-specific stream handle from a given FreeType stream object */
 #define STREAM_FILE( stream )  ( (FILE*)stream->descriptor.pointer )
 
 
@@ -155,6 +167,10 @@
   void  ft_close_stream( FT_Stream  stream )
   {
     fclose( STREAM_FILE( stream ) );
+
+    stream->descriptor.pointer = NULL;
+    stream->size               = 0;
+    stream->base               = 0;
   }
 
 
@@ -220,7 +236,12 @@
 
     file = fopen( filepathname, "rb" );
     if ( !file )
+    {
+      FT_ERROR(( "FT_New_Stream:" ));
+      FT_ERROR(( " could not open `%s'\n", filepathname ));
+
       return FT_Err_Cannot_Open_Resource;
+    }
 
     fseek( file, 0, SEEK_END );
     stream->size = ftell( file );
@@ -227,10 +248,15 @@
     fseek( file, 0, SEEK_SET );
 
     stream->descriptor.pointer = file;
+    stream->pathname.pointer   = (char*)filepathname;
     stream->pos                = 0;
 
     stream->read  = ft_io_stream;
     stream->close = ft_close_stream;
+
+    FT_TRACE1(( "FT_New_Stream:" ));
+    FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
+                filepathname, stream->size ));
 
     return FT_Err_Ok;
   }