freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] ewaldhew-cleaned fac9188 15/16: [psaux, type1] Reorganize ob


From: Hew Yih Shiuan Ewald
Subject: [freetype2] ewaldhew-cleaned fac9188 15/16: [psaux, type1] Reorganize object fields.
Date: Fri, 21 Jul 2017 09:02:54 -0400 (EDT)

branch: ewaldhew-cleaned
commit fac918884fbef9e7c32a4a5bef2ae7e2f0373047
Author: Ewald Hew <address@hidden>
Commit: Ewald Hew <address@hidden>

    [psaux, type1] Reorganize object fields.
    
    Make some fields more generic, so that we can access them the same way
    regardless of Type 1 or CFF.
    
    * include/freetype/internal/psaux.h (PS_Builder): Change TT_Face to FT_Face.
    Remove unused fields.
    
    * src/psaux/psft.c: Update all accesses of PS_Builder.face.
    Add some asserts to guard against casting T1_Face as TT_Face.
    
    * src/type1/t1objs.h (T1_GlyphSlot): Reorder fields to follow CFF_GlyphSlot,
    so that we can pretend they are the same in the interpreter.
    
    * src/psaux/psobjs.c: Updated with above changes.
---
 include/freetype/internal/psaux.h |  5 +----
 src/psaux/psft.c                  | 32 ++++++++++++++++++++------------
 src/psaux/psobjs.c                |  8 ++++----
 src/type1/t1objs.h                |  6 +++---
 4 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/include/freetype/internal/psaux.h 
b/include/freetype/internal/psaux.h
index 45013e4..bde0bfa 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -513,7 +513,7 @@ FT_BEGIN_HEADER
   struct  PS_Builder_
   {
     FT_Memory       memory;
-    TT_Face         face;
+    FT_Face         face;
     CFF_GlyphSlot   glyph;
     FT_GlyphLoader  loader;
     FT_Outline*     base;
@@ -532,9 +532,6 @@ FT_BEGIN_HEADER
 
     FT_Bool         metrics_only;
 
-    void*           hints_funcs;    /* hinter-specific */
-    void*           hints_globals;  /* hinter-specific */
-
     FT_Bool         is_t1;
 
     PS_Builder_FuncsRec  funcs;
diff --git a/src/psaux/psft.c b/src/psaux/psft.c
index 34ac0b6..1b4330d 100644
--- a/src/psaux/psft.c
+++ b/src/psaux/psft.c
@@ -293,9 +293,9 @@
   cf2_getUnitsPerEm( PS_Decoder*  decoder )
   {
     FT_ASSERT( decoder && decoder->builder.face );
-    FT_ASSERT( decoder->builder.face->root.units_per_EM );
+    FT_ASSERT( decoder->builder.face->units_per_EM );
 
-    return decoder->builder.face->root.units_per_EM;
+    return decoder->builder.face->units_per_EM;
   }
 
 
@@ -355,7 +355,7 @@
       FT_Bool  no_stem_darkening_driver =
                  driver->no_stem_darkening;
       FT_Char  no_stem_darkening_font =
-                 builder->face->root.internal->no_stem_darkening;
+                 builder->face->internal->no_stem_darkening;
 
       /* local error */
       FT_Error       error2 = FT_Err_Ok;
@@ -384,9 +384,14 @@
                                &hinted,
                                &scaled );
 
-      /* copy isCFF2 boolean from TT_Face to CF2_Font */
-      font->isCFF2 = builder->face->is_cff2;
-      font->isT1   = is_t1;
+      if ( is_t1 )
+        font->isCFF2 = FALSE;
+      else
+      {
+        /* copy isCFF2 boolean from TT_Face to CF2_Font */
+        font->isCFF2 = ((TT_Face)builder->face)->is_cff2;
+      }
+      font->isT1 = is_t1;
 
       font->renderingFlags = 0;
       if ( hinted )
@@ -472,8 +477,9 @@
 
     FT_ASSERT( decoder && decoder->builder.face );
     FT_ASSERT( vec && len );
+    FT_ASSERT( !decoder->builder.is_t1 );
     
