freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] ewaldhew-wip 351d777 42/47: move cf2_font instance out into


From: Hew Yih Shiuan Ewald
Subject: [freetype2] ewaldhew-wip 351d777 42/47: move cf2_font instance out into ps_decoder
Date: Thu, 6 Jul 2017 04:49:39 -0400 (EDT)

branch: ewaldhew-wip
commit 351d77704b6eb0f535d51564292ac625ec34ccc3
Author: Ewald Hew <address@hidden>
Commit: Ewald Hew <address@hidden>

    move cf2_font instance out into ps_decoder
---
 include/freetype/internal/psaux.h |  3 +++
 src/cff/cffload.c                 |  6 ------
 src/psaux/psdecode.c              | 18 ++++++++++++++++++
 src/psaux/psft.c                  | 10 +++++-----
 4 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/include/freetype/internal/psaux.h 
b/include/freetype/internal/psaux.h
index 9c5e042..947a39c 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -629,6 +629,7 @@ FT_BEGIN_HEADER
 
     CFF_Font           cff;
     CFF_SubFont        current_subfont; /* for current glyph_index */
+    FT_Generic*        cf2_instance;
     
     FT_Pos             glyph_width;
     FT_Pos             nominal_width;
@@ -974,6 +975,8 @@ FT_BEGIN_HEADER
 
     FT_Bool              seac;
 
+    FT_Generic           cf2_instance;
+
   } T1_DecoderRec;
 
   /*************************************************************************/
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index 5e6839d..96034e7 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -2532,12 +2532,6 @@
     FT_FREE( font->global_subrs );
     FT_FREE( font->strings );
     FT_FREE( font->string_pool );
-
-    if ( font->cf2_instance.finalizer )
-    {
-      font->cf2_instance.finalizer( font->cf2_instance.data );
-      FT_FREE( font->cf2_instance.data );
-    }
   }
 
 
diff --git a/src/psaux/psdecode.c b/src/psaux/psdecode.c
index 8884415..2ce7f3e 100644
--- a/src/psaux/psdecode.c
+++ b/src/psaux/psdecode.c
@@ -41,6 +41,7 @@
                        is_t1,
                        &ps_decoder->builder );
 
+      ps_decoder->cf2_instance       = &t1_decoder->cf2_instance;
       ps_decoder->psnames            =  t1_decoder->psnames;
 
       ps_decoder->num_glyphs         =  t1_decoder->num_glyphs;
@@ -66,6 +67,7 @@
                        &ps_decoder->builder );
 
       ps_decoder->cff                 =  cff_decoder->cff;
+      ps_decoder->cf2_instance        = &cff_decoder->cff->cf2_instance;
       ps_decoder->current_subfont     =  cff_decoder->current_subfont;
 
       ps_decoder->num_globals         =  cff_decoder->num_globals;
@@ -86,3 +88,19 @@
     }
   }
 
+
+  FT_LOCAL_DEF( void )
+  ps_decoder_done( PS_Decoder*  decoder )
+  {
+    FT_Memory  memory = decoder->builder.memory;
+    
+    /*ps_builder_done( &decoder->builder ); */
+
+    if ( decoder->cf2_instance->finalizer )
+    {
+      decoder->cf2_instance->finalizer( decoder->cf2_instance->data );
+      FT_FREE( decoder->cf2_instance->data );
+    }
+
+  }
+
diff --git a/src/psaux/psft.c b/src/psaux/psft.c
index b0f4316..8ef7a50 100644
--- a/src/psaux/psft.c
+++ b/src/psaux/psft.c
@@ -318,19 +318,19 @@
     memory = decoder->builder.memory;
 
     /* CF2 data is saved here across glyphs */
-    font = (CF2_Font)decoder->cff->cf2_instance.data;
+    font = (CF2_Font)decoder->cf2_instance->data;
 
     /* on first glyph, allocate instance structure */
-    if ( !decoder->cff->cf2_instance.data )
+    if ( !decoder->cf2_instance->data )
     {
-      decoder->cff->cf2_instance.finalizer =
+      decoder->cf2_instance->finalizer =
         (FT_Generic_Finalizer)cf2_free_instance;
 
-      if ( FT_ALLOC( decoder->cff->cf2_instance.data,
+      if ( FT_ALLOC( decoder->cf2_instance->data,
                      sizeof ( CF2_FontRec ) ) )
         return FT_THROW( Out_Of_Memory );
 
-      font = (CF2_Font)decoder->cff->cf2_instance.data;
+      font = (CF2_Font)decoder->cf2_instance->data;
 
       font->memory = memory;
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]