diff options
author | Werner Lemberg <wl@gnu.org> | 2017-04-22 12:48:50 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2017-04-22 12:48:50 +0200 |
commit | 5412d8869b4b4c2df1c96298dc8d47b08cdb61b3 (patch) | |
tree | 94a6639d724f2770af17b7ca36c85d7c6759d44f /src | |
parent | eb5e0fb7ee50db2351ce17501a186e35ebc29fb8 (diff) | |
download | freetype2-5412d8869b4b4c2df1c96298dc8d47b08cdb61b3.tar.gz |
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'.
Diffstat (limited to 'src')
-rw-r--r-- | src/base/ftobjs.c | 8 | ||||
-rw-r--r-- | src/cff/cffgload.c | 6 | ||||
-rw-r--r-- | src/cff/cffobjs.c | 14 | ||||
-rw-r--r-- | src/cid/cidobjs.c | 10 | ||||
-rw-r--r-- | src/psaux/psobjs.c | 2 | ||||
-rw-r--r-- | src/type1/t1objs.c | 13 |
6 files changed, 27 insertions, 26 deletions
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index a58c081fb..83d51c09e 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -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 ); diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index 9ead7d399..940804850 100644 --- a/src/cff/cffgload.c +++ b/src/cff/cffgload.c @@ -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 */ diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index ddcfdc97d..61613933f 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -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; diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c index 7830e1f68..ceda8ff97 100644 --- a/src/cid/cidobjs.c +++ b/src/cid/cidobjs.c @@ -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 ); diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c index 0baf83686..f04edea41 100644 --- a/src/psaux/psobjs.c +++ b/src/psaux/psobjs.c @@ -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 ) diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c index 5637035c8..97c16b0fd 100644 --- a/src/type1/t1objs.c +++ b/src/type1/t1objs.c @@ -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 ); |