Introduce `FT_Size_InternalRec' structure.

We are going to extend this later on.

* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
structure with a single field `module_data'.

* src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
`FT_Size' structure.

* src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
`size->internal->module_data' instead of `size->internal'.

* src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
(cff_size_init, cff_size_select, cff_size_request): Use
`size->internal->module_data' instead of `size->internal'.

* src/cif/cidobjs.c (cid_size_done, cid_size_init,
cid_size_request): Use `size->internal->module_data' instead of
`size->internal'.

* src/psaux/psobjs.c (t1_builder_ini): Use
`size->internal->module_data' instead of `size->internal'.

* src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
Use `size->internal->module_data' instead of `size->internal'.
This commit is contained in:
Werner Lemberg 2017-04-22 12:48:50 +02:00
parent eb5e0fb7ee
commit 5412d8869b
8 changed files with 61 additions and 32 deletions

View File

@ -1,3 +1,32 @@
2017-04-22 Werner Lemberg <wl@gnu.org>
Introduce `FT_Size_InternalRec' structure.
We are going to extend this later on.
* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
structure with a single field `module_data'.
* src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
`FT_Size' structure.
* src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
`size->internal->module_data' instead of `size->internal'.
* src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
(cff_size_init, cff_size_select, cff_size_request): Use
`size->internal->module_data' instead of `size->internal'.
* src/cif/cidobjs.c (cid_size_done, cid_size_init,
cid_size_request): Use `size->internal->module_data' instead of
`size->internal'.
* src/psaux/psobjs.c (t1_builder_ini): Use
`size->internal->module_data' instead of `size->internal'.
* src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
Use `size->internal->module_data' instead of `size->internal'.
2017-04-21 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/smooth/ftsmooth.h: Remove unused guards and declaration.

View File

@ -433,8 +433,6 @@ FT_BEGIN_HEADER
} FT_GlyphSlot_InternalRec;
#if 0
/*************************************************************************/
/* */
/* <Struct> */
@ -442,18 +440,19 @@ FT_BEGIN_HEADER
/* */
/* <Description> */
/* This structure contains the internal fields of each FT_Size */
/* object. Currently, it's empty. */
/* object. */
/* */
/* <Fields> */
/* module_data :: Data specific to a driver module. */
/* */
/*************************************************************************/
typedef struct FT_Size_InternalRec_
{
/* empty */
void* module_data;
} FT_Size_InternalRec;
#endif
/*************************************************************************/
/*************************************************************************/

View File

@ -2605,6 +2605,8 @@
FT_Size size = NULL;
FT_ListNode node = NULL;
FT_Size_Internal internal = NULL;
if ( !face )
return FT_THROW( Invalid_Face_Handle );
@ -2627,8 +2629,10 @@
size->face = face;
/* for now, do not use any internal fields in size objects */
size->internal = NULL;
if ( FT_NEW( internal ) )
goto Exit;
size->internal = internal;
if ( clazz->init_size )
error = clazz->init_size( size );

View File

