freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] priyesh_LogLibrary bfe6d52: Added support of callback functi


From: Priyesh Kumar
Subject: [freetype2] priyesh_LogLibrary bfe6d52: Added support of callback functions to handle logs outside FreeType
Date: Sat, 4 Jul 2020 03:39:44 -0400 (EDT)

branch: priyesh_LogLibrary
commit bfe6d5218ae1ae54bc062139f8f586b7cce1450f
Author: Priyeshkkumar <priyeshkkumar@gmail.com>
Commit: Priyeshkkumar <priyeshkkumar@gmail.com>

    Added support of callback functions to handle logs outside FreeType
---
 [priyesh]ChangeLog                  | 13 +++++++++++
 include/freetype/ftlogging.h        | 16 ++++++++-----
 include/freetype/internal/ftdebug.h | 24 +++++---------------
 src/base/ftdebug.c                  | 45 ++++++++++++++++++++++++-------------
 4 files changed, 58 insertions(+), 40 deletions(-)

diff --git a/[priyesh]ChangeLog b/[priyesh]ChangeLog
index d826b4e..e309b04 100644
--- a/[priyesh]ChangeLog
+++ b/[priyesh]ChangeLog
@@ -1,3 +1,16 @@
+2020-07-04  Priyesh Kumar   <priyeshkkumar@gmail.com>
+
+    * include/freetype/ftlogging.h: Added two functions `FT_Set_Log_Handler()`
+      and `FT_Set_Default_Log_Handler()` to enable the callback functionality.
+
+    * include/freetype/internal/ftdebug.h: Some Code Cleanup
+
+    * src/base/ftdebug.c: 
+       1. Added definitions for functions:
+          `FT_Set_Default_Log_Handler()` and `FT_Set_Log_Handler()`.
+       2. Added support for callback function.
+
+
 2020-07-03  Priyesh Kumar   <priyeshkkumar@gmail.com>
     
     * Code Cleanup and Added more comments
diff --git a/include/freetype/ftlogging.h b/include/freetype/ftlogging.h
index ee96db2..195d768 100644
--- a/include/freetype/ftlogging.h
+++ b/include/freetype/ftlogging.h
@@ -22,20 +22,24 @@ FT_BEGIN_HEADER
 
   /* An external callback function to be used to define an output handler */
   typedef void 
-  (*ft_custom_output_handler)( const char* string ); 
+  (*ft_custom_log_handler)( const char* fmt, va_list args ); 
 
 
   /**************************************************************************
    * 
-   * comments on callback
+   * If FT_LOGGING is enabled user can provide their own function to handle 
+   * the log messages using the function `FT_Set_Log_Handler()` by passing 
+   * the function name which they want to use.
+   * User could also revert back to use FreeType's inbuilt function to 
+   * handle logs using function `FT_Set_Default_Log_Handler()` 
+   * Defined in src/base/ftdebug.c
    *
    */ 
-  /*  
   FT_EXPORT( void )
-  FT_Trace_Set_Output( ft_ouput_handler handler ); 
+  FT_Set_Log_Handler( ft_custom_log_handler handler ); 
 
   FT_EXPORT( void )
-  FT_Trace_Set_Default_Output();
-  */
+  FT_Set_Default_Log_Handler();
+  
 
 FT_END_HEADER
diff --git a/include/freetype/internal/ftdebug.h 
b/include/freetype/internal/ftdebug.h
index 16b50cf..c5a1a51 100644
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -109,18 +109,6 @@ FT_BEGIN_HEADER
    *  
    */
 
-#ifdef FT_LOGGING
-  
-#undef FT_Log
-#define FT_Log dlg_trace
-
-#else
-
-#undef FT_Log
-#define FT_Log FT_Message
-
-#endif /* FT_LOGGING */
-
 #ifdef FT_DEBUG_LEVEL_TRACE
 
   /* we need two macros here to make cpp expand `FT_COMPONENT' */
@@ -131,7 +119,7 @@ FT_BEGIN_HEADER
           do                                                               \
           {                                                                \
             if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
-              FT_Log varformat;                                            \
+              FT_Message varformat;                                        \
           } while ( 0 )
 
 #else /* !FT_DEBUG_LEVEL_TRACE */
