/src/FreeImage/Source/LibOpenJPEG/event.c
C | 122 lines | 67 code | 13 blank | 42 comment | 14 complexity | 570e7367ff852a0ee67182aff63a5bda MD5 | raw file
1/* 2 * Copyright (c) 2005, Herve Drolon, FreeImage Team 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include "opj_includes.h" 28 29/* ========================================================== 30 Utility functions 31 ==========================================================*/ 32 33#ifdef OPJ_CODE_NOT_USED 34#ifndef _WIN32 35static char* 36i2a(unsigned i, char *a, unsigned r) { 37 if (i/r > 0) a = i2a(i/r,a,r); 38 *a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i%r]; 39 return a+1; 40} 41 42/** 43 Transforms integer i into an ascii string and stores the result in a; 44 string is encoded in the base indicated by r. 45 @param i Number to be converted 46 @param a String result 47 @param r Base of value; must be in the range 2 - 36 48 @return Returns a 49*/ 50static char * 51_itoa(int i, char *a, int r) { 52 r = ((r < 2) || (r > 36)) ? 10 : r; 53 if(i < 0) { 54 *a = '-'; 55 *i2a(-i, a+1, r) = 0; 56 } 57 else *i2a(i, a, r) = 0; 58 return a; 59} 60 61#endif /* !_WIN32 */ 62#endif 63/* ----------------------------------------------------------------------- */ 64 65opj_event_mgr_t* OPJ_CALLCONV opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context) { 66 if(cinfo) { 67 opj_event_mgr_t *previous = cinfo->event_mgr; 68 cinfo->event_mgr = event_mgr; 69 cinfo->client_data = context; 70 return previous; 71 } 72 73 return NULL; 74} 75 76opj_bool opj_event_msg(opj_common_ptr cinfo, int event_type, const char *fmt, ...) { 77#define MSG_SIZE 512 /* 512 bytes should be more than enough for a short message */ 78 opj_msg_callback msg_handler = NULL; 79 80 opj_event_mgr_t *event_mgr = cinfo->event_mgr; 81 if(event_mgr != NULL) { 82 switch(event_type) { 83 case EVT_ERROR: 84 msg_handler = event_mgr->error_handler; 85 break; 86 case EVT_WARNING: 87 msg_handler = event_mgr->warning_handler; 88 break; 89 case EVT_INFO: 90 msg_handler = event_mgr->info_handler; 91 break; 92 default: 93 break; 94 } 95 if(msg_handler == NULL) { 96 return OPJ_FALSE; 97 } 98 } else { 99 return OPJ_FALSE; 100 } 101 102 if ((fmt != NULL) && (event_mgr != NULL)) { 103 va_list arg; 104 int str_length/*, i, j*/; /* UniPG */ 105 char message[MSG_SIZE]; 106 memset(message, 0, MSG_SIZE); 107 /* initialize the optional parameter list */ 108 va_start(arg, fmt); 109 /* check the length of the format string */ 110 str_length = (strlen(fmt) > MSG_SIZE) ? MSG_SIZE : strlen(fmt); 111 /* parse the format string and put the result in 'message' */ 112 vsprintf(message, fmt, arg); /* UniPG */ 113 /* deinitialize the optional parameter list */ 114 va_end(arg); 115 116 /* output the message to the user program */ 117 msg_handler(message, cinfo->client_data); 118 } 119 120 return OPJ_TRUE; 121} 122