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

📄 hyiedefs.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 2 页
字号:

{!!
<FS>RGBROW

<FM>Declaration<FC>
type RGBROW = array[0 . . Maxint div 16] of <A TRGB>;
!!}
  // row of TRGB
  RGBROW = array[0..Maxint div 16] of TRGB;

  // row of bytes
  TBYTEROW = array[0..Maxint div 16] of byte;

  // array of byte rows
  TBYTEROWS = array[0..Maxint div 16] of PBYTEROW;

{!!
<FS>IntegerArray

<FM>Declaration<FC>
}
  IntegerArray = array[0..MaxInt div 16] of integer;
{!!}

  // pointer tp array of pointers to TRGB (scanline rows)
{!!
<FS>PRGBArray

<FM>Declaration<FC>
type PRGBArray = array[0 . . Maxint div 16] of pRGB;
!!}
  PRGBArray = array[0..Maxint div 16] of pRGB;

{!!
<FS>TIEProgressEvent

<FM>Declaration<FC>
type TIEProgressEvent = procedure(Sender: TObject; per: integer) of object;

<FM>Description<FN>
<FC>per<FN> is a value from 0 to 100 that indicates the percentage progress made.
!!}
  // Notify progress (per=percentage)
  TIEProgressEvent = procedure(Sender: TObject; per: integer) of object;

  TIEJob = (iejNOTHING, // no job / end of work
    iejGENERALPROCESSING, // generic processing
    iejVIDEOCAP_CONNECTING // Video capture - connecting...
    );

{!!
<FS>TIEJobEvent

<FM>Declaration<FC>
type TIEJobEvent = procedure(Sender: TObject; job:TIEJob; per:integer) of object;

<FM>Description<FN>
A TIEJobEvent is called during ImageEn processing.

job is the job type in progress.
per is percentage of performed work related to job.

The job parameter can be one of these values:

iejNOTHING : No job / end of work
iejGENERALPROCESSING : generic job
iejVIDEOCAP_CONNECTING : video capture - connecting to video capture card
!!}
  TIEJobEvent = procedure(Sender: TObject; job: TIEJob; per: integer) of object;

{!!
<FS>TProgressRec

<FM>Declaration<FC>
}
  // helper structure for OnProgress
  TProgressRec = record
    fOnProgress: TIEProgressEvent;
    Sender: TObject;
    val: integer; // counter (per=trunc(per1*val))
    tot: integer;
    per1: double; // (100/maxval)
    per2: double;
    Aborting: pboolean;
  end;
{!!}

  // resample filters
{!!
<FS>TResampleFilter

<FM>Declaration<FC>
TResampleFilter = (rfNone, rfTriangle, rfHermite, rfBell, rfBSpline, rfLanczos3, rfMitchell, rfNearest, rfLinear, rfFastLinear, rfBilinear, rfBicubic, rfProjectBW, rfProjectWB);

<FM>Description<FN>
If you need the best quality we suggest: rfHermite, rfBell, rfBSpline, rfLanczos3, rfMitchell, rfNearest, rfBilinear, rfBicubic

If you need speed we suggest: rfTriangle, rfLinear, rfFastLinear

For projects (white on black or black on white) we suggest: rfProjectBW and rfProjectWB
!!}
  TResampleFilter = (rfNone, rfTriangle, rfHermite, rfBell, rfBSpline, rfLanczos3, rfMitchell, rfNearest, rfLinear, rfFastLinear, rfBilinear, rfBicubic, rfProjectBW, rfProjectWB);

  THYIEGraphicHeader = record
    Count: Word; { Fixed at 1 }
    HType: Word; { Fixed at $0100 }
    Size: Longint; { Size not including header }
  end;

{!!
<FS>TMsgLanguage

<FM>Declaration<FC>
Type TMsgLanguage=(msSystem, msEnglish, msItalian, msGerman, msSpanish, msFrench, msPortuguese, msGreek, msRussian, msDutch, msSwedish, msPolish, msJapanese, msCzech, msFinnish, msFarsi, msChinese, msChineseTraditional, msDanish, msUser);
!!}
  TMsgLanguage = (
    msSystem
{$IFDEF IESUPPORTENGLISH}
    , msEnglish
{$ENDIF}
{$IFDEF IESUPPORTITALIAN}
    , msItalian
{$ENDIF}
{$IFDEF IESUPPORTGERMAN}
    , msGerman
{$ENDIF}
{$IFDEF IESUPPORTSPANISH}
    , msSpanish
{$ENDIF}
{$IFDEF IESUPPORTFRENCH}
    , msFrench
{$ENDIF}
{$IFDEF IESUPPORTPORTUGUESE}
    , msPortuguese
{$ENDIF}
{$IFDEF IESUPPORTGREEK}
    , msGreek
{$ENDIF}
{$IFDEF IESUPPORTRUSSIAN}
    , msRussian
{$ENDIF}
{$IFDEF IESUPPORTDUTCH}
    , msDutch
{$ENDIF}
{$IFDEF IESUPPORTSWEDISH}
    , msSwedish
{$ENDIF}
{$IFDEF IESUPPORTPOLISH}
    , msPolish
{$ENDIF}
{$IFDEF IESUPPORTJAPANESE}
    , msJapanese
{$ENDIF}
{$IFDEF IESUPPORTCZECH}
    , msCzech
{$ENDIF}
{$IFDEF IESUPPORTFINNISH}
    , msFinnish
{$ENDIF}
{$IFDEF IESUPPORTFARSI}
    , msFarsi
{$ENDIF}
{$IFDEF IESUPPORTCHINESE}
    , msChinese
    , msChineseTraditional
{$ENDIF}
{$IFDEF IESUPPORTDANISH}
    , msDanish
{$ENDIF}
{$IFDEF IESUPPORTUSER}
    , msUser
{$ENDIF}
    );

