2002-02-22 18:57:35 +01:00
|
|
|
#ifndef __FT_INTERNAL_GLYPH_LOADER_H__
|
|
|
|
#define __FT_INTERNAL_GLYPH_LOADER_H__
|
|
|
|
|
|
|
|
#include <ft2build.h>
|
|
|
|
#include FT_FREETYPE_H
|
|
|
|
|
|
|
|
FT_BEGIN_HEADER
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/**** ****/
|
|
|
|
/**** ****/
|
|
|
|
/**** G L Y P H L O A D E R ****/
|
|
|
|
/**** ****/
|
|
|
|
/**** ****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <Struct> */
|
|
|
|
/* FT_GlyphLoader */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* The glyph loader is an internal object used to load several glyphs */
|
|
|
|
/* together (for example, in the case of composites). */
|
|
|
|
/* */
|
|
|
|
/* <Note> */
|
|
|
|
/* The glyph loader implementation is not part of the high-level API, */
|
|
|
|
/* hence the forward structure declaration. */
|
|
|
|
/* */
|
2002-02-24 03:59:24 +01:00
|
|
|
typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ;
|
2002-02-22 18:57:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1
|
|
|
|
#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2
|
|
|
|
#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4
|
|
|
|
#define FT_SUBGLYPH_FLAG_SCALE 8
|
|
|
|
#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40
|
|
|
|
#define FT_SUBGLYPH_FLAG_2X2 0x80
|
|
|
|
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200
|
|
|
|
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
FT_GLYPH_OWN_BITMAP = 1
|
|
|
|
};
|
|
|
|
|
|
|
|
|
* src/base/ftdbgmem.c (ft_mem_table_resize, ft_mem_table_new,
ft_mem_table_set, ft_mem_debug_alloc, ft_mem_debug_free,
ft_mem_debug_realloc, ft_mem_debug_done, FT_Alloc_Debug,
FT_Realloc_Debug, FT_Free_Debug): Fix compiler warnings.
* src/base/ftcalc.c (FT_MulFix): Ditto.
* src/cff/cffdrivr.c (cff_get_name_index): Ditto.
* src/cff/cffobjs.c (CFF_Size_Get_Global_Funcs, CFF_Size_Init,
CFF_GlyphSlot_Init): Ditto.
* src/cid/cidobjs.c (CID_GlyphSlot_Init,
CID_Size_Get_Globals_Funcs): Ditto.
* src/type1/t1objs.c (T1_Size_Get_Globals_Funcs, T1_GlyphSlot_Init):
Ditto.
* src/pshinter/pshmod.c (pshinter_interface): Use `static const'.
* src/winfonts/winfnt.c (FNT_Get_Next_Char): Remove unused
variables.
* include/freetype/internal/psaux.h (T1_Builder_Funcs): Renamed
to...
(T1_Builder_FuncsRec): This.
(T1_Builder_Funcs): New typedef.
(PSAux_Interface): Remove compiler warnings.
* src/psaux/psauxmod.c (t1_builder_funcs), src/psaux/psobjs.h
(t1_builder_funcs): Updated.
* src/pshinter/pshglob.h (PSH_Blue_Align): Replaced with ...
(PSH_BLUE_ALIGN_{NONE,TOP,BOT}): New defines.
(PSH_AlignmentRec): Updated.
* include/freetype/internal/ftstream.h (GET_Char, GET_Byte): Fix
typo.
* include/freetype/internal/ftgloadr.h (FT_SubGlyph): Ditto.
* src/base/ftstream (FT_Get_Char): Rename to...
(FT_Stream_Get_Char): This.
* src/base/ftnames.c (FT_Get_Sfnt_Name): s/index/idx/ -- `index' is
a built-in function in gcc, causing warning messages with gcc 3.0.
* src/autohint/ahglyph.c (ah_outline_load): Ditto.
* src/autohint/ahglobal.c (ah_hinter_compute_blues): Ditto.
* src/cache/ftcmanag.c (ftc_family_table_alloc,
ftc_family_table_free, FTC_Manager_Done, FTC_Manager_Register_Cache):
Ditto.
* src/cff/cffload.c (cff_new_index, cff_done_index,
cff_explicit_index, CFF_Access_Element, CFF_Forget_Element,
CFF_Get_Name, CFF_Get_String, CFF_Load_SubFont, CFF_Load_Font,
CFF_Done_Font): Ditto.
* src/psaux/psobjs.c (PS_Table_Add, PS_Parser_LoadField): Ditto.
* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto.
* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_clear_bit,
ps_mask_set_bit, ps_dimension_add_t1stem, ps_hints_t1stem3,
* src/pshinter/pshalgo1.c (psh1_hint_table_record,
psh1_hint_table_record_mask, psh1_hint_table_activate_mask): Ditto.
* src/pshinter/pshalgo2.c (psh2_hint_table_record,
psh2_hint_table_record_mask, psh2_hint_table_activate_mask): Ditto.
* src/sfnt/ttpost.c (Load_Format_20, Load_Format_25,
TT_Get_PS_Name): Ditto.
* src/truetype/ttgload.c (TT_Get_Metrics, Get_HMetrics,
load_truetype_glyph): Ditto.
* src/type1/t1load.c (parse_subrs, T1_Open_Face): Ditto.
* src/type1/t1afm.c (T1_Get_Kerning): Ditto.
* include/freetype/cache/ftcmanag.h (ftc_family_table_free): Ditto.
2002-03-07 22:59:59 +01:00
|
|
|
struct FT_SubGlyph_
|
2002-02-22 18:57:35 +01:00
|
|
|
{
|
|
|
|
FT_Int index;
|
|
|
|
FT_UShort flags;
|
|
|
|
FT_Int arg1;
|
|
|
|
FT_Int arg2;
|
|
|
|
FT_Matrix transform;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct FT_GlyphLoadRec_
|
|
|
|
{
|
|
|
|
FT_Outline outline; /* outline */
|
|
|
|
FT_Vector* extra_points; /* extra points table */
|
|
|
|
FT_UInt num_subglyphs; /* number of subglyphs */
|
|
|
|
FT_SubGlyph* subglyphs; /* subglyphs */
|
|
|
|
|
|
|
|
} FT_GlyphLoadRec, *FT_GlyphLoad;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct FT_GlyphLoaderRec_
|
|
|
|
{
|
|
|
|
FT_Memory memory;
|
|
|
|
FT_UInt max_points;
|
|
|
|
FT_UInt max_contours;
|
|
|
|
FT_UInt max_subglyphs;
|
|
|
|
FT_Bool use_extra;
|
|
|
|
|
|
|
|
FT_GlyphLoadRec base;
|
|
|
|
FT_GlyphLoadRec current;
|
|
|
|
|
|
|
|
void* other; /* for possible future extension? */
|
|
|
|
|
|
|
|
} FT_GlyphLoaderRec;
|
|
|
|
|
|
|
|
|
|
|
|
/* create new empty glyph loader */
|
|
|
|
FT_BASE( FT_Error )
|
|
|
|
FT_GlyphLoader_New( FT_Memory memory,
|
2002-02-24 03:59:24 +01:00
|
|
|
FT_GlyphLoader *aloader );
|
2002-02-22 18:57:35 +01:00
|
|
|
|
|
|
|
/* add an extra points table to a glyph loader */
|
|
|
|
FT_BASE( FT_Error )
|
|
|
|
FT_GlyphLoader_Create_Extra( FT_GlyphLoader loader );
|
|
|
|
|
|
|
|
/* destroy a glyph loader */
|
|
|
|
FT_BASE( void )
|
|
|
|
FT_GlyphLoader_Done( FT_GlyphLoader loader );
|
|
|
|
|
|
|
|
/* reset a glyph loader (frees everything int it) */
|
|
|
|
FT_BASE( void )
|
|
|
|
FT_GlyphLoader_Reset( FT_GlyphLoader loader );
|
|
|
|
|
|
|
|
/* rewind a glyph loader */
|
|
|
|
FT_BASE( void )
|
|
|
|
FT_GlyphLoader_Rewind( FT_GlyphLoader loader );
|
|
|
|
|
|
|
|
/* check that there is enough room to add 'n_points' and 'n_contours' */
|
|
|
|
/* to the glyph loader.. */
|
|
|
|
FT_BASE( FT_Error )
|
|
|
|
FT_GlyphLoader_Check_Points( FT_GlyphLoader loader,
|
|
|
|
FT_UInt n_points,
|
|
|
|
FT_UInt n_contours );
|
|
|
|
|
|
|
|
/* check that there is enough room to add 'n_subs' sub-glyphs to */
|
|
|
|
/* a glyph loader */
|
|
|
|
FT_BASE( FT_Error )
|
|
|
|
FT_GlyphLoader_Check_Subglyphs( FT_GlyphLoader loader,
|
|
|
|
FT_UInt n_subs );
|
|
|
|
|
|
|
|
/* prepare a glyph loader, i.e. empty the current glyph */
|
|
|
|
FT_BASE( void )
|
|
|
|
FT_GlyphLoader_Prepare( FT_GlyphLoader loader );
|
|
|
|
|
|
|
|
/* add the current glyph to the base glyph */
|
|
|
|
FT_BASE( void )
|
|
|
|
FT_GlyphLoader_Add( FT_GlyphLoader loader );
|
|
|
|
|
|
|
|
/* copy points from one glyph loader to another */
|
|
|
|
FT_BASE( FT_Error )
|
|
|
|
FT_GlyphLoader_Copy_Points( FT_GlyphLoader target,
|
|
|
|
FT_GlyphLoader source );
|
|
|
|
|
|
|
|
/* */
|
|
|
|
|
|
|
|
FT_END_HEADER
|
|
|
|
|
|
|
|
#endif /* __FT_INTERNAL_GLYPH_LOADER_H__ */
|