-    face = decoder->builder.face;
+    face = (TT_Face)decoder->builder.face;
     mm = (FT_Service_MultiMasters)face->mm;
     
     return mm->get_var_blend( FT_FACE( face ), len, NULL, vec, NULL );
@@ -487,7 +493,7 @@
   {
     FT_ASSERT( decoder                          &&
                decoder->builder.face            &&
-               decoder->builder.face->root.size );
+               decoder->builder.face->size );
 
     /*
      * Note that `y_ppem' can be zero if there wasn't a call to
@@ -499,7 +505,7 @@
      *
      */
     return cf2_intToFixed(
-             decoder->builder.face->root.size->metrics.y_ppem );
+             decoder->builder.face->size->metrics.y_ppem );
   }
 
 
@@ -650,13 +656,14 @@
 
 
     FT_ASSERT( decoder );
+    FT_ASSERT( !decoder->builder.is_t1 );
 
     FT_ZERO( buf );
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
     /* Incremental fonts don't necessarily have valid charsets.        */
     /* They use the character code, not the glyph index, in this case. */
-    if ( decoder->builder.face->root.internal->incremental_interface )
+    if ( decoder->builder.face->internal->incremental_interface )
       gid = code;
     else
 #endif /* FT_CONFIG_OPTION_INCREMENTAL */
@@ -666,7 +673,7 @@
         return FT_THROW( Invalid_Glyph_Format );
     }
 
-    error = decoder->get_glyph_callback( decoder->builder.face,
+    error = decoder->get_glyph_callback( (TT_Face)decoder->builder.face,
                                          (CF2_UInt)gid,
                                          &charstring,
                                          &len );
@@ -690,8 +697,9 @@
                          CF2_Buffer   buf )
   {
     FT_ASSERT( decoder );
+    FT_ASSERT( !decoder->builder.is_t1 );
 
-    decoder->free_glyph_callback( decoder->builder.face,
+    decoder->free_glyph_callback( (TT_Face)decoder->builder.face,
                                   (FT_Byte**)&buf->start,
                                   (FT_ULong)( buf->end - buf->start ) );
   }
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
index a4dd448..dcb3474 100644
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -2062,9 +2062,9 @@
     {
       T1_Builder  t1builder = (T1_Builder)builder;
 
-      ps_builder->face           = (TT_Face)t1builder->face;
-      ps_builder->glyph          = t1builder->glyph;
       ps_builder->memory         =  t1builder->memory;
+      ps_builder->face           = (FT_Face)t1builder->face;
+      ps_builder->glyph          = (CFF_GlyphSlot)t1builder->glyph;
       ps_builder->loader         =  t1builder->loader;
       ps_builder->base           =  t1builder->base;
       ps_builder->current        =  t1builder->current;
@@ -2086,8 +2086,8 @@
     {
       CFF_Builder*  cffbuilder = (CFF_Builder*)builder;
 
-      ps_builder->face           = cffbuilder->face;
       ps_builder->memory         =  cffbuilder->memory;
+      ps_builder->face           = (FT_Face)cffbuilder->face;
       ps_builder->glyph          =  cffbuilder->glyph;
       ps_builder->loader         =  cffbuilder->loader;
       ps_builder->base           =  cffbuilder->base;
@@ -2172,7 +2172,7 @@
       else
 #endif
 #ifdef T1_CONFIG_OPTION_OLD_ENGINE
-      if ( builder->face->is_t1 )
+      if ( builder->is_t1 )
       {
         point->x = FIXED_TO_INT( x );
         point->y = FIXED_TO_INT( y );
diff --git a/src/type1/t1objs.h b/src/type1/t1objs.h
index 39d26bf..d009b39 100644
--- a/src/type1/t1objs.h
+++ b/src/type1/t1objs.h
@@ -120,12 +120,12 @@ FT_BEGIN_HEADER
     FT_Bool          hint;
     FT_Bool          scaled;
 
-    FT_Int           max_points;
-    FT_Int           max_contours;
-
     FT_Fixed         x_scale;
     FT_Fixed         y_scale;
 
+    FT_Int           max_points;
+    FT_Int           max_contours;
+
   } T1_GlyphSlotRec;
 
 



reply via email to

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