2001-10-18 13:38:43 +02:00
|
|
|
/***************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* pshmod.c */
|
|
|
|
/* */
|
2001-12-05 02:22:05 +01:00
|
|
|
/* FreeType PostScript hinter module implementation (body). */
|
2001-10-18 13:38:43 +02:00
|
|
|
/* */
|
2007-05-16 17:19:42 +02:00
|
|
|
/* Copyright 2001, 2002, 2007 by */
|
2001-10-18 13:38:43 +02:00
|
|
|
/* 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. */
|
|
|
|
/* */
|
|
|
|
/***************************************************************************/
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
#include <ft2build.h>
|
|
|
|
#include FT_INTERNAL_OBJECTS_H
|
|
|
|
#include "pshrec.h"
|
|
|
|
#include "pshalgo.h"
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
|
|
|
/* the Postscript Hinter module structure */
|
|
|
|
typedef struct PS_Hinter_Module_Rec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
2001-12-05 02:22:05 +01:00
|
|
|
FT_ModuleRec root;
|
|
|
|
PS_HintsRec ps_hints;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
PSH_Globals_FuncsRec globals_funcs;
|
|
|
|
T1_Hints_FuncsRec t1_funcs;
|
|
|
|
T2_Hints_FuncsRec t2_funcs;
|
2001-10-19 11:17:49 +02:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
} PS_Hinter_ModuleRec, *PS_Hinter_Module;
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* finalize module */
|
|
|
|
FT_CALLBACK_DEF( void )
|
2001-10-18 13:38:43 +02:00
|
|
|
ps_hinter_done( PS_Hinter_Module module )
|
|
|
|
{
|
|
|
|
module->t1_funcs.hints = NULL;
|
|
|
|
module->t2_funcs.hints = NULL;
|
|
|
|
|
|
|
|
ps_hints_done( &module->ps_hints );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* initialize module, create hints recorder and the interface */
|
|
|
|
FT_CALLBACK_DEF( FT_Error )
|
2001-10-18 13:38:43 +02:00
|
|
|
ps_hinter_init( PS_Hinter_Module module )
|
|
|
|
{
|
|
|
|
FT_Memory memory = module->root.memory;
|
2007-05-16 17:19:42 +02:00
|
|
|
void* ph = &module->ps_hints;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
ps_hints_init( &module->ps_hints, memory );
|
|
|
|
|
|
|
|
psh_globals_funcs_init( &module->globals_funcs );
|
|
|
|
|
|
|
|
t1_hints_funcs_init( &module->t1_funcs );
|
2007-05-16 17:19:42 +02:00
|
|
|
module->t1_funcs.hints = (T1_Hints)ph;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
t2_hints_funcs_init( &module->t2_funcs );
|
2007-05-16 17:19:42 +02:00
|
|
|
module->t2_funcs.hints = (T2_Hints)ph;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* returns global hints interface */
|
|
|
|
FT_CALLBACK_DEF( PSH_Globals_Funcs )
|
2001-10-18 13:38:43 +02:00
|
|
|
pshinter_get_globals_funcs( FT_Module module )
|
|
|
|
{
|
|
|
|
return &((PS_Hinter_Module)module)->globals_funcs;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* return Type 1 hints interface */
|
|
|
|
FT_CALLBACK_DEF( T1_Hints_Funcs )
|
2001-10-18 13:38:43 +02:00
|
|
|
pshinter_get_t1_funcs( FT_Module module )
|
|
|
|
{
|
|
|
|
return &((PS_Hinter_Module)module)->t1_funcs;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* return Type 2 hints interface */
|
|
|
|
FT_CALLBACK_DEF( T2_Hints_Funcs )
|
2001-10-18 13:38:43 +02:00
|
|
|
pshinter_get_t2_funcs( FT_Module module )
|
|
|
|
{
|
|
|
|
return &((PS_Hinter_Module)module)->t2_funcs;
|
|
|
|
}
|
2001-10-19 11:17:49 +02:00
|
|
|
|
|
|
|
|
* 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
|
|
|
static
|
|
|
|
const PSHinter_Interface pshinter_interface =
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
|
|
|
pshinter_get_globals_funcs,
|
|
|
|
pshinter_get_t1_funcs,
|
|
|
|
pshinter_get_t2_funcs
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
FT_CALLBACK_TABLE_DEF
|
|
|
|
const FT_Module_Class pshinter_module_class =
|
|
|
|
{
|
|
|
|
0,
|
2001-12-05 02:22:05 +01:00
|
|
|
sizeof ( PS_Hinter_ModuleRec ),
|
2001-10-18 13:38:43 +02:00
|
|
|
"pshinter",
|
|
|
|
0x10000L,
|
|
|
|
0x20000L,
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
&pshinter_interface, /* module-specific interface */
|
2001-10-18 13:38:43 +02:00
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
(FT_Module_Constructor)ps_hinter_init,
|
|
|
|
(FT_Module_Destructor) ps_hinter_done,
|
|
|
|
(FT_Module_Requester) 0 /* no additional interface for now */
|
2001-10-18 13:38:43 +02:00
|
|
|
};
|
2001-12-05 02:22:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|