jerror.c File Reference

#include "jinclude.h"
#include "jpeglib.h"
#include "jversion.h"
#include "jerror.h"

Go to the source code of this file.

Defines

#define EXIT_FAILURE   1
#define JMESSAGE(code, string)   string ,

Functions

 emit_message (j_common_ptr cinfo, int msg_level)
 error_exit (j_common_ptr cinfo)
 format_message (j_common_ptr cinfo, char *buffer)
 jpeg_std_error (struct jpeg_error_mgr *err)
 output_message (j_common_ptr cinfo)
 reset_error_mgr (j_common_ptr cinfo)

Variables

const char *const jpeg_std_message_table []


Define Documentation

#define EXIT_FAILURE   1

Definition at line 32 of file jerror.c.

#define JMESSAGE ( code,
string   )     string ,

Definition at line 48 of file jerror.c.


Function Documentation

emit_message ( j_common_ptr  cinfo,
int  msg_level 
)

Definition at line 128 of file jerror.c.

References jpeg_error_mgr::num_warnings, and jpeg_error_mgr::trace_level.

Referenced by jpeg_std_error().

00129 {
00130   struct jpeg_error_mgr * err = cinfo->err;
00131 
00132   if (msg_level < 0) {
00133     /* It's a warning message.  Since corrupt files may generate many warnings,
00134      * the policy implemented here is to show only the first warning,
00135      * unless trace_level >= 3.
00136      */
00137     if (err->num_warnings == 0 || err->trace_level >= 3)
00138       (*err->output_message) (cinfo);
00139     /* Always count warnings in num_warnings. */
00140     err->num_warnings++;
00141   } else {
00142     /* It's a trace message.  Show it if trace_level >= msg_level. */
00143     if (err->trace_level >= msg_level)
00144       (*err->output_message) (cinfo);
00145   }
00146 }

error_exit ( j_common_ptr  cinfo  ) 

Definition at line 70 of file jerror.c.

References jpeg_destroy().

Referenced by jpeg_std_error().

00071 {
00072   /* Always display the message */
00073   (*cinfo->err->output_message) (cinfo);
00074 
00075   /* Let the memory manager delete any temp files before we die */
00076   jpeg_destroy(cinfo);
00077 
00078   //exit(EXIT_FAILURE);
00079 }

format_message ( j_common_ptr  cinfo,
char *  buffer 
)

Definition at line 157 of file jerror.c.

References jpeg_error_mgr::addon_message_table, FALSE, jpeg_error_mgr::first_addon_message, jpeg_error_mgr::i, jpeg_error_mgr::jpeg_message_table, jpeg_error_mgr::last_addon_message, jpeg_error_mgr::last_jpeg_message, jpeg_error_mgr::msg_code, jpeg_error_mgr::msg_parm, jpeg_error_mgr::s, and TRUE.

Referenced by jpeg_std_error().

00158 {
00159   struct jpeg_error_mgr * err = cinfo->err;
00160   int msg_code = err->msg_code;
00161   const char * msgtext = NULL;
00162   const char * msgptr;
00163   char ch;
00164   boolean isstring;
00165 
00166   /* Look up message string in proper table */
00167   if (msg_code > 0 && msg_code <= err->last_jpeg_message) {
00168     msgtext = err->jpeg_message_table[msg_code];
00169   } else if (err->addon_message_table != NULL &&
00170          msg_code >= err->first_addon_message &&
00171          msg_code <= err->last_addon_message) {
00172     msgtext = err->addon_message_table[msg_code - err->first_addon_message];
00173   }
00174 
00175   /* Defend against bogus message number */
00176   if (msgtext == NULL) {
00177     err->msg_parm.i[0] = msg_code;
00178     msgtext = err->jpeg_message_table[0];
00179   }
00180 
00181   /* Check for string parameter, as indicated by %s in the message text */
00182   isstring = FALSE;
00183   msgptr = msgtext;
00184   while ((ch = *msgptr++) != '\0') {
00185     if (ch == '%') {
00186       if (*msgptr == 's') isstring = TRUE;
00187       break;
00188     }
00189   }
00190 
00191   /* Format the message into the passed buffer */
00192   if (isstring)
00193     sprintf(buffer, msgtext, err->msg_parm.s);
00194   else
00195     sprintf(buffer, msgtext,
00196         err->msg_parm.i[0], err->msg_parm.i[1],
00197         err->msg_parm.i[2], err->msg_parm.i[3],
00198         err->msg_parm.i[4], err->msg_parm.i[5],
00199         err->msg_parm.i[6], err->msg_parm.i[7]);
00200 }

jpeg_std_error ( struct jpeg_error_mgr err  ) 

Definition at line 231 of file jerror.c.

References emit_message(), error_exit(), format_message(), jpeg_std_message_table, output_message(), and reset_error_mgr().

Referenced by jpeg_lib_init(), main(), read_JPEG_file(), and write_JPEG_file().

00232 {
00233   err->error_exit = error_exit;
00234   err->emit_message = emit_message;
00235   err->output_message = output_message;
00236   err->format_message = format_message;
00237   err->reset_error_mgr = reset_error_mgr;
00238 
00239   err->trace_level = 0;     /* default = no tracing */
00240   err->num_warnings = 0;    /* no warnings emitted yet */
00241   err->msg_code = 0;        /* may be useful as a flag for "no error" */
00242 
00243   /* Initialize message table pointers */
00244   err->jpeg_message_table = jpeg_std_message_table;
00245   err->last_jpeg_message = (int) JMSG_LASTMSGCODE - 1;
00246 
00247   err->addon_message_table = NULL;
00248   err->first_addon_message = 0; /* for safety */
00249   err->last_addon_message = 0;
00250 
00251   return err;
00252 }

output_message ( j_common_ptr  cinfo  ) 

Definition at line 98 of file jerror.c.

References JMSG_LENGTH_MAX.

Referenced by jpeg_std_error().

00099 {
00100   char buffer[JMSG_LENGTH_MAX];
00101 
00102   /* Create the message */
00103   (*cinfo->err->format_message) (cinfo, buffer);
00104 
00105 #ifdef USE_WINDOWS_MESSAGEBOX
00106   /* Display it in a message dialog box */
00107   MessageBox(GetActiveWindow(), buffer, "JPEG Library Error",
00108          MB_OK | MB_ICONERROR);
00109 #else
00110   /* Send it to stderr, adding a newline */
00111   //fprintf(stderr, "%s\n", buffer);
00112 #endif
00113 }

reset_error_mgr ( j_common_ptr  cinfo  ) 

Definition at line 212 of file jerror.c.

Referenced by jpeg_std_error().

00213 {
00214   cinfo->err->num_warnings = 0;
00215   /* trace_level is not reset since it is an application-supplied parameter */
00216   cinfo->err->msg_code = 0; /* may be useful as a flag for "no error" */
00217 }


Variable Documentation

const char* const jpeg_std_message_table[]

Definition at line 50 of file jerror.c.

Referenced by jpeg_std_error().


Generated on Fri Feb 19 02:31:03 2010 for AVR32 - IJG JPEG Decoder Example by  doxygen 1.5.5