/**************************************************************************** * * ftlogging.h * * Additional debugging APIs. * * Copyright (C) 2020-2021 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * */ #ifndef FTLOGGING_H_ #define FTLOGGING_H_ #include #include FT_CONFIG_CONFIG_H FT_BEGIN_HEADER /************************************************************************** * * @section: * debugging_apis * * @title: * External Debugging APIs * * @abstract: * Public APIs to control the `FT_DEBUG_LOGGING` macro. * * @description: * This section contains the declarations of public functions that * enables fine control of what the `FT_DEBUG_LOGGING` macro outputs. * */ /************************************************************************** * * @function: * FT_Trace_Set_Level * * @description: * Change the levels of tracing components of FreeType at run time. * * @input: * tracing_level :: * New tracing value. * * @example: * The following call makes FreeType trace everything but the 'memory' * component. * * ``` * FT_Trace_Set_Level( "any:7 memory:0 ); * ``` * * @note: * This function does nothing if compilation option `FT_DEBUG_LOGGING` * isn't set. */ FT_EXPORT( void ) FT_Trace_Set_Level( const char* tracing_level ); /************************************************************************** * * @function: * FT_Trace_Set_Default_Level * * @description: * Reset tracing value of FreeType's components to the default value * (i.e., to the value of the `FT2_DEBUG` environment value or to NULL * if `FT2_DEBUG` is not set). * * * @note: * This function does nothing if compilation option `FT_DEBUG_LOGGING` * isn't set. */ FT_EXPORT( void ) FT_Trace_Set_Default_Level( void ); /************************************************************************** * * @functype: * FT_Custom_Log_Handler * * @description: * A function typedef that is used to handle the logging of tracing and * debug messages on a file system. * * @input: * ft_component :: * The name of `FT_COMPONENT` from which the current debug or error * message is produced. * * fmt :: * Actual debug or tracing message. * * args:: * Arguments of debug or tracing messages. */ typedef void (*FT_Custom_Log_Handler)( const char* ft_component, const char* fmt, va_list args ); /************************************************************************** * * @function: * FT_Set_Log_Handler * * @description: * A function to set a custom log handler. * * @input: * handler :: * New logging function. * * @note: * This function does nothing if compilation option `FT_DEBUG_LOGGING` * isn't set. */ FT_EXPORT( void ) FT_Set_Log_Handler( FT_Custom_Log_Handler handler ); /************************************************************************** * * @function: * FT_Set_Default_Log_Handler * * @description: * A function to undo the effect of @FT_Set_Log_Handler, resetting the * log handler to FreeType's built-in version. * * @note: * This function does nothing if compilation option `FT_DEBUG_LOGGING` * isn't set. */ FT_EXPORT( void ) FT_Set_Default_Log_Handler( void ); /* */ FT_END_HEADER #endif /* FTLOGGING_H_ */ /* END */