diff --git a/src/renderer/ftgrays.c b/src/renderer/ftgrays.c index d7ef21032..281833292 100644 --- a/src/renderer/ftgrays.c +++ b/src/renderer/ftgrays.c @@ -50,7 +50,7 @@ /* It is based on ideas that I initially found in Raph Levien's */ /* excellent LibArt graphics library (see http://www.levien.com/libart */ /* for more information, though the web pages do not tell anything */ - /* about the renderer; you'll have to dive into the source code to */ + /* about the renderer; you will have to dive into the source code to */ /* understand how it works). */ /* */ /* Note, however, that this is a _very_ different implementation */ @@ -103,6 +103,7 @@ #include "ftimage.h" #include "ftgrays.h" + /* This macro is used to indicate that a function parameter is unused. */ /* Its purpose is simply to reduce compiler warnings. Note also that */ /* simply defining it as `(void)x' doesn't avoid warnings with certain */ @@ -135,6 +136,7 @@ /* define this to dump debugging information */ #define xxxDEBUG_GRAYS + /* as usual, for the speed hungry :-) */ #ifndef FT_STATIC_RASTER @@ -225,7 +227,7 @@ #endif /* GRAYS_COMPACT */ - typedef struct TRaster_ + typedef struct TRaster_ { PCell cells; int max_cells; @@ -965,8 +967,8 @@ #ifdef SHELL_SORT - /* A simple shell sort algorithm that works directly on our */ - /* cells table.. */ + /* a simple shell sort algorithm that works directly on our */ + /* cells table */ static void shell_sort ( PCell cells, int count ) @@ -1440,7 +1442,7 @@ /*************************************************************************/ /* */ /* The following function should only compile in stand_alone mode, */ - /* i.e., when building this component without the rest of FreeType. */ + /* i.e., if building this component without the rest of FreeType. */ /* */ /*************************************************************************/ @@ -1684,8 +1686,8 @@ static FT_Outline_Funcs interface = { - (FT_Outline_MoveTo_Func)Move_To, - (FT_Outline_LineTo_Func)Line_To, + (FT_Outline_MoveTo_Func) Move_To, + (FT_Outline_LineTo_Func) Line_To, (FT_Outline_ConicTo_Func)Conic_To, (FT_Outline_CubicTo_Func)Cubic_To, 0, @@ -1840,7 +1842,7 @@ return -1; /* XXXX: this version does not support monochrome rendering yet! */ - if ( !(params->flags & ft_raster_flag_aa) ) + if ( !( params->flags & ft_raster_flag_aa ) ) return -1; ras.outline = *outline; diff --git a/src/renderer/ftgrays.h b/src/renderer/ftgrays.h index feb74843b..2e6ff17eb 100644 --- a/src/renderer/ftgrays.h +++ b/src/renderer/ftgrays.h @@ -15,35 +15,44 @@ /* */ /***************************************************************************/ + #ifndef FTGRAYS_H #define FTGRAYS_H + #ifdef __cplusplus extern "C" { #endif + #ifdef _STANDALONE_ #include "ftimage.h" #else #include #endif + /*************************************************************************/ /* */ /* To make ftgrays.h independent from configuration files we check */ - /* whether FT_EXPORT_DEF has been defined already. */ + /* whether FT_EXPORT_VAR has been defined already. */ /* */ /* On some systems and compilers (Win32 mostly), an extra keyword is */ /* necessary to compile the library as a DLL. */ /* */ #ifndef FT_EXPORT_VAR -#define FT_EXPORT_VAR(x) extern x +#define FT_EXPORT_VAR( x ) extern x #endif - FT_EXPORT_VAR(FT_Raster_Funcs) ft_grays_raster; + FT_EXPORT_VAR( FT_Raster_Funcs ) ft_grays_raster; - #ifdef __cplusplus - } - #endif +#ifdef __cplusplus +} #endif + + +#endif /* FTGRAYS_H */ + + +/* END */ diff --git a/src/renderer/ftraster.c b/src/renderer/ftraster.c index 4b2baae6f..19beb9426 100644 --- a/src/renderer/ftraster.c +++ b/src/renderer/ftraster.c @@ -60,7 +60,7 @@ /* */ /* ^ ^ */ /* | | */ - /* start of render pool top */ + /* start of render pool top */ /* */ /* The top of the profile stack is kept in the `top' variable. */ /* */ @@ -236,6 +236,7 @@ typedef unsigned char Byte, *PByte; typedef char Bool; + typedef struct TPoint_ { Long x; @@ -303,6 +304,7 @@ #ifdef TT_STATIC_RASTER + #define RAS_ARGS /* void */ #define RAS_ARG /* void */ @@ -311,8 +313,10 @@ #define UNUSED_RASTER do ; while ( 0 ) + #else /* TT_STATIC_RASTER */ + #define RAS_ARGS TRaster_Instance* raster, #define RAS_ARG TRaster_Instance* raster @@ -321,6 +325,7 @@ #define UNUSED_RASTER UNUSED( raster ) + #endif /* TT_STATIC_RASTER */ diff --git a/src/renderer/module.mk b/src/renderer/module.mk index be7d80dba..a54ed57b1 100644 --- a/src/renderer/module.mk +++ b/src/renderer/module.mk @@ -1,6 +1,6 @@ make_module_list: add_renderer_module -# XXX: important, the standard renderer *MUST* be first on this list.. +# XXX: important, the standard renderer *MUST* be first on this list! # add_renderer_module: $(OPEN_DRIVER)ft_standard_renderer_class$(CLOSE_DRIVER) diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c index 9971933c7..8fab2fbc0 100644 --- a/src/renderer/renderer.c +++ b/src/renderer/renderer.c @@ -1,69 +1,98 @@ +/***************************************************************************/ +/* */ +/* renderer.c */ +/* */ +/* FreeType renderer module (body). */ +/* */ +/* Copyright 2000 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + #include - /* initialise renderer - init its raster */ - static FT_Error ft_renderer_init( FT_Renderer render ) + + /* initialize renderer - init its raster */ + static + FT_Error ft_renderer_init( FT_Renderer render ) { - FT_Library library = FT_MODULE_LIBRARY(render); + FT_Library library = FT_MODULE_LIBRARY( render ); + render->clazz->raster_class->raster_reset( render->raster, - library->raster_pool, library->raster_pool_size ); + library->raster_pool, + library->raster_pool_size ); return 0; } - - /* sets render-specific mode */ - static FT_Error ft_renderer_set_mode( FT_Renderer render, - FT_ULong mode_tag, - FT_Pointer data ) + /* set render-specific mode */ + static + FT_Error ft_renderer_set_mode( FT_Renderer render, + FT_ULong mode_tag, + FT_Pointer data ) { /* we simply pass it to the raster */ - return render->clazz->raster_class->raster_set_mode( - render->raster, mode_tag, data ); + return render->clazz->raster_class->raster_set_mode( render->raster, + mode_tag, + data ); } - /* transform a given glyph image */ - static FT_Error ft_renderer_transform( FT_Renderer render, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ) + + /* transform a given glyph image */ + static + FT_Error ft_renderer_transform( FT_Renderer render, + FT_GlyphSlot slot, + FT_Matrix* matrix, + FT_Vector* delta ) { FT_Error error = FT_Err_Ok; - if (slot->format != render->glyph_format) + + if ( slot->format != render->glyph_format ) { error = FT_Err_Invalid_Argument; goto Exit; } - if (matrix) + if ( matrix ) FT_Outline_Transform( &slot->outline, matrix ); - if (delta) + if ( delta ) FT_Outline_Translate( &slot->outline, delta->x, delta->y ); Exit: return error; } - /* return the glyph's control box */ - static void ft_renderer_get_cbox( FT_Renderer render, - FT_GlyphSlot slot, - FT_BBox *cbox ) - { - MEM_Set( cbox, 0, sizeof(*cbox) ); - if (slot->format == render->glyph_format) + /* return the glyph's control box */ + static + void ft_renderer_get_cbox( FT_Renderer render, + FT_GlyphSlot slot, + FT_BBox* cbox ) + { + MEM_Set( cbox, 0, sizeof ( *cbox ) ); + + if ( slot->format == render->glyph_format ) FT_Outline_Get_CBox( &slot->outline, cbox ); } - /* convert a slot's glyph image into a bitmap */ - static FT_Error ft_renderer_render( FT_Renderer render, - FT_GlyphSlot slot, - FT_UInt mode, - FT_Vector* origin ) + /* convert a slot's glyph image into a bitmap */ + static + FT_Error ft_renderer_render( FT_Renderer render, + FT_GlyphSlot slot, + FT_UInt mode, + FT_Vector* origin ) { FT_Error error; FT_Outline* outline; @@ -74,8 +103,9 @@ FT_Raster_Params params; + /* check glyph image format */ - if (slot->format != render->glyph_format) + if ( slot->format != render->glyph_format ) { error = FT_Err_Invalid_Argument; goto Exit; @@ -84,7 +114,7 @@ outline = &slot->outline; /* translate the outline to the new origin if needed */ - if (origin) + if ( origin ) FT_Outline_Translate( outline, origin->x, origin->y ); /* compute the control box, and grid fit it */ @@ -92,18 +122,18 @@ cbox.xMin &= -64; cbox.yMin &= -64; - cbox.xMax = (cbox.xMax+63) & -64; - cbox.yMax = (cbox.yMax+63) & -64; + cbox.xMax = ( cbox.xMax + 63 ) & -64; + cbox.yMax = ( cbox.yMax + 63 ) & -64; - width = (cbox.xMax - cbox.xMin) >> 6; - height = (cbox.yMax - cbox.yMin) >> 6; + width = ( cbox.xMax - cbox.xMin ) >> 6; + height = ( cbox.yMax - cbox.yMin ) >> 6; bitmap = &slot->bitmap; memory = slot->face->memory; /* release old bitmap buffer */ - if ((slot->flags & ft_glyph_own_bitmap)) + if ( ( slot->flags & ft_glyph_own_bitmap ) ) { - FREE(bitmap->buffer); + FREE( bitmap->buffer ); slot->flags &= ~ft_glyph_own_bitmap; } @@ -116,7 +146,7 @@ } else { - pitch = (width+7) >> 3; + pitch = ( width + 7 ) >> 3; bitmap->pixel_mode = ft_pixel_mode_mono; } @@ -124,7 +154,7 @@ bitmap->rows = height; bitmap->pitch = pitch; - if (ALLOC( bitmap->buffer, (FT_ULong)pitch * height )) + if ( ALLOC( bitmap->buffer, (FT_ULong)pitch * height ) ) goto Exit; slot->flags |= ft_glyph_own_bitmap; @@ -142,7 +172,8 @@ /* render outline into the bitmap */ error = render->raster_render( render->raster, ¶ms ); - if (error) goto Exit; + if ( error ) + goto Exit; slot->format = ft_glyph_format_bitmap; slot->bitmap_left = cbox.xMin >> 6; @@ -152,68 +183,79 @@ return error; } + #ifndef FT_CONFIG_OPTION_NO_STD_RASTER + #include - const FT_Renderer_Class ft_standard_renderer_class = + + const FT_Renderer_Class ft_standard_renderer_class = { { ft_module_renderer, - sizeof( FT_RendererRec ), + sizeof ( FT_RendererRec ), "standard renderer", - 0x10000, - 0x20000, + 0x10000L, + 0x20000L, 0, /* module specific interface */ - (FT_Module_Constructor) ft_renderer_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 + (FT_Module_Constructor)ft_renderer_init, + (FT_Module_Destructor) 0, + (FT_Module_Requester) 0 }, ft_glyph_format_outline, - (FTRenderer_render) ft_renderer_render, - (FTRenderer_transform) ft_renderer_transform, - (FTRenderer_getCBox) ft_renderer_get_cbox, - (FTRenderer_setMode) ft_renderer_set_mode, + (FTRenderer_render) ft_renderer_render, + (FTRenderer_transform)ft_renderer_transform, + (FTRenderer_getCBox) ft_renderer_get_cbox, + (FTRenderer_setMode) ft_renderer_set_mode, - (FT_Raster_Funcs*) &ft_standard_raster + (FT_Raster_Funcs*) &ft_standard_raster }; + #endif /* !FT_CONFIG_OPTION_NO_STD_RASTER */ + #ifndef FT_CONFIG_OPTION_NO_SMOOTH_RASTER + #include + const FT_Renderer_Class ft_smooth_renderer_class = { { ft_module_renderer, - sizeof( FT_RendererRec ), + sizeof ( FT_RendererRec ), "smooth renderer", - 0x10000, - 0x20000, + 0x10000L, + 0x20000L, 0, /* module specific interface */ - (FT_Module_Constructor) ft_renderer_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 + (FT_Module_Constructor)ft_renderer_init, + (FT_Module_Destructor) 0, + (FT_Module_Requester) 0 }, ft_glyph_format_outline, - (FTRenderer_render) ft_renderer_render, - (FTRenderer_transform) ft_renderer_transform, - (FTRenderer_getCBox) ft_renderer_get_cbox, - (FTRenderer_setMode) ft_renderer_set_mode, + (FTRenderer_render) ft_renderer_render, + (FTRenderer_transform)ft_renderer_transform, + (FTRenderer_getCBox) ft_renderer_get_cbox, + (FTRenderer_setMode) ft_renderer_set_mode, - (FT_Raster_Funcs*) &ft_grays_raster + (FT_Raster_Funcs*) &ft_grays_raster }; + #endif /* !FT_CONFIG_OPTION_NO_SMOOTH_RASTER */ + + +/* END */ diff --git a/src/renderer/renderer.h b/src/renderer/renderer.h index 091d1ec5a..5a760b836 100644 --- a/src/renderer/renderer.h +++ b/src/renderer/renderer.h @@ -1,14 +1,38 @@ +/***************************************************************************/ +/* */ +/* renderer.h */ +/* */ +/* FreeType renderer module (specification). */ +/* */ +/* Copyright 2000 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + #ifndef RENDERER_H #define RENDERER_H + #include + #ifndef FT_CONFIG_OPTION_NO_STD_RASTER - FT_EXPORT_VAR(const FT_Renderer_Class) ft_std_renderer_class; + FT_EXPORT_VAR( const FT_Renderer_Class ) ft_std_renderer_class; #endif #ifndef FT_CONFIG_OPTION_NO_SMOOTH_RASTER - FT_EXPORT_VAR(const FT_Renderer_Class) ft_smooth_renderer_class; + FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_renderer_class; #endif + #endif /* RENDERER_H */ + + +/* END */ diff --git a/src/renderer/rules.mk b/src/renderer/rules.mk index 5cdfd144c..600fc56c5 100644 --- a/src/renderer/rules.mk +++ b/src/renderer/rules.mk @@ -29,18 +29,18 @@ REND_CFLAGS := $(REND_INCLUDE:%=$I%) REND_COMPILE := $(FT_COMPILE) $(REND_CFLAGS) -# REND driver sources (i.e., C files) +# renderer driver sources (i.e., C files) # -REND_DRV_SRC := $(REND_DIR_)ftraster.c \ - $(REND_DIR_)ftgrays.c \ +REND_DRV_SRC := $(REND_DIR_)ftraster.c \ + $(REND_DIR_)ftgrays.c \ $(REND_DIR_)renderer.c -# REND driver headers +# renderer driver headers # REND_DRV_H := $(REND_DRV_SRC:%c=%h) -# REND driver object(s) +# renderer driver object(s) # # REND_DRV_OBJ_M is used during `multi' builds. # REND_DRV_OBJ_S is used during `single' builds. @@ -48,19 +48,19 @@ REND_DRV_H := $(REND_DRV_SRC:%c=%h) REND_DRV_OBJ_M := $(REND_DRV_SRC:$(REND_DIR_)%.c=$(OBJ_)%.$O) REND_DRV_OBJ_S := $(REND_DRV_OBJ_M) -# REND driver source file for single build +# renderer driver source file for single build # #REND_DRV_SRC_S := $(REND_DIR_)renderer.c -# REND driver - single object +# renderer driver - single object # #$(REND_DRV_OBJ_S): $(REND_DRV_SRC_S) $(REND_DRV_SRC) \ # $(FREETYPE_H) $(REND_DRV_H) # $(REND_COMPILE) $T$@ $(REND_DRV_SRC_S) -# REND driver - multiple objects +# renderer driver - multiple objects # $(OBJ_)%.$O: $(REND_DIR_)%.c $(FREETYPE_H) $(REND_DRV_H) $(REND_COMPILE) $T$@ $< diff --git a/src/type1/t1hinter.h b/src/type1/t1hinter.h index dcc9bce93..86739dff5 100644 --- a/src/type1/t1hinter.h +++ b/src/type1/t1hinter.h @@ -1,24 +1,20 @@ -/******************************************************************* - * - * t1hinter.h 1.2 - * - * Type1 hinter. - * - * Copyright 1996-1999 by - * David Turner, Robert Wilhelm, and Werner Lemberg. - * - * This file is part of the FreeType project, and may only be used - * modified and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - * - * The Hinter is in charge of fitting th scaled outline to the - * pixel grid in order to considerably improve the quality of - * the Type 1 font driver's output.. - * - ******************************************************************/ +/***************************************************************************/ +/* */ +/* t1hinter.h */ +/* */ +/* Type 1 hinter (body). */ +/* */ +/* Copyright 1996-2000 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + #ifndef T1HINTER_H #define T1HINTER_H @@ -31,29 +27,30 @@ #endif -/************************************************************************ - * - * - * T1_Snap_Zone - * - * - * A "snap zone" is used to model either a blue zone or a stem width - * at a given character size. It is made of a minimum and maximum - * edge, defined in 26.6 pixels, as well as one "original" and - * "scaled" position. - * - * the position corresponds to the stem width (for stem snap zones) - * or to the blue position (for blue zones) - * - * - * orus :: original position in font units - * pix :: current position in sub-pixel units - * min :: minimum boundary in sub-pixel units - * max :: maximim boundary in sub-pixel units - * - ************************************************************************/ - - typedef struct T1_Snap_Zone_ + /*************************************************************************/ + /* */ + /* */ + /* T1_Snap_Zone */ + /* */ + /* */ + /* A `snap zone' is used to model either a blue zone or a stem width */ + /* at a given character size. It is made of a minimum and maximum */ + /* edge, defined in 26.6 pixels, as well as an `original' and */ + /* `scaled' position. */ + /* */ + /* The position corresponds to the stem width (for stem snap zones) */ + /* or to the blue position (for blue zones). */ + /* */ + /* */ + /* orus :: The original position in font units. */ + /* */ + /* pix :: The current position in sub-pixel units. */ + /* */ + /* min :: The minimum boundary in sub-pixel units. */ + /* */ + /* max :: The maximum boundary in sub-pixel units. */ + /* */ + typedef struct T1_Snap_Zone_ { FT_Pos orus; FT_Pos pix; @@ -63,21 +60,20 @@ } T1_Snap_Zone; -/************************************************************************ - * - * - * T1_Edge - * - * - * A very simply structure used to model an stem edge - * - * - * orus :: original edge position in font units - * pix :: scaled edge position in sub-pixel units - * - ************************************************************************/ - - typedef struct T1_Edge_ + /*************************************************************************/ + /* */ + /* */ + /* T1_Edge */ + /* */ + /* */ + /* A very simple structure used to model a stem edge. */ + /* */ + /* */ + /* orus :: The original edge position in font units. */ + /* */ + /* pix :: The scaled edge position in sub-pixel units. */ + /* */ + typedef struct T1_Edge_ { FT_Pos orus; FT_Pos pix; @@ -85,26 +81,26 @@ } T1_Edge; -/************************************************************************ - * - * - * T1_Stem_Hint - * - * - * A simple structure used to model a stem hint - * - * - * min_edge :: the hint's minimum edge - * max_edge :: the hint's maximum edge - * hint_flags :: some flags describing the stem properties - * - * - * the min and max edges of a ghost stem have the same position, - * even if they're coded in a weird way in the charstrings - * - ************************************************************************/ - - typedef struct T1_Stem_Hint_ + /*************************************************************************/ + /* */ + /* */ + /* T1_Stem_Hint */ + /* */ + /* */ + /* A simple structure used to model a stem hint. */ + /* */ + /* */ + /* min_edge :: The hint's minimum edge. */ + /* */ + /* max_edge :: The hint's maximum edge. */ + /* */ + /* hint_flags :: Some flags describing the stem properties. */ + /* */ + /* */ + /* The min and max edges of a ghost stem have the same position, */ + /* even if they are coded in a weird way in the charstrings. */ + /* */ + typedef struct T1_Stem_Hint_ { T1_Edge min_edge; T1_Edge max_edge; @@ -114,109 +110,105 @@ #define T1_HINT_FLAG_ACTIVE 1 /* indicates an active stem */ -#define T1_HINT_FLAG_MIN_BORDER 2 /* unused for now.. */ -#define T1_HINT_FLAG_MAX_BORDER 4 /* unused for now.. */ +#define T1_HINT_FLAG_MIN_BORDER 2 /* unused for now */ +#define T1_HINT_FLAG_MAX_BORDER 4 /* unused for now */ + + /* hinter's configuration constants */ +#define T1_HINTER_MAX_BLUES 24 /* maximum number of blue zones */ +#define T1_HINTER_MAX_SNAPS 16 /* maximum number of stem snap zones */ +#define T1_HINTER_MAX_EDGES 64 /* maximum number of stem hints */ -/* hinter's configuration constants */ -#define T1_HINTER_MAX_BLUES 24 /* maximum number of blue zones */ -#define T1_HINTER_MAX_SNAPS 16 /* maximum number of stem snap zones */ -#define T1_HINTER_MAX_EDGES 64 /* maximum number of stem hints */ - - -/************************************************************************ - * - * - * T1_Size_Hints - * - * - * A structure used to model the hinting information related to - * a size object - * - * - * supress_overshoots :: a boolean flag to tell when overshoot - * supression should occur. - * - * num_blue_zones :: the total number of blue zones (top+bottom) - * num_bottom_zones :: the number of bottom zones - * - * blue_zones :: the blue zones table. bottom zones are - * stored first in the table, followed by - * all top zones - * - * num_stem_snapH :: number of horizontal stem snap zones - * stem_snapH :: horizontal stem snap zones - * - * num_stem_snapV :: number of vertical stem snap zones - * stem_snapV :: vertical stem snap zones - * - ************************************************************************/ - - struct T1_Size_Hints_ + /*************************************************************************/ + /* */ + /* */ + /* T1_Size_Hints */ + /* */ + /* */ + /* A structure used to model the hinting information related to a size */ + /* object. */ + /* */ + /* */ + /* supress_overshoots :: A boolean flag to tell whether overshoot */ + /* supression should occur. */ + /* */ + /* num_blue_zones :: The total number of blue zones (top+bottom). */ + /* */ + /* num_bottom_zones :: The number of bottom zones. */ + /* */ + /* blue_zones :: The blue zones table. Bottom zones are */ + /* stored first in the table, followed by all */ + /* top zones. */ + /* */ + /* num_snap_widths :: The number of horizontal stem snap zones. */ + /* */ + /* snap_widths :: An array of horizontal stem snap zones. */ + /* */ + /* num_snap_heights :: The number of vertical stem snap zones. */ + /* */ + /* snap_heights :: An array of vertical stem snap zones. */ + /* */ + struct T1_Size_Hints_ { FT_Bool supress_overshoots; FT_Int num_blue_zones; FT_Int num_bottom_zones; - T1_Snap_Zone blue_zones[ T1_HINTER_MAX_BLUES ]; + T1_Snap_Zone blue_zones[T1_HINTER_MAX_BLUES]; FT_Int num_snap_widths; - T1_Snap_Zone snap_widths[ T1_HINTER_MAX_SNAPS ]; + T1_Snap_Zone snap_widths[T1_HINTER_MAX_SNAPS]; FT_Int num_snap_heights; - T1_Snap_Zone snap_heights[ T1_HINTER_MAX_SNAPS ]; + T1_Snap_Zone snap_heights[T1_HINTER_MAX_SNAPS]; }; - -/************************************************************************ - * - * - * T1_Stem_Table - * - * - * A simple structure used to model a set of stem hints in a - * single direction during the loading of a given glyph outline. - * Not all stem hints are active at a time. Moreover, stems must - * be sorted regularly - * - * - * num_stems :: total number of stems in table - * num_active :: number of active stems in table - * - * stems :: the table of all stems - * sort :: a table of indices into the stems table, used - * to keep a sorted list of the active stems - * - ************************************************************************/ - - typedef struct T1_Stem_Table_ + /*************************************************************************/ + /* */ + /* */ + /* T1_Stem_Table */ + /* */ + /* */ + /* A simple structure used to model a set of stem hints in a single */ + /* direction during the loading of a given glyph outline. Not all */ + /* stem hints are active at a time. Moreover, stems must be sorted */ + /* regularly. */ + /* */ + /* */ + /* num_stems :: The total number of stems in the table. */ + /* */ + /* num_active :: The number of active stems in the table. */ + /* */ + /* stems :: A table of all stems. */ + /* */ + /* sort :: A table of indices into the stems table, used to */ + /* keep a sorted list of the active stems. */ + /* */ + typedef struct T1_Stem_Table_ { FT_Int num_stems; FT_Int num_active; - T1_Stem_Hint stems[ T1_HINTER_MAX_EDGES ]; - FT_Int sort [ T1_HINTER_MAX_EDGES ]; + T1_Stem_Hint stems[T1_HINTER_MAX_EDGES]; + FT_Int sort [T1_HINTER_MAX_EDGES]; } T1_Stem_Table; - -/************************************************************************ - * - * - * T1_Glyph_Hints - * - * - * A structure used to model the stem hints of a given glyph outline - * during glyph loading. - * - * - * hori_stems :: horizontal stem hints table - * vert_stems :: vertical stem hints table - * - ************************************************************************/ - + /*************************************************************************/ + /* */ + /* */ + /* T1_Glyph_Hints */ + /* */ + /* */ + /* A structure used to model the stem hints of a given glyph outline */ + /* during glyph loading. */ + /* */ + /* */ + /* hori_stems :: The horizontal stem hints table. */ + /* vert_stems :: The vertical stem hints table. */ + /* */ struct T1_Glyph_Hints_ { T1_Stem_Table hori_stems; @@ -224,157 +216,48 @@ }; - -/************************************************************************ - * - * - * t1_hinter_funcs - * - * - * A table containing the address of various functions used during - * the loading of an hinted scaled outline - * - ************************************************************************/ - + /*************************************************************************/ + /* */ + /* */ + /* t1_hinter_funcs */ + /* */ + /* */ + /* A table containing the address of various functions used during */ + /* the loading of an hinted scaled outline. */ + /* */ LOCAL_DEF const T1_Hinter_Funcs t1_hinter_funcs; -/************************************************************************ - * - * - * T1_New_Size_Hinter - * - * - * Allocates a new hinter structure for a given size object - * - * - * size :: handle to target size object - * - * - * Error code. 0 means success - * - ************************************************************************/ - LOCAL_DEF FT_Error T1_New_Size_Hinter( T1_Size size ); - -/************************************************************************ - * - * - * T1_Done_Size_Hinter - * - * - * Releases a given size object's hinter structure - * - * - * size :: handle to target size object - * - ************************************************************************/ - LOCAL_DEF - void T1_Done_Size_Hinter( T1_Size size ); - - -/************************************************************************ - * - * - * T1_Reset_Size_Hinter - * - * - * Recomputes hinting information when a given size object has - * changed its resolutions/char sizes/pixel sizes - * - * - * size :: handle to size object - * - * - * Error code. 0 means success - * - ************************************************************************/ + void T1_Done_Size_Hinter( T1_Size size ); LOCAL_DEF FT_Error T1_Reset_Size_Hinter( T1_Size size ); - -/************************************************************************ - * - * - * T1_New_Glyph_Hinter - * - * - * Allocates a new hinter structure for a given glyph slot - * - * - * glyph :: handle to target glyph slot - * - * - * Error code. 0 means success - * - ************************************************************************/ - LOCAL_DEF FT_Error T1_New_Glyph_Hinter( T1_GlyphSlot glyph ); - -/************************************************************************ - * - * - * T1_Done_Glyph_Hinter - * - * - * Releases a given glyph slot's hinter structure - * - * - * glyph :: handle to glyph slot - * - ************************************************************************/ - LOCAL_DEF - void T1_Done_Glyph_Hinter( T1_GlyphSlot glyph ); + void T1_Done_Glyph_Hinter( T1_GlyphSlot glyph ); - - -/************************************************************************ - * - * - * T1_Hint_Points - * - * - * this function grid-fits several points in a given Type 1 builder - * at once. - * - * - * builder :: handle to target Type 1 builder - * - ************************************************************************/ - LOCAL_DEF void T1_Hint_Points( T1_Builder* builder ); - -/************************************************************************ - * - * - * T1_Hint_Stems - * - * - * This function is used to compute the location of each stem hint - * between the first and second passes of the glyph loader on the - * charstring. - * - * - * builder :: handle to target builder - * - ************************************************************************/ - LOCAL_DEF void T1_Hint_Stems( T1_Builder* builder ); + #ifdef __cplusplus } #endif + #endif /* T1HINTER_H */ + + +/* END */