FreeImage_SetOutputMessage
Cuando cierto mapa de bits no puede ser cargado o guardado suele haber una explicación para ello. Por ejemplo, ciertos formatos de mapas de bits no están soportados debido a restricciones de copyright, o puede existir un problema conocido con ciertos subtipos de mapas de bits. Cuando algo falla internamente en FreeImage se genera una cadena de diario (log-string), que puede ser capturada por la aplicación que esté usando FreeImage. Se puede usar la función FreeImage_SetOutputMessage para capturar esta cadena de modo que se puede mostrar al usuario del programa.
Sintaxis
DLL_API void DLL_CALLCONV FreeImage_SetOutputMessage(FreeImage_OutputMessageFunction omf);
Parámetros
omf: puntero a función de retrollamada (callback) que manipula los mensajes de error.
Ejemplo:
/** FreeImage error handler @param fif Format / Plugin responsible for the error @param message Error message */ void FreeImageErrorHandler(FREE_IMAGE_FORMAT fif, const char *message) { printf("\n*** "); if(fif != FIF_UNKNOWN) { printf("%s Format\n", FreeImage_GetFormatFromFIF(fif)); } printf(message); printf(" ***\n"); } // In your main program … FreeImage_SetOutputMessage(FreeImageErrorHandler);
El parámetro fif pasado como primer argumento en la retrollamada (callback) debe ser igual a FIF_UNKNOWN cuando se genera un error que no esté relacionado con un plugin. En ese caso, la llamada a FreeImage_GetFormatFromFIF(FIF_UNKNOWN) retornará NULL. Proporcionar un valor NULL a funciones como “printf(…)” hará que tu aplicación falle, así que ten cuidado...