@ -278,7 +278,8 @@
if ( hinting && size )
{
CFF_Internal internal = (CFF_Internal)size->root.internal;
FT_Size ftsize = FT_SIZE( size );
CFF_Internal internal = (CFF_Internal)ftsize->internal->module_data;
if ( internal )
@ -443,7 +444,8 @@
if ( builder->hints_funcs && size )
{
CFF_Internal internal = (CFF_Internal)size->root.internal;
FT_Size ftsize = FT_SIZE( size );
CFF_Internal internal = (CFF_Internal)ftsize->internal->module_data;
/* for CFFs without subfonts, this value has already been set */

View File

@ -54,9 +54,6 @@
/* */
/* SIZE FUNCTIONS */
/* */
/* Note that we store the global hints in the size's `internal' root */
/* field. */
/* */
/*************************************************************************/
@ -80,10 +77,11 @@
FT_LOCAL_DEF( void )
cff_size_done( FT_Size cffsize ) /* CFF_Size */
{
FT_Memory memory = cffsize->face->memory;
CFF_Size size = (CFF_Size)cffsize;
CFF_Face face = (CFF_Face)size->root.face;
CFF_Font font = (CFF_Font)face->extra.data;
CFF_Internal internal = (CFF_Internal)cffsize->internal;
CFF_Internal internal = (CFF_Internal)cffsize->internal->module_data;
if ( internal )
@ -103,7 +101,7 @@
funcs->destroy( internal->subfonts[i - 1] );
}
/* `internal' is freed by destroy_size (in ftobjs.c) */
FT_FREE( internal );
}
}
@ -199,7 +197,7 @@
goto Exit;
}
cffsize->internal = (FT_Size_Internal)(void*)internal;
cffsize->internal->module_data = internal;
}
size->strike_index = 0xFFFFFFFFUL;
@ -229,7 +227,7 @@
{
CFF_Face face = (CFF_Face)size->face;
CFF_Font font = (CFF_Font)face->extra.data;
CFF_Internal internal = (CFF_Internal)size->internal;
CFF_Internal internal = (CFF_Internal)size->internal->module_data;
FT_Long top_upm = (FT_Long)font->top_font.font_dict.units_per_em;
FT_UInt i;
@ -301,7 +299,7 @@
{
CFF_Face cffface = (CFF_Face)size->face;
CFF_Font font = (CFF_Font)cffface->extra.data;
CFF_Internal internal = (CFF_Internal)size->internal;
CFF_Internal internal = (CFF_Internal)size->internal->module_data;
FT_Long top_upm = (FT_Long)font->top_font.font_dict.units_per_em;
FT_UInt i;

View File

@ -113,16 +113,16 @@
CID_Size size = (CID_Size)cidsize;
if ( cidsize->internal )
if ( cidsize->internal->module_data )
{
PSH_Globals_Funcs funcs;
funcs = cid_size_get_globals_funcs( size );
if ( funcs )
funcs->destroy( (PSH_Globals)cidsize->internal );
funcs->destroy( (PSH_Globals)cidsize->internal->module_data );
cidsize->internal = NULL;
cidsize->internal->module_data = NULL;
}
}
@ -145,7 +145,7 @@
error = funcs->create( cidsize->face->memory, priv, &globals );
if ( !error )
cidsize->internal = (FT_Size_Internal)(void*)globals;
cidsize->internal->module_data = globals;
}
return error;
@ -164,7 +164,7 @@
funcs = cid_size_get_globals_funcs( (CID_Size)size );
if ( funcs )
funcs->set_scale( (PSH_Globals)size->internal,
funcs->set_scale( (PSH_Globals)size->internal->module_data,
size->metrics.x_scale,
size->metrics.y_scale,
0, 0 );

View File

@ -1551,7 +1551,7 @@
builder->current = &loader->current.outline;
FT_GlyphLoader_Rewind( loader );
builder->hints_globals = size->internal;
builder->hints_globals = size->internal->module_data;
builder->hints_funcs = NULL;
if ( hinting )

View File

@ -49,9 +49,6 @@
/* */
/* SIZE FUNCTIONS */
/* */
/* note that we store the global hints in the size's "internal" root */
/* field */
/* */
/*************************************************************************/
@ -77,16 +74,16 @@
T1_Size size = (T1_Size)t1size;
if ( size->root.internal )
if ( t1size->internal->module_data )
{
PSH_Globals_Funcs funcs;
funcs = T1_Size_Get_Globals_Funcs( size );
if ( funcs )
funcs->destroy( (PSH_Globals)size->root.internal );
funcs->destroy( (PSH_Globals)t1size->internal->module_data );
size->root.internal = NULL;
t1size->internal->module_data = NULL;
}
}
@ -108,7 +105,7 @@
error = funcs->create( size->root.face->memory,
&face->type1.private_dict, &globals );
if ( !error )
size->root.internal = (FT_Size_Internal)(void*)globals;
t1size->internal->module_data = globals;
}
return error;
@ -126,7 +123,7 @@
FT_Request_Metrics( size->root.face, req );
if ( funcs )
funcs->set_scale( (PSH_Globals)size->root.internal,
funcs->set_scale( (PSH_Globals)t1size->internal->module_data,
size->root.metrics.x_scale,
size->root.metrics.y_scale,
0, 0 );