1 /* 2 * The copyright in this software is being made available under the 2-clauses 3 * BSD License, included below. This software may be subject to other third 4 * party and contributor rights, including patent rights, and no such rights 5 * are granted under this license. 6 * 7 * Copyright (c) 2005, Herve Drolon, FreeImage Team 8 * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR 9 * Copyright (c) 2012, CS Systemes d'Information, France 10 * All rights reserved. 11 * 12 * Redistribution and use in source and binary forms, with or without 13 * modification, are permitted provided that the following conditions 14 * are met: 15 * 1. Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * 2. Redistributions in binary form must reproduce the above copyright 18 * notice, this list of conditions and the following disclaimer in the 19 * documentation and/or other materials provided with the distribution. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 * POSSIBILITY OF SUCH DAMAGE. 32 */ 33 #ifndef OPJ_EVENT_H 34 #define OPJ_EVENT_H 35 /** 36 @file event.h 37 @brief Implementation of a event callback system 38 39 The functions in EVENT.C have for goal to send output messages (errors, warnings, debug) to the user. 40 */ 41 /** 42 Message handler object 43 used for 44 <ul> 45 <li>Error messages 46 <li>Warning messages 47 <li>Debugging messages 48 </ul> 49 */ 50 typedef struct opj_event_mgr { 51 /** Data to call the event manager upon */ 52 void * m_error_data; 53 /** Data to call the event manager upon */ 54 void * m_warning_data; 55 /** Data to call the event manager upon */ 56 void * m_info_data; 57 /** Error message callback if available, NULL otherwise */ 58 opj_msg_callback error_handler; 59 /** Warning message callback if available, NULL otherwise */ 60 opj_msg_callback warning_handler; 61 /** Debug message callback if available, NULL otherwise */ 62 opj_msg_callback info_handler; 63 } opj_event_mgr_t; 64 65 66 #define EVT_ERROR 1 /**< Error event type */ 67 #define EVT_WARNING 2 /**< Warning event type */ 68 #define EVT_INFO 4 /**< Debug event type */ 69 70 /** @defgroup EVENT EVENT - Implementation of a event callback system */ 71 /*@{*/ 72 73 /** @name Exported functions (see also openjpeg.h) */ 74 /*@{*/ 75 /* ----------------------------------------------------------------------- */ 76 77 78 /* ----------------------------------------------------------------------- */ 79 80 /** 81 * Write formatted data to a string and send the string to a user callback. 82 * 83 * @param event_mgr Event handler 84 * @param event_type Event type or callback to use to send the message 85 * @param fmt Format-control string (plus optional arguments) 86 * 87 * @return Returns true if successful, returns false otherwise 88 */ 89 OPJ_BOOL opj_event_msg(opj_event_mgr_t* event_mgr, OPJ_INT32 event_type, 90 const char *fmt, ...); 91 /* ----------------------------------------------------------------------- */ 92 93 /** 94 * Set the event manager with the default callback function for the 3 levels. 95 */ 96 void opj_set_default_event_handler(opj_event_mgr_t * p_manager); 97 98 /* 99 #ifdef __GNUC__ 100 #pragma GCC poison printf fprintf 101 #endif 102 */ 103 104 /*@}*/ 105 106 /*@}*/ 107 108 #endif /* OPJ_EVENT_H */ 109