{!!
<FS>TMsgLanguageWords

<FM>Declaration<FC>
}
  TMsgLanguageWords = (IEMSG_PREVIEW, IEMSG_SOURCE, IEMSG_RESULT, IEMSG_OK, IEMSG_CANCEL,
    IEMSG_LOCKPREVIEW, IEMSG_COPYRESULTTOSOURCE, IEMSG_CONTRAST, IEMSG_BRIGHTNESS,
    IEMSG_HUE, IEMSG_SATURATION, IEMSG_VALUE, IEMSG_BASECOLOR, IEMSG_NEWCOLOR,
    IEMSG_LUMINOSITY, IEMSG_RED, IEMSG_GREEN, IEMSG_BLUE, IEMSG_FILTERVALUES, IEMSG_PRESETS,
    IEMSG_DIVISOR, IEMSG_LOAD, IEMSG_SAVE, IEMSG_EQUALIZATION, IEMSG_THRESHOLD, IEMSG_EQUALIZE,
    IEMSG_HISTOGRAM, IEMSG_GRAY, IEMSG_LIGHT, IEMSG_LEFT, IEMSG_TOP, IEMSG_WIDTH, IEMSG_HEIGHT,
    IEMSG_COLOR, IEMSG_SOURCEIMAGEQUANTITY, IEMSG_LENS, IEMSG_REFRACTION, IEMSG_PARAMETERSPREVIEW,
    IEMSG_QUALITY, IEMSG_DCTMETHOD, IEMSG_SMOOTHINGFACTOR, IEMSG_GRAYSCALE, IEMSG_OPTIMALHUFFMAN,
    IEMSG_ORIGINALSIZE, IEMSG_COMPRESSEDSIZE, IEMSG_ADVANCED, IEMSG_PROGRESSIVE, IEMSG_COMPRESSION,
    IEMSG_IMAGEINDEX, IEMSG_PHOTOMETRIC, IEMSG_SCANNDEDDOCUMENTINFO, IEMSG_NAME, IEMSG_DESCRIPTION,
    IEMSG_PAGENAME, IEMSG_PAGENUMBER, IEMSG_OF, IEMSG_HORIZPOSITIONINCH, IEMSG_VERTPOSITIONINCH,
    IEMSG_COLORS, IEMSG_TRANSPARENT, IEMSG_TRANSPARENTCOLOR, IEMSG_INTERLACED, IEMSG_BACKGROUND,
    IEMSG_HORIZPOSITION, IEMSG_VERTPOSITION, IEMSG_DELAYTIME, IEMSG_FILTER, IEMSG_WAVE,
    IEMSG_AMPLITUDE, IEMSG_WAVELENGTH, IEMSG_PHASE, IEMSG_REFLECTIVE, IEMSG_USERFILTER,
    IEMSG_MORPHFILTER, IEMSG_WINDOWSIZE, IEMSG_MAXIMUM, IEMSG_MINIMUM, IEMSG_OPEN,
    IEMSG_CLOSE, IEMSG_ROTATE, IEMSG_FLIP, IEMSG_FLIPHOR, IEMSG_FLIPVER,
    IEMSG_FREQUENCYDOMAINIMAGE, IEMSG_SELECTTHEREGIONTOCLEAR, IEMSG_CLEAR, IEMSG_RESET,
    IEMSG_ANIMATE, IEMSG_LOADFILTER, IEMSG_SAVEFILTER, IEMSG_BUMPMAP, IEMSG_PRINT, IEMSG_MARGINS, IEMSG_INCHES,
    IEMSG_RIGHT, IEMSG_BOTTOM, IEMSG_POSITION, IEMSG_SIZE, IEMSG_NORMAL, IEMSG_FITTOPAGE, IEMSG_STRETCHTOPAGE,
    IEMSG_SPECIFIEDSIZE, IEMSG_GAMMACORRECTION, IEMSG_VALUE2, IEMSG_PRINTSETUP, IEMSG_LEFTMARGIN, IEMSG_TOPMARGIN,
    IEMSG_RIGHTMARGIN, IEMSG_BOTTOMMARGIN, IEMSG_LOCATIONSIZE, IEMSG_TOPLEFT, IEMSG_TOPCENTER, IEMSG_TOPRIGHT,
    IEMSG_CENTERLEFT, IEMSG_CENTER, IEMSG_CENTERRIGHT, IEMSG_BOTTOMLEFT, IEMSG_BOTTOMCENTER, IEMSG_BOTTOMRIGHT,
    IEMSG_CLOSE2, IEMSG_APPLY, IEMSG_MEASUREUNITS, IEMSG_UNITS, IEMSG_RATE,
    IEMSG_ALLGRAPHICS, IEMSG_VIDEOFORWINDOWS, IEMSG_FILE, IEMSG_MEM, IEMSG_LOCKPREVIEWHINT,
    IEMSG_PRINTALL, IEMSG_PRINTSELECTED, IEMSG_COMMONGRAPHICFILES, IEMSG_ALLFILES,
    IEMSG_HSV, IEMSG_HSL, IEMSG_RGB, IEMSG_FFT, IEMSG_SHARPEN, IEMSG_CHANNELS
    );
{!!}

