예제 #1
0
        // 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));
                }
            }
        }
예제 #2
0
        // 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));
        }
예제 #3
0
        // 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);
        }
예제 #4
0
		// 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;
		}