@@ -341,7 +329,7 @@ FT_BEGIN_HEADER
  */
 
  FT_BASE( void ) 
- ft_output_handler( const struct dlg_origin* origin, const char* string, 
+ ft_log_handler( const struct dlg_origin* origin, const char* string, 
                     void* data );
 
 
@@ -360,14 +348,14 @@ FT_BEGIN_HEADER
    * 4. ft_default_output_handler: stores the function pointer which is used 
    *    internally by FreeType to print logs to file.
    * 
-   * 5. fileptr: store the FILE*
+   * 5. ft_fileptr: store the FILE*
    *     
    */ 
   static const char* ft_default_trace_level = NULL;
   static const char* ft_custom_trace_level = NULL;
-  static ft_custom_output_handler custom_output_handler = NULL;
-  static dlg_handler ft_default_output_handler = NULL;
-  static FILE* fileptr = NULL;
+  static ft_custom_log_handler custom_output_handler = NULL;
+  static dlg_handler ft_default_log_handler = NULL;
+  static FILE* ft_fileptr = NULL;
 
   /**************************************************************************
    * 
diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c
index 9d629c1..7b6de15 100644
--- a/src/base/ftdebug.c
+++ b/src/base/ftdebug.c
@@ -53,12 +53,25 @@
   FT_Message( const char*  fmt,
               ... )
   {
+#ifdef FT_LOGGING
+
+    if( custom_output_handler != NULL )
+    {
+      va_list  ap;
+      va_start( ap, fmt );
+      custom_output_handler( fmt, ap );
+      va_end( ap );
+    }
+    else
+      dlg_trace( fmt );
+#else
     va_list  ap;
 
 
     va_start( ap, fmt );
     vfprintf( stderr, fmt, ap );
     va_end( ap );
+#endif /* FT_LOGGING */
   }
 
 
@@ -340,20 +353,20 @@ else
   FT_BASE_DEF( void )
   ft_logging_init( void )
   {
-    ft_default_output_handler = &ft_output_handler;
+    ft_default_log_handler = ft_log_handler;
     ft_default_trace_level = ft_getenv( "FT2_DEBUG" );
-    fileptr = fopen( "freetype2.log", "w" );
+    ft_fileptr = fopen( "freetype2.log", "w" );
     
     ft_debug_init();
     /* We need to set the default FreeType specific dlg's output handler */
-    dlg_set_handler( ft_default_output_handler, NULL );
+    dlg_set_handler( ft_default_log_handler, NULL );
 
   }
 
   FT_BASE_DEF( void )
   ft_logging_deinit( void )
   {
-    fclose( fileptr );
+    fclose( ft_fileptr );
   }
 
   /*************************************************************************
@@ -363,9 +376,9 @@ else
    *    
    */
   FT_BASE_DEF( void ) 
-  ft_output_handler( const struct dlg_origin* origin, 
+  ft_log_handler( const struct dlg_origin* origin, 
                               const char* string, void* data )
- {
+  {
      unsigned int features; 
      if( origin->tags[0] == "error_log" )
      {
@@ -376,9 +389,9 @@ else
       features = dlg_output_threadsafe /*| dlg_output_tags*/ ;
      }
      
-          dlg_generic_output_stream( fileptr, features, origin, string, 
+          dlg_generic_output_stream( ft_fileptr, features, origin, string, 
                                 dlg_default_output_styles );
- }
+  }
 
  /**************************************************************************
   * 
@@ -408,22 +421,22 @@ else
 
 /****************************************************************************
  * 
- * comments on callback
+ * Functions to handle custom log handler:
  * 
  */
-  /*
+  
   FT_EXPORT_DEF( void )
-  FT_Trace_Set_Output( ft_ouput_handler handler )
+  FT_Set_Log_Handler( ft_custom_log_handler handler )
   {
-    ft_custom_output_handler = handler;
+    custom_output_handler = handler;
   }
-
+  
   FT_EXPORT_DEF( void )
-  FT_Trace_Set_Default_Output()
+  FT_Set_Default_Log_Handler()
   {
-    ft_custom_output_handler = NULL;
+    custom_output_handler = NULL;
   }
-  */
+  
 #endif /* FT_LOGGING */
 
 /* END */



reply via email to

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