⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libjpeg.pas

📁 很好的源代码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit LibJPEG;
{ Quick, dirty and ugly conversion of some header files of the IJG JPEG library.
  Only those declarations needed by the Advanced Image Coding application
  are converted.

  Based on the IJG JPEG library version 6b }

interface

{$ALIGN 8}       // Align 8-byte data types on 8-byte boundaries
{$MINENUMSIZE 4} // Enumerations are 4 bytes minimum

type
  J_MESSAGE_CODE = (
    JMSG_NOMESSAGE,
    JERR_ARITH_NOTIMPL,    JERR_BAD_ALIGN_TYPE,    JERR_BAD_ALLOC_CHUNK,    JERR_BAD_BUFFER_MODE,    JERR_BAD_COMPONENT_ID,    JERR_BAD_DCT_COEF,    JERR_BAD_DCTSIZE,    ERR_BAD_HUFF_TABLE,    ERR_BAD_IN_COLORSPACE,    JERR_BAD_J_COLORSPACE,    JERR_BAD_LENGTH,    JERR_BAD_LIB_VERSION,    JERR_BAD_MCU_SIZE,    JERR_BAD_POOL_ID,    JERR_BAD_PRECISION,    JERR_BAD_PROGRESSION,    JERR_BAD_PROG_SCRIPT,    JERR_BAD_SAMPLING,     JERR_BAD_SCAN_SCRIPT,     JERR_BAD_STATE,     JERR_BAD_STRUCT_SIZE,    JERR_BAD_VIRTUAL_ACCESS,     JERR_BUFFER_SIZE,     JERR_CANT_SUSPEND,     JERR_CCIR601_NOTIMPL,     JERR_COMPONENT_COUNT,     JERR_CONVERSION_NOTIMPL,     JERR_DAC_INDEX,    JERR_DAC_VALUE,    JERR_DHT_INDEX,     JERR_DQT_INDEX,     JERR_EMPTY_IMAGE,     JERR_EMS_READ,    JERR_EMS_WRITE,     JERR_EOI_EXPECTED,     JERR_FILE_READ,     JERR_FILE_WRITE,     JERR_FRACT_SAMPLE_NOTIMPL,     JERR_HUFF_CLEN_OVERFLOW,     JERR_HUFF_MISSING_CODE,     JERR_IMAGE_TOO_BIG,     JERR_INPUT_EMPTY,     JERR_INPUT_EOF,     JERR_MISMATCHED_QUANT_TABLE,    JERR_MISSING_DATA,     JERR_MODE_CHANGE,     JERR_NOTIMPL,     JERR_NOT_COMPILED,     JERR_NO_BACKING_STORE,     JERR_NO_HUFF_TABLE,    JERR_NO_IMAGE,     JERR_NO_QUANT_TABLE,     JERR_NO_SOI,     JERR_OUT_OF_MEMORY,     JERR_QUANT_COMPONENTS,    JERR_QUANT_FEW_COLORS,     JERR_QUANT_MANY_COLORS,     JERR_SOF_DUPLICATE,     JERR_SOF_NO_SOS,     JERR_SOF_UNSUPPORTED,     JERR_SOI_DUPLICATE,     JERR_SOS_NO_SOF,     JERR_TFILE_CREATE,     JERR_TFILE_READ,     JERR_TFILE_SEEK,    JERR_TFILE_WRITE,    JERR_TOO_LITTLE_DATA,     JERR_UNKNOWN_MARKER,     JERR_VIRTUAL_BUG,     JERR_WIDTH_OVERFLOW,     JERR_XMS_READ,     JERR_XMS_WRITE,     JMSG_COPYRIGHT,    JMSG_VERSION,    JTRC_16BIT_TABLES,    JTRC_ADOBE,    JTRC_APP0,     JTRC_APP14,     JTRC_DAC,     JTRC_DHT,     JTRC_DQT,     JTRC_DRI,     JTRC_EMS_CLOSE,     JTRC_EMS_OPEN,     JTRC_EOI,     JTRC_HUFFBITS,     JTRC_JFIF,     JTRC_JFIF_BADTHUMBNAILSIZE,    JTRC_JFIF_EXTENSION,    JTRC_JFIF_THUMBNAIL,     JTRC_MISC_MARKER,     JTRC_PARMLESS_MARKER,     JTRC_QUANTVALS,     JTRC_QUANT_3_NCOLORS,     JTRC_QUANT_NCOLORS,     JTRC_QUANT_SELECTED,     JTRC_RECOVERY_ACTION,     JTRC_RST,     JTRC_SMOOTH_NOTIMPL,    JTRC_SOF,     JTRC_SOF_COMPONENT,     JTRC_SOI,    JTRC_SOS,    JTRC_SOS_COMPONENT,    JTRC_SOS_PARAMS,    JTRC_TFILE_CLOSE,    JTRC_TFILE_OPEN,    JTRC_THUMB_JPEG,    JTRC_THUMB_PALETTE,    JTRC_THUMB_RGB,    JTRC_UNKNOWN_IDS,    JTRC_XMS_CLOSE,    JTRC_XMS_OPEN,    JWRN_ADOBE_XFORM,    JWRN_BOGUS_PROGRESSION,    JWRN_EXTRANEOUS_DATA,    JWRN_HIT_MARKER,    JWRN_HUFF_BAD_CODE,    JWRN_JFIF_MAJOR,    JWRN_JPEG_EOF,    JWRN_MUST_RESYNC,    JWRN_NOT_SEQUENTIAL,    JWRN_TOO_MUCH_DATA  );const
  DCTSIZE = 8;
  DCTSIZE2 = 64;
  NUM_QUANT_TBLS = 4;
  NUM_HUFF_TBLS = 4;
  NUM_ARITH_TBLS = 16;
  MAX_COMPS_IN_SCAN = 4;
  C_MAX_BLOCKS_IN_MCU = 10;
  D_MAX_BLOCKS_IN_MCU = 10;
  JMSG_LENGTH_MAX = 200;	(* recommended size of format_message buffer *)
  JMSG_STR_PARM_MAX = 80;
  JPEG_LIB_VERSION = 62;

