freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master a8652c5 1/2: [truetype, cff] Extend `get_var_blend' f


From: Werner LEMBERG
Subject: [freetype2] master a8652c5 1/2: [truetype, cff] Extend `get_var_blend' function of MM service.
Date: Sun, 18 Dec 2016 17:24:40 +0000 (UTC)

branch: master
commit a8652c59daca62b5f25680928efcdd04ea9f6731
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [truetype, cff] Extend `get_var_blend' function of MM service.
    
    In particular, we need access to named instance data.
    
    * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
    Add argument for `FT_MM_Var'.
    
    * src/cff/cffload.c (cff_get_var_blend): Updated.
    * src/cff/cffload.h: Updated.
    
    * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
    
    * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
    Accept value `NULL' for arguments.
    * src/truetype/ttgxvar.h: Updated.
---
 ChangeLog                                 |   18 ++++++++++++++++++
 include/freetype/internal/services/svmm.h |    7 ++++---
 src/cff/cf2ft.c                           |    2 +-
 src/cff/cffload.c                         |    9 +++++----
 src/cff/cffload.h                         |    7 ++++---
 src/truetype/ttgxvar.c                    |   25 +++++++++++++++++--------
 src/truetype/ttgxvar.h                    |    7 ++++---
 7 files changed, 53 insertions(+), 22 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 75a33bd..46623ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 2016-12-18  Werner Lemberg  <address@hidden>
 
+       [truetype, cff] Extend `get_var_blend' function of MM service.
+
+       In particular, we need access to named instance data.
+
+       * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
+       Add argument for `FT_MM_Var'.
+
+       * src/cff/cffload.c (cff_get_var_blend): Updated.
+       * src/cff/cffload.h: Updated.
+
+       * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
+
+       * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
+       Accept value `NULL' for arguments.
+       * src/truetype/ttgxvar.h: Updated.
+
+2016-12-18  Werner Lemberg  <address@hidden>
+
        [sfnt] Handle `fvar' with zero axes as a non-MM font.
 
        This is better behaviour than exiting with an error.
diff --git a/include/freetype/internal/services/svmm.h 
b/include/freetype/internal/services/svmm.h
index 21dbd87..e54845a 100644
--- a/include/freetype/internal/services/svmm.h
+++ b/include/freetype/internal/services/svmm.h
@@ -69,9 +69,10 @@ FT_BEGIN_HEADER
                            FT_Long*  coords );
 
   typedef FT_Error
-  (*FT_Get_Var_Blend_Func)( FT_Face     face,
-                            FT_UInt    *num_coords,
-                            FT_Fixed*  *coords );
+  (*FT_Get_Var_Blend_Func)( FT_Face      face,
+                            FT_UInt     *num_coords,
+                            FT_Fixed*   *coords,
+                            FT_MM_Var*  *mm_var );
 
   typedef void
   (*FT_Done_Blend_Func)( FT_Face );
diff --git a/src/cff/cf2ft.c b/src/cff/cf2ft.c
index 02f16ab..a7fb5aa 100644
--- a/src/cff/cf2ft.c
+++ b/src/cff/cf2ft.c
@@ -450,7 +450,7 @@
     FT_ASSERT( decoder && decoder->builder.face );
     FT_ASSERT( vec && len );
 
-    return cff_get_var_blend( decoder->builder.face, len, vec );
+    return cff_get_var_blend( decoder->builder.face, len, vec, NULL );
   }
 #endif
 
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index d347b0a..c097523 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -1548,14 +1548,15 @@
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
   FT_LOCAL_DEF( FT_Error )
-  cff_get_var_blend( CFF_Face    face,
-                     FT_UInt    *num_coords,
-                     FT_Fixed*  *coords )
+  cff_get_var_blend( CFF_Face     face,
+                     FT_UInt     *num_coords,
+                     FT_Fixed*   *coords,
+                     FT_MM_Var*  *mm_var )
   {
     FT_Service_MultiMasters  mm = (FT_Service_MultiMasters)face->mm;
 
 
-    return mm->get_var_blend( FT_FACE( face ), num_coords, coords );
+    return mm->get_var_blend( FT_FACE( face ), num_coords, coords, mm_var );
   }
 
 
diff --git a/src/cff/cffload.h b/src/cff/cffload.h
index 2da726c..dc3a2c5 100644
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -105,9 +105,10 @@ FT_BEGIN_HEADER
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
   FT_LOCAL( FT_Error )
-  cff_get_var_blend( CFF_Face    face,
-                     FT_UInt    *num_coords,
-                     FT_Fixed*  *coords );
+  cff_get_var_blend( CFF_Face     face,
+                     FT_UInt     *num_coords,
+                     FT_Fixed*   *coords,
+                     FT_MM_Var*  *mm_var );
 
   FT_LOCAL( void )
   cff_done_blend( CFF_Face  face );
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 3bcec27..5a4e8f5 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -2740,24 +2740,33 @@
   /*    tt_get_var_blend                                                   */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    An internal version of `TT_Get_MM_Blend' that just returns         */
+  /*    An extended internal version of `TT_Get_MM_Blend' that returns     */
   /*    pointers instead of copying data, without any initialization of    */
   /*    the MM machinery in case it isn't loaded yet.                      */
   /*                                                                       */
   FT_LOCAL_DEF( FT_Error )
-  tt_get_var_blend( TT_Face     face,
-                    FT_UInt    *num_coords,
-                    FT_Fixed*  *coords )
+  tt_get_var_blend( TT_Face      face,
+                    FT_UInt     *num_coords,
+                    FT_Fixed*   *coords,
+                    FT_MM_Var*  *mm_var )
   {
     if ( face->blend )
     {
-      *num_coords = face->blend->num_axis;
-      *coords     = face->blend->normalizedcoords;
+      if ( num_coords )
+        *num_coords = face->blend->num_axis;
+      if ( coords )
+        *coords     = face->blend->normalizedcoords;
+      if ( mm_var )
+        *mm_var     = face->blend->mmvar;
     }
     else
     {
-      *num_coords = 0;
-      *coords     = NULL;
+      if ( num_coords )
+        *num_coords = 0;
+      if ( coords )
+        *coords     = NULL;
+      if ( mm_var )
+        *mm_var     = NULL;
     }
 
     return FT_Err_Ok;
diff --git a/src/truetype/ttgxvar.h b/src/truetype/ttgxvar.h
index 95f991f..215e109 100644
--- a/src/truetype/ttgxvar.h
+++ b/src/truetype/ttgxvar.h
@@ -260,9 +260,10 @@ FT_BEGIN_HEADER
                       FT_Int  *adelta );
 
   FT_LOCAL( FT_Error )
-  tt_get_var_blend( TT_Face     face,
-                    FT_UInt    *num_coords,
-                    FT_Fixed*  *coords );
+  tt_get_var_blend( TT_Face      face,
+                    FT_UInt     *num_coords,
+                    FT_Fixed*   *coords,
+                    FT_MM_Var*  *mm_var );
 
   FT_LOCAL( void )
   tt_done_blend( TT_Face  face );



reply via email to

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