123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- #include "jinclude.h"
- #include "jpeglib.h"
- #include "jversion.h"
- #include "jerror.h"
- #ifdef USE_WINDOWS_MESSAGEBOX
- #include <windows.h>
- #endif
- #ifndef EXIT_FAILURE
- #define EXIT_FAILURE 1
- #endif
- #define JMESSAGE(code, string) string,
- const char * const jpeg_std_message_table[] = {
- #include "jerror.h"
- NULL
- };
- METHODDEF(void)
- error_exit(j_common_ptr cinfo)
- {
-
- (*cinfo->err->output_message) (cinfo);
-
- jpeg_destroy(cinfo);
- exit(EXIT_FAILURE);
- }
- METHODDEF(void)
- output_message(j_common_ptr cinfo)
- {
- char buffer[JMSG_LENGTH_MAX];
-
- (*cinfo->err->format_message) (cinfo, buffer);
- #ifdef USE_WINDOWS_MESSAGEBOX
-
- MessageBox(GetActiveWindow(), buffer, "JPEG Library Error",
- MB_OK | MB_ICONERROR);
- #else
-
- fprintf(stderr, "%s\n", buffer);
- #endif
- }
- METHODDEF(void)
- emit_message(j_common_ptr cinfo, int msg_level)
- {
- struct jpeg_error_mgr *err = cinfo->err;
- if (msg_level < 0) {
-
- if (err->num_warnings == 0 || err->trace_level >= 3)
- (*err->output_message) (cinfo);
-
- err->num_warnings++;
- } else {
-
- if (err->trace_level >= msg_level)
- (*err->output_message) (cinfo);
- }
- }
- METHODDEF(void)
- format_message(j_common_ptr cinfo, char *buffer)
- {
- struct jpeg_error_mgr *err = cinfo->err;
- int msg_code = err->msg_code;
- const char *msgtext = NULL;
- const char *msgptr;
- char ch;
- boolean isstring;
-
- if (msg_code > 0 && msg_code <= err->last_jpeg_message) {
- msgtext = err->jpeg_message_table[msg_code];
- } else if (err->addon_message_table != NULL &&
- msg_code >= err->first_addon_message &&
- msg_code <= err->last_addon_message) {
- msgtext = err->addon_message_table[msg_code - err->first_addon_message];
- }
-
- if (msgtext == NULL) {
- err->msg_parm.i[0] = msg_code;
- msgtext = err->jpeg_message_table[0];
- }
-
- isstring = FALSE;
- msgptr = msgtext;
- while ((ch = *msgptr++) != '\0') {
- if (ch == '%') {
- if (*msgptr == 's') isstring = TRUE;
- break;
- }
- }
-
- if (isstring)
- SNPRINTF(buffer, JMSG_LENGTH_MAX, msgtext, err->msg_parm.s);
- else
- SNPRINTF(buffer, JMSG_LENGTH_MAX, msgtext,
- err->msg_parm.i[0], err->msg_parm.i[1],
- err->msg_parm.i[2], err->msg_parm.i[3],
- err->msg_parm.i[4], err->msg_parm.i[5],
- err->msg_parm.i[6], err->msg_parm.i[7]);
- }
- METHODDEF(void)
- reset_error_mgr(j_common_ptr cinfo)
- {
- cinfo->err->num_warnings = 0;
-
- cinfo->err->msg_code = 0;
- }
- GLOBAL(struct jpeg_error_mgr *)
- jpeg_std_error(struct jpeg_error_mgr *err)
- {
- err->error_exit = error_exit;
- err->emit_message = emit_message;
- err->output_message = output_message;
- err->format_message = format_message;
- err->reset_error_mgr = reset_error_mgr;
- err->trace_level = 0;
- err->num_warnings = 0;
- err->msg_code = 0;
-
- err->jpeg_message_table = jpeg_std_message_table;
- err->last_jpeg_message = (int)JMSG_LASTMSGCODE - 1;
- err->addon_message_table = NULL;
- err->first_addon_message = 0;
- err->last_addon_message = 0;
- return err;
- }
|