const
  JPOOL_PERMANENT	= 0;
  JPOOL_IMAGE	= 1;  JPOOL_NUMPOOLS = 2;const  JPEG_RST0	= $D0;	// RST0 marker code
  JPEG_EOI	= $D9;	// EOI marker code  JPEG_APP0	= $E0;	// APP0 marker code  JPEG_COM	= $FE;	// COM marker codetype
  int = Integer;
  uint = Cardinal;
  long = Longint;
  pint = ^int;
  size_t = uint;
  UINT8 = Byte;
  UINT16 = Word;
//  Boolean = Longbool;

  JDIMENSION = uint;
  JSAMPLE = Byte;
  JSAMPROW = ^JSAMPLE;
  JSAMPARRAY = ^JSAMPROW;
  JSAMPIMAGE = ^JSAMPARRAY;
  JOCTET = Byte;

  PJSAMPLE = ^JSAMPLE;
  PJOCTET = ^JOCTET;

  JMETHOD = procedure; cdecl;

  J_COLOR_SPACE = (
    JCS_UNKNOWN,		(* error/unspecified *)
    JCS_GRAYSCALE,		(* monochrome *)    JCS_RGB,		(* red/green/blue *)    JCS_YCbCr,		(* Y/Cb/Cr (also known as YUV) *)    JCS_CMYK,		(* C/M/Y/K *)    JCS_YCCK);		(* Y/Cb/Cr/K *)  J_DCT_METHOD = (    JDCT_ISLOW,		(* slow but accurate integer algorithm *)    JDCT_IFAST,		(* faster, less accurate integer method *)    JDCT_FLOAT);		(* floating-point: accurate, fast on fast HW *)  J_DITHER_MODE = (    JDITHER_NONE,		(* no dithering *)    JDITHER_ORDERED,	(* simple ordered dither *)    JDITHER_FS);		(* Floyd-Steinberg error diffusion dither *)type
  pjpeg_error_mgr = ^jpeg_error_mgr;
  pjpeg_memory_mgr = ^jpeg_memory_mgr;
  pjpeg_progress_mgr = Pointer;
  pjpeg_source_mgr = ^jpeg_source_mgr;
  pjpeg_component_info = Pointer;
  pjpeg_decomp_master = Pointer;
  pjpeg_d_main_controller = Pointer;  pjpeg_d_coef_controller = Pointer;  pjpeg_d_post_controller = Pointer;  pjpeg_input_controller = Pointer;  pjpeg_marker_reader = Pointer;  pjpeg_entropy_decoder = Pointer;  pjpeg_inverse_dct = Pointer;  pjpeg_upsampler = Pointer;  pjpeg_color_deconverter = Pointer;  pjpeg_color_quantizer = Pointer;  pjpeg_destination_mgr = ^jpeg_destination_mgr;  pjpeg_scan_info = ^jpeg_scan_info;  pjpeg_comp_master = Pointer;  pjpeg_c_main_controller = Pointer;  pjpeg_c_prep_controller = Pointer;  pjpeg_c_coef_controller = Pointer;  pjpeg_marker_writer = Pointer;  pjpeg_color_converter = Pointer;  pjpeg_downsampler = Pointer;  pjpeg_forward_dct = Pointer;  pjpeg_entropy_encoder = Pointer;  PJQUANT_TBL = Pointer;
  PJHUFF_TBL = Pointer;

  jpeg_saved_marker_ptr = Pointer;
  j_common_ptr = ^jpeg_common_struct;
  j_decompress_ptr = ^jpeg_decompress_struct;

  jpeg_common_struct = record
    err: pjpeg_error_mgr;	(* Error handler module *)
    mem: pjpeg_memory_mgr;	(* Memory manager module *)
    progress: pjpeg_progress_mgr; (* Progress monitor, or NULL if none *)    client_data: Pointer;		(* Available for use by application *)    is_decompressor: Boolean;	(* So common code can tell which is which *)    global_state: int;		(* For checking call sequence validity *)  end;

  tcoef_bits = array [0..DCTSIZE2-1] of pint;
  pcoef_bits = ^tcoef_bits;

  pjpeg_decompress_struct = ^jpeg_decompress_struct;
  jpeg_decompress_struct = record
    err: pjpeg_error_mgr;	(* Error handler module *)
    mem: pjpeg_memory_mgr;	(* Memory manager module *)
    progress: pjpeg_progress_mgr; (* Progress monitor, or NULL if none *)    client_data: Pointer;		(* Available for use by application *)    is_decompressor: Boolean;	(* So common code can tell which is which *)    global_state: int;		(* For checking call sequence validity *)
    (* Source of compressed data *)    src: pjpeg_source_mgr;    (* Basic description of image --- filled in by jpeg_read_header(). *)    (* Application may inspect these values to decide how to process image. *)    image_width: JDIMENSION;	(* nominal image width (from SOF marker) *)    image_height: JDIMENSION;	(* nominal image height *)    num_components: int;		(* # of color components in JPEG image *)    jpeg_color_space: J_COLOR_SPACE; (* colorspace of JPEG image *)    (* Decompression processing parameters --- these fields must be set before

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -