freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 8b174b4 2/2: [truetype, type1] Add `get_var_blend' to


From: Werner LEMBERG
Subject: [freetype2] master 8b174b4 2/2: [truetype, type1] Add `get_var_blend' to MM service.
Date: Wed, 14 Dec 2016 17:07:34 +0000 (UTC)

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

    [truetype, type1] Add `get_var_blend' to MM service.
    
    For internal use; we want to share code between the forthcoming CFF2
    support and TrueType.
    
    * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
    New typedef.
    (MultiMasters): Add `get_var_blend'.
    (FT_Service_MultiMasters): Updated.
    
    * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
    * src/truetype/ttgxvar.h: Updated.
    
    * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
    * src/type1/t1driver.c (t1_service_multi_masters): Updated.
---
 ChangeLog                                 |   18 ++++++++++++++++
 include/freetype/internal/services/svmm.h |   10 +++++++++
 src/truetype/ttdriver.c                   |    1 +
 src/truetype/ttgxvar.c                    |   33 +++++++++++++++++++++++++++++
 src/truetype/ttgxvar.h                    |    5 +++++
 src/type1/t1driver.c                      |    1 +
 6 files changed, 68 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 37478d6..2a5a1bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 2016-12-10  Werner Lemberg  <address@hidden>
 
+       [truetype, type1] Add `get_var_blend' to MM service.
+
+       For internal use; we want to share code between the forthcoming CFF2
+       support and TrueType.
+
+       * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
+       New typedef.
+       (MultiMasters): Add `get_var_blend'.
+       (FT_Service_MultiMasters): Updated.
+
+       * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
+       * src/truetype/ttgxvar.h: Updated.
+
+       * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
+       * src/type1/t1driver.c (t1_service_multi_masters): Updated.
+
+2016-12-10  Werner Lemberg  <address@hidden>
+
        [truetype, type1] Add `done_blend' to MM service.
 
        For internal use; we want to share code between the forthcoming CFF2
diff --git a/include/freetype/internal/services/svmm.h 
b/include/freetype/internal/services/svmm.h
index 51bce40..21dbd87 100644
--- a/include/freetype/internal/services/svmm.h
+++ b/include/freetype/internal/services/svmm.h
@@ -68,6 +68,11 @@ FT_BEGIN_HEADER
                            FT_UInt   num_coords,
                            FT_Long*  coords );
 
+  typedef FT_Error
+  (*FT_Get_Var_Blend_Func)( FT_Face     face,
+                            FT_UInt    *num_coords,
+                            FT_Fixed*  *coords );
+
   typedef void
   (*FT_Done_Blend_Func)( FT_Face );
 
@@ -83,6 +88,7 @@ FT_BEGIN_HEADER
     FT_Get_Var_Design_Func  get_var_design;
 
     /* for internal use; only needed for code sharing between modules */
+    FT_Get_Var_Blend_Func   get_var_blend;
     FT_Done_Blend_Func      done_blend;
   };
 
@@ -97,6 +103,7 @@ FT_BEGIN_HEADER
                                            get_mm_var_,      \
                                            set_var_design_,  \
                                            get_var_design_,  \
+                                           get_var_blend_,   \
                                            done_blend_     ) \
   static const FT_Service_MultiMastersRec  class_ =          \
   {                                                          \
@@ -107,6 +114,7 @@ FT_BEGIN_HEADER
     get_mm_var_,                                             \
     set_var_design_,                                         \
     get_var_design_,                                         \
+    get_var_blend_,                                          \
     done_blend_                                              \
   };
 
@@ -120,6 +128,7 @@ FT_BEGIN_HEADER
                                            get_mm_var_,          \
                                            set_var_design_,      \
                                            get_var_design_,      \
+                                           get_var_blend_,       \
                                            done_blend_ )         \
   void                                                           \
   FT_Init_Class_ ## class_( FT_Service_MultiMastersRec*  clazz ) \
@@ -131,6 +140,7 @@ FT_BEGIN_HEADER
     clazz->get_mm_var     = get_mm_var_;                         \
     clazz->set_var_design = set_var_design_;                     \
     clazz->get_var_design = get_var_design_;                     \
+    clazz->get_var_blend  = get_var_blend_;                      \
     clazz->done_blend     = done_blend_;                         \
   }
 
diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c
index b7713d0..6ab8d3f 100644
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -475,6 +475,7 @@
     (FT_Set_Var_Design_Func)TT_Set_Var_Design,      /* set_var_design */
     (FT_Get_Var_Design_Func)TT_Get_Var_Design,      /* get_var_design */
 
+    (FT_Get_Var_Blend_Func) tt_get_var_blend,       /* get_var_blend  */
     (FT_Done_Blend_Func)    tt_done_blend           /* done_blend     */
   )
 #endif
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 212358c..06b1200 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -2236,6 +2236,39 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
+  /*    tt_get_var_blend                                                   */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    An internal version of `TT_Get_MM_Blend' that just 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 )
+  {
+    FT_Error  error = FT_Err_Ok;
+
+
+    if ( face->blend )
+    {
+      *num_coords = face->blend->num_axis;
+      *coords     = face->blend->normalizedcoords;
+    }
+    else
+    {
+      *num_coords = 0;
+      *coords     = NULL;
+    }
+
+    return FT_Err_Ok;
+  }
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
   /*    tt_done_blend                                                      */
   /*                                                                       */
   /* <Description>                                                         */
diff --git a/src/truetype/ttgxvar.h b/src/truetype/ttgxvar.h
index f3fcfc7..9e4d749 100644
--- a/src/truetype/ttgxvar.h
+++ b/src/truetype/ttgxvar.h
@@ -179,6 +179,11 @@ FT_BEGIN_HEADER
                               FT_UInt      n_points );
 
 
+  FT_LOCAL( FT_Error )
+  tt_get_var_blend( TT_Face     face,
+                    FT_UInt    *num_coords,
+                    FT_Fixed*  *coords );
+
   FT_LOCAL( void )
   tt_done_blend( TT_Face  face );
 
diff --git a/src/type1/t1driver.c b/src/type1/t1driver.c
index ad46371..fd9e13e 100644
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -127,6 +127,7 @@
     (FT_Set_Var_Design_Func)T1_Set_Var_Design,     /* set_var_design */
     (FT_Get_Var_Design_Func)T1_Get_Var_Design,     /* get_var_design */
 
+    (FT_Get_Var_Blend_Func) NULL,                  /* get_var_blend  */
     (FT_Done_Blend_Func)    T1_Done_Blend          /* done_blend     */
   };
 #endif



reply via email to

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