From 9a754ce32be316367ff55a1427804249a9fcbed8 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 2 Jun 2000 21:31:32 +0000 Subject: [PATCH] Formatting; adding some tracing code. --- config/unix/ftsystem.c | 12 +++--- include/freetype/config/ftoption.h | 4 +- include/freetype/internal/ftcalc.h | 28 +++++++++----- include/freetype/internal/ftdebug.h | 60 ++++++++++------------------- src/base/ftdebug.c | 25 ++++++++++++ src/base/ftextend.c | 18 ++++++++- src/base/ftinit.c | 7 ++++ src/base/ftstream.c | 7 ++++ src/base/ftsystem.c | 28 +++++++++++++- 9 files changed, 130 insertions(+), 59 deletions(-) diff --git a/config/unix/ftsystem.c b/config/unix/ftsystem.c index 0f0291074..c902f4c72 100644 --- 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,14 +208,14 @@ 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; } 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; diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h index efadfc72d..01528c258 100644 --- 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 /*************************************************************************/ diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h index 7c81eabe4..c45fd7b78 100644 --- 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,10 +83,12 @@ #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 x ); + +#endif /* FT_CONFIG_OPTION_OLD_CALCS */ - BASE_DEF(FT_Int32) FT_Sqrt32( FT_Int32 l ); -#endif /*************************************************************************/ /* */ @@ -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 } diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h index c8c32ea14..1a827bfa4 100644 --- a/include/freetype/internal/ftdebug.h +++ b/include/freetype/internal/ftdebug.h @@ -15,46 +15,28 @@ /* */ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* 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 /* for FT_DEBUG_LEVEL_TRACE, FT_DEBUG_LEVEL_ERROR */ - +#include /* 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 diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c index dae22776e..5fb000b33 100644 --- 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 #ifdef FT_DEBUG_LEVEL_TRACE diff --git a/src/base/ftextend.c b/src/base/ftextend.c index 550bf30ff..24d8b0e08 100644 --- a/src/base/ftextend.c +++ b/src/base/ftextend.c @@ -27,7 +27,13 @@ #include -/* 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,12 +203,17 @@ 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; return 0; diff --git a/src/base/ftinit.c b/src/base/ftinit.c index c24a9c766..1c3ace618 100644 --- a/src/base/ftinit.c +++ b/src/base/ftinit.c @@ -42,6 +42,13 @@ #include #include + + /*************************************************************************/ + /* */ + /* 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 diff --git a/src/base/ftstream.c b/src/base/ftstream.c index e8d5b0621..6f57347af 100644 --- a/src/base/ftstream.c +++ b/src/base/ftstream.c @@ -19,6 +19,13 @@ #include #include + + /*************************************************************************/ + /* */ + /* 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 diff --git a/src/base/ftsystem.c b/src/base/ftsystem.c index bf02b1167..f51a5040c 100644 --- 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 +#include #include #include #include @@ -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,18 +236,28 @@ 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 ); 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; }