freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master a7dc0c3: Extend functionality of `ft_module_get_servi


From: Werner LEMBERG
Subject: [freetype2] master a7dc0c3: Extend functionality of `ft_module_get_service'.
Date: Wed, 14 Dec 2016 17:55:03 +0000 (UTC)

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

    Extend functionality of `ft_module_get_service'.
    
    It can now differentiate between local and global searches.
    
    * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
    (FT_Get_TrueType_Engine_Type): Updated.
    
    * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
    
    * include/freetype/internal/ftobjs.h: Updated.
    * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
    Updated.
---
 ChangeLog                          |   15 +++++++++++++++
 include/freetype/internal/ftobjs.h |    3 ++-
 include/freetype/internal/ftserv.h |   34 +++++++++++++++++-----------------
 src/base/ftobjs.c                  |    8 +++++---
 src/cff/cffdrivr.c                 |    6 ++++--
 5 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0bfb55e..7facfad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2016-12-14  Werner Lemberg  <address@hidden>
 
+       Extend functionality of `ft_module_get_service'.
+
+       It can now differentiate between local and global searches.
+
+       * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
+       (FT_Get_TrueType_Engine_Type): Updated.
+
+       * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
+
+       * include/freetype/internal/ftobjs.h: Updated.
+       * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
+       Updated.
+
+2016-12-14  Werner Lemberg  <address@hidden>
+
        * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
 
 2016-12-14  Dave Arnold  <address@hidden>
diff --git a/include/freetype/internal/ftobjs.h 
b/include/freetype/internal/ftobjs.h
index 15936f2..25b18a5 100644
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -531,7 +531,8 @@ FT_BEGIN_HEADER
 
   FT_BASE( FT_Pointer )
   ft_module_get_service( FT_Module    module,
-                         const char*  service_id );
+                         const char*  service_id,
+                         FT_Bool      global );
 
 #ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
   FT_BASE( FT_Error )
diff --git a/include/freetype/internal/ftserv.h 
b/include/freetype/internal/ftserv.h
index 1532090..3e7b12f 100644
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -109,27 +109,27 @@ FT_BEGIN_HEADER
    */
 #ifdef __cplusplus
 
-#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id )               \
-  FT_BEGIN_STMNT                                                   \
-    FT_Module    module = FT_MODULE( FT_FACE( face )->driver );    \
-    FT_Pointer   _tmp_;                                            \
-    FT_Pointer*  _pptr_ = (FT_Pointer*)&(ptr);                     \
-                                                                   \
-                                                                   \
-    _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
-    *_pptr_ = _tmp_;                                               \
+#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id )                  \
+  FT_BEGIN_STMNT                                                      \
+    FT_Module    module = FT_MODULE( FT_FACE( face )->driver );       \
+    FT_Pointer   _tmp_;                                               \
+    FT_Pointer*  _pptr_ = (FT_Pointer*)&(ptr);                        \
+                                                                      \
+                                                                      \
+    _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id, 1 ); \
+    *_pptr_ = _tmp_;                                                  \
   FT_END_STMNT
 
 #else /* !C++ */
 
-#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id )               \
-  FT_BEGIN_STMNT                                                   \
-    FT_Module   module = FT_MODULE( FT_FACE( face )->driver );     \
-    FT_Pointer  _tmp_;                                             \
-                                                                   \
-                                                                   \
-    _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
-    ptr   = _tmp_;                                                 \
+#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id )                  \
+  FT_BEGIN_STMNT                                                      \
+    FT_Module   module = FT_MODULE( FT_FACE( face )->driver );        \
+    FT_Pointer  _tmp_;                                                \
+                                                                      \
+                                                                      \
+    _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id, 1 ); \
+    ptr   = _tmp_;                                                    \
   FT_END_STMNT
 
 #endif /* !C++ */
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index c701ebc..07b3ef0 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -4496,7 +4496,8 @@
 
   FT_BASE_DEF( FT_Pointer )
   ft_module_get_service( FT_Module    module,
-                         const char*  service_id )
+                         const char*  service_id,
+                         FT_Bool      global )
   {
     FT_Pointer  result = NULL;
 
@@ -4509,7 +4510,7 @@
       if ( module->clazz->get_interface )
         result = module->clazz->get_interface( module, service_id );
 
-      if ( result == NULL )
+      if ( global && result == NULL )
       {
         /* we didn't find it, look in all other modules then */
         FT_Library  library = module->library;
@@ -4977,7 +4978,8 @@
 
         service = (FT_Service_TrueTypeEngine)
                     ft_module_get_service( module,
-                                           FT_SERVICE_ID_TRUETYPE_ENGINE );
+                                           FT_SERVICE_ID_TRUETYPE_ENGINE,
+                                           0 );
         if ( service )
           result = service->engine_type;
       }
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index cf02477..a12115b 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -455,7 +455,8 @@
       FT_Service_PsFontName  service     =
         (FT_Service_PsFontName)ft_module_get_service(
                                  sfnt_module,
-                                 FT_SERVICE_ID_POSTSCRIPT_FONT_NAME );
+                                 FT_SERVICE_ID_POSTSCRIPT_FONT_NAME,
+                                 0 );
 
 
       if ( service && service->get_ps_font_name )
@@ -500,7 +501,8 @@
       FT_Module           sfnt    = FT_Get_Module( library, "sfnt" );
       FT_Service_TTCMaps  service =
         (FT_Service_TTCMaps)ft_module_get_service( sfnt,
-                                                   FT_SERVICE_ID_TT_CMAP );
+                                                   FT_SERVICE_ID_TT_CMAP,
+                                                   0 );
 
 
       if ( service && service->get_cmap_info )



reply via email to

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