const
  IESELBREAK = $FFFFF; // selection break code

  IETAGSIZE: array[1..12] of word = (1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8); // size of tags

  // YUV formats
  IEBI_IYU1 = $31555949;
  IEBI_IYU2 = $32555949;
  IEBI_UYVY = $59565955;
  IEBI_UYNV = $564E5955;
  IEBI_cyuv = $76757963;
  IEBI_YUY2 = $32595559;
  IEBI_YUNV = $564E5559;
  IEBI_YVYU = $55595659;
  IEBI_Y41P = $50313459;
  IEBI_Y211 = $31313259;
  IEBI_Y41T = $54313459;
  IEBI_Y42T = $54323459;
  IEBI_CLJR = $524A4C43;
  IEBI_YVU9 = $39555659;
  IEBI_IF09 = $39304649;
  IEBI_YV12 = $32315659;
  IEBI_I420 = $30323449;
  IEBI_IYUV = $56555949;
  IEBI_CLPL = $4C504C43;

var

  ieMessages: array[TMsgLanguage] of array[TMsgLanguageWords] of string;
  gAVIFILEinit: boolean; // true if AVIFILE library has been initialized
  gThreadCS: TRTLCriticalSection; // global critical section

{!!
<FS>gRedToGrayCoef

<FM>Declaration<FC>
gRedToGrayCoef:integer;

<FM>Description<FN>
Specify the red coefficient used to convert from color to gray scale. Default values are 21, 71 and 8. The convertion formula is:
<FC>gray := (Red * <A gRedToGrayCoef> + Green * <A gGreenToGrayCoef> + Blue * <A gBlueToGrayCoef>) div 100;
!!}
  gRedToGrayCoef:integer;

{!!
<FS>gGreenToGrayCoef

<FM>Declaration<FC>
gGreenToGrayCoef:integer;

<FM>Description<FN>
Specify the green coefficient used to convert from color to gray scale. Default values are 21, 71 and 8. The convertion formula is:
<FC>gray := (Red * <A gRedToGrayCoef> + Green * <A gGreenToGrayCoef> + Blue * <A gBlueToGrayCoef>) div 100;
!!}
  gGreenToGrayCoef:integer;

{!!
<FS>gBlueToGrayCoef

<FM>Declaration<FC>
gBlueToGrayCoef:integer;

<FM>Description<FN>
Specify the blue coefficient used to convert from color to gray scale. Default values are 21, 71 and 8. The convertion formula is:
<FC>gray := (Red * <A gRedToGrayCoef> + Green * <A gGreenToGrayCoef> + Blue * <A gBlueToGrayCoef>) div 100;
!!}
  gBlueToGrayCoef:integer;

{!!
<FS>iegDialogsBackground

<FM>Declaration<FC>
iegDialogsBackground:(iedbDefault, iedbPaper, iedbMetal);

<FM>Description<FN>
Specify the default dialogs (image processing, printing, ..) background style. This is not the image background, but actually the dialog background.
!!}
  iegDialogsBackground:(iedbDefault, iedbPaper, iedbMetal);


{$IFDEF DEMOVERSION}
procedure ie_ctrlview(canvas: TCanvas);
procedure ie_ctrlbmp(bmp:TObject);
{$ENDIF}



implementation

uses hyieutils, imageenio,imageenview,imageenproc;

{$IFDEF DEMOVERSION}
{$I demo1.inc}
{$ENDIF}

initialization
  begin
    InitializeCriticalSection(gThreadCS);
    gRedToGrayCoef:=21;
    gGreenToGrayCoef:=71;
    gBlueToGrayCoef:=8;
    iegDialogsBackground:=iedbDefault;
  end;

finalization
  begin
    DeleteCriticalSection(gThreadCS);
  end;

end.

⌨️ 快捷键说明

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