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

📄 freeimage.pas

📁 最棒的三大计算机视觉、图像图形函数库之一
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit FreeImage;

interface

uses Windows;
// ==========================================================
// Delphi wrapper for FreeImage 3
//
// Design and implementation by
// - Simon Beavis
// - Peter Bystr鰉
// - Anatoliy Pulyaevskiy (xvel84@rambler.ru)
//
// This file is part of FreeImage 3
//
// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
// THIS DISCLAIMER.
//
// Use at your own risk!
// ==========================================================

{$MINENUMSIZE 4} // Make sure enums are stored as an integer to be compatible with C/C++

const
  FIDLL = 'FreeImage.dll';
  
// --------------------------------------------------------------------------
// Bitmap types -------------------------------------------------------------
// --------------------------------------------------------------------------

type
  FIBITMAP = record
    data : Pointer;
  end;
  PFIBITMAP = ^FIBITMAP;

  FIMULTIBITMAP = record
    data : Pointer;
  end;
  PFIMULTIBITMAP = ^FIMULTIBITMAP;

// --------------------------------------------------------------------------
// Indexes for byte arrays, masks and shifts for treating pixels as words ---
// These coincide with the order of RGBQUAD and RGBTRIPLE -------------------
// Little Endian (x86 / MS Windows, Linux) : BGR(A) order -------------------
// --------------------------------------------------------------------------

const
  FI_RGBA_RED         = 2;
  FI_RGBA_GREEN       = 1;
  FI_RGBA_BLUE        = 0;
  FI_RGBA_ALPHA       = 3;
  FI_RGBA_RED_MASK    = $00FF0000;
  FI_RGBA_GREEN_MASK  = $0000FF00;
  FI_RGBA_BLUE_MASK   = $000000FF;
  FI_RGBA_ALPHA_MASK  = $FF000000;
  FI_RGBA_RED_SHIFT   = 16;
  FI_RGBA_GREEN_SHIFT = 8;
  FI_RGBA_BLUE_SHIFT  = 0;
  FI_RGBA_ALPHA_SHIFT = 24;

// --------------------------------------------------------------------------
// The 16bit macros only include masks and shifts, --------------------------
// since each color element is not byte aligned -----------------------------
// --------------------------------------------------------------------------

const
  FI16_555_RED_MASK		 = $7C00;
  FI16_555_GREEN_MASK	 = $03E0;
  FI16_555_BLUE_MASK	 = $001F;
  FI16_555_RED_SHIFT	 = 10;
  FI16_555_GREEN_SHIFT = 5;
  FI16_555_BLUE_SHIFT	 = 0;
  FI16_565_RED_MASK		 = $F800;
  FI16_565_GREEN_MASK	 = $07E0;
  FI16_565_BLUE_MASK	 = $001F;
  FI16_565_RED_SHIFT	 = 11;
  FI16_565_GREEN_SHIFT = 5;
  FI16_565_BLUE_SHIFT	 = 0;

// --------------------------------------------------------------------------
// ICC profile support ------------------------------------------------------
// --------------------------------------------------------------------------

const
  FIICC_DEFAULT = $0;
  FIICC_COLOR_IS_CMYK	= $1;

type
  FIICCPROFILE = record
    flags : WORD;   // info flag
    size : DWORD;   // profile's size measured in bytes
    data : Pointer; // points to a block of contiguous memory containing the profile
  end;
  PFIICCPROFILE = ^FIICCPROFILE;

// --------------------------------------------------------------------------
// Important enums ----------------------------------------------------------
// --------------------------------------------------------------------------

type
  // I/O image format identifiers.
  FREE_IMAGE_FORMAT = (
    FIF_UNKNOWN = -1,
    FIF_BMP		  = 0,
    FIF_ICO	  	= 1,
    FIF_JPEG   	= 2,
    FIF_JNG	  	= 3,
    FIF_KOALA 	= 4,
    FIF_LBM	  	= 5,
    FIF_IFF     = FIF_LBM,
    FIF_MNG	  	= 6,
    FIF_PBM	  	= 7,
    FIF_PBMRAW	= 8,
    FIF_PCD	  	= 9,
    FIF_PCX	  	= 10,
    FIF_PGM	  	= 11,
    FIF_PGMRAW	= 12,
    FIF_PNG	  	= 13,
    FIF_PPM	  	= 14,
    FIF_PPMRAW	= 15,
    FIF_RAS	  	= 16,
    FIF_TARGA 	= 17,
    FIF_TIFF  	= 18,
    FIF_WBMP  	= 19,
    FIF_PSD	  	= 20,
    FIF_CUT	  	= 21,
    FIF_XBM	  	= 22,
    FIF_XPM	  	= 23,
    FIF_DDS		  = 24,
  	FIF_GIF     = 25
  );

  // Image type used in FreeImage.
  FREE_IMAGE_TYPE = (
    FIT_UNKNOWN = 0,	// unknown type
    FIT_BITMAP  = 1,	// standard image		    	: 1-, 4-, 8-, 16-, 24-, 32-bit
    FIT_UINT16	= 2,	// array of unsigned short: unsigned 16-bit
    FIT_INT16	  = 3,	// array of short			    : signed 16-bit
    FIT_UINT32	= 4,	// array of unsigned long	: unsigned 32-bit
    FIT_INT32  	= 5,	// array of long			    : signed 32-bit
    FIT_FLOAT	  = 6,	// array of float			    : 32-bit IEEE floating point
    FIT_DOUBLE	= 7,	// array of double			  : 64-bit IEEE floating point
    FIT_COMPLEX	= 8		// array of FICOMPLEX		  : 2 x 64-bit IEEE floating point
  );

  // Image color type used in FreeImage.
  FREE_IMAGE_COLOR_TYPE = (
	  FIC_MINISWHITE = 0,		// min value is white
    FIC_MINISBLACK = 1,		// min value is black
    FIC_RGB        = 2,		// RGB color model
    FIC_PALETTE    = 3,		// color map indexed
	  FIC_RGBALPHA   = 4,		// RGB color model with alpha channel
	  FIC_CMYK       = 5		// CMYK color model
  );

  // Color quantization algorithms. Constants used in FreeImage_ColorQuantize.
  FREE_IMAGE_QUANTIZE = (
    FIQ_WUQUANT = 0,		// Xiaolin Wu color quantization algorithm
    FIQ_NNQUANT = 1			// NeuQuant neural-net quantization algorithm by Anthony Dekker
  );

  // Dithering algorithms. Constants used FreeImage_Dither.
  FREE_IMAGE_DITHER = (
    FID_FS            = 0,	// Floyd & Steinberg error diffusion
    FID_BAYER4x4      = 1,	// Bayer ordered dispersed dot dithering (order 2 dithering matrix)
    FID_BAYER8x8      = 2,	// Bayer ordered dispersed dot dithering (order 3 dithering matrix)
    FID_CLUSTER6x6    = 3,	// Ordered clustered dot dithering (order 3 - 6x6 matrix)
    FID_CLUSTER8x8    = 4,	// Ordered clustered dot dithering (order 4 - 8x8 matrix)
    FID_CLUSTER16x16  = 5   // Ordered clustered dot dithering (order 8 - 16x16 matrix)

⌨️ 快捷键说明

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