// Decide whether to emit a trace or warning message. // msg_level is one of: // -1: recoverable corrupt-data warning, may want to abort. // 0: important advisory messages (always display to user). // 1: first level of tracing detail. // 2,3,...: successively more detailed tracing messages. // An application might override this method if it wanted to abort on warnings // or change the policy about which messages to display. static void emit_message(jpeg_common cinfo, int msg_level) { jpeg_error_mgr err = cinfo.err; if (msg_level < 0) { // It's a warning message. Since corrupt files may generate many warnings, // the policy implemented here is to show only the first warning, // unless trace_level >= 3. if (err.num_warnings == 0 || err.trace_level >= 3) { err.output_message(cinfo); } // Always count warnings in num_warnings. err.num_warnings++; } else { // It's a trace message. Show it if trace_level >= msg_level. if (err.trace_level >= msg_level) { err.output_message(cinfo); // Create the message and Send it to Debug Console, adding a newline //Debug.WriteLine(cinfo.err.format_message(cinfo)); } } }
// Format a message string for the most recent JPEG error or message. // The message is stored into buffer, which should be at least JMSG_LENGTH_MAX // characters. Note that no '\n' character is added to the string. // Few applications should need to override this method. static string format_message(jpeg_common cinfo) { jpeg_error_mgr err = cinfo.err; int msg_code = err.msg_code; string msgtext = null; // Look up message string in proper table 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]; } // Defend against bogus message number if (msgtext == null) { err.msg_parm[0] = msg_code; msgtext = err.jpeg_message_table[0]; } // Format the message into the passed buffer return(string.Format(msgtext, err.msg_parm)); }
// Default error-management setup // Fill in the standard error-handling methods in a jpeg_error_mgr object. // Typical call is: // jpeg_compress cinfo=new jpeg_compress(); // jpeg_error_mgr err=new jpeg_error_mgr(); // // cinfo.err=libjpeg.jpeg_std_error(err); // after which the application may override some of the methods. public static jpeg_error_mgr jpeg_std_error(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; // default = no tracing err.num_warnings = 0; // no warnings emitted yet err.msg_code = 0; // may be useful as a flag for "no error" // Initialize message table pointers err.jpeg_message_table = jpeg_std_message_table; err.last_jpeg_message = (int)J_MESSAGE_CODE.JMSG_LASTMSGCODE - 1; err.addon_message_table = null; err.first_addon_message = 0; // for safety err.last_addon_message = 0; return(err); }
// Default error-management setup // Fill in the standard error-handling methods in a jpeg_error_mgr object. // Typical call is: // jpeg_compress cinfo=new jpeg_compress(); // jpeg_error_mgr err=new jpeg_error_mgr(); // // cinfo.err=libjpeg.jpeg_std_error(err); // after which the application may override some of the methods. public static jpeg_error_mgr jpeg_std_error(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; // default = no tracing err.num_warnings=0; // no warnings emitted yet err.msg_code=0; // may be useful as a flag for "no error" // Initialize message table pointers err.jpeg_message_table=jpeg_std_message_table; err.last_jpeg_message=(int)J_MESSAGE_CODE.JMSG_LASTMSGCODE-1; err.addon_message_table=null; err.first_addon_message=0; // for safety err.last_addon_message=0; return err; }