ref: 9a754ce32be316367ff55a1427804249a9fcbed8
parent: 91e52d416aedfdfcf5b4331c2156a3866898738e
author: Werner Lemberg <[email protected]>
date: Fri Jun 2 17:31:32 EDT 2000
Formatting; adding some tracing code.
--- 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;
}