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

📄 hyieutils.pas

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

  TNulStream = class(TStream)
  private
    fposition: integer;
    fsize: integer;
  public
    constructor Create;
    destructor Destroy; override;
    function Read(var Buffer; Count: Longint): Longint; override;
    function Write(const Buffer; Count: Longint): Longint; override;
    function Seek(Offset: Longint; Origin: Word): Longint; override;
  end;

  TIEListChanges = set of (ielItems, ielRange, ielCurrentValue);

{!!
<FS>TIEList

<FM>Description<FN>
This is the abstract class for <A TIEDoubleList> and <A TIEIntegerList>.

<FM>Implemented Methods<FN>

  <A TIEList.Clear>
  <A TIEList.Delete>

<FM>Implemented Properties<FN>

  <A TIEList.Changed>
  <A TIEList.Count>
!!}
  // abstract class for IE lists
  TIEList = class
  private
    fCount: integer;
  protected
    fItemSize: integer; // sizeof(...)
    fData: pointer;
    fChanged: TIEListChanges;
    procedure SetCount(v: integer); virtual;
    function AddItem(v: pointer): integer;
    procedure InsertItem(idx: integer; v: pointer);
    function IndexOfItem(v: pointer): integer;
    function BaseGetItem(idx: integer): pointer;
    procedure BaseSetItem(idx: integer; v: pointer);
  public
    constructor Create; virtual;
    destructor Destroy; override;
    procedure Delete(idx: integer); virtual;
    property Count: integer read fCount write SetCount;
    procedure Clear; virtual;
    procedure Assign(Source: TIEList); virtual;

{!!
<FS>TIEList.Changed

<FM>Declaration<FC>
property Changed:TIEListChanges;

<FM>Description<FN>
Changed is True whenever the items array, Range or CurrentValue changes.
!!}
    property Changed: TIEListChanges read fChanged write fChanged;

  end;

{!!
<FS>TIEDoubleList

<FM>Description<FN>
TIEDoubleList is a list of double values. You can handle this object as a standard TList object.
An ImageEn list contains an array of values, a current value (not an index of the array), and an allowed range of values.

<FM>Methods<FN>

<A TIEDoubleList.Add>
<A TIEDoubleList.Clear>
<A TIEDoubleList.IndexOf>
<A TIEDoubleList.Insert>


<FM>Properties<FN>

<A TIEList.Changed> (inherited from TIEList)
<A TIEDoubleList.CurrentValue>
<A TIEDoubleList.Items>
<A TIEDoubleList.RangeMax>
<A TIEDoubleList.RangeMin>
<A TIEDoubleList.RangeStep>


!!}
  TIEDoubleList = class(TIEList)
  private
    fRangeMin: double;
    fRangeMax: double;
    fRangeStep: double;
    fCurrentValue: double;
    function GetItem(idx: integer): double;
    procedure SetItem(idx: integer; v: double);
    procedure SetRangeMax(v: double);
    procedure SetRangeMin(v: double);
    procedure SetRangeStep(v: double);
    procedure SetCurrentValue(v: double);
  public
    function Add(v: double): integer;
    procedure Insert(idx: integer; v: double);
    procedure Clear; override;
    function IndexOf(v: double): integer;
    property RangeMin: double read fRangeMin write SetRangeMin;
    property RangeMax: double read fRangeMax write SetRangeMax;
    property RangeStep: double read fRangeStep write SetRangeStep;
    property Items[idx: integer]: double read GetItem write SetItem; default;
    procedure Assign(Source: TIEList); override;
    property CurrentValue: double read fCurrentValue write SetCurrentValue;
  end;

{!!
<FS>TIEIntegerList

<FM>Description<FN>
TIEIntegerList is a list of integer values. You can handle this object as a standard TList object.
An ImageEn list contains an array of values, a current value (not an index of the array), and an allowed range of values.


<FM>Methods<FN>

<A TIEIntegerList.Add>
<A TIEIntegerList.Clear>
<A TIEIntegerList.IndexOf>
<A TIEIntegerList.Insert>

<FM>Properties<FN>

<A TIEList.Changed> (inherited from TIEList)
<A TIEIntegerList.CurrentValue>
<A TIEIntegerList.Items>
<A TIEIntegerList.RangeMax>
<A TIEIntegerList.RangeMin>
<A TIEIntegerList.RangeStep>

!!}
  TIEIntegerList = class(TIEList)
  private
    fRangeMin: integer;
    fRangeMax: integer;
    fRangeStep: integer;
    fCurrentValue: integer;
    function GetItem(idx: integer): integer;
    procedure SetItem(idx: integer; v: integer);
    procedure SetRangeMax(v: integer);
    procedure SetRangeMin(v: integer);
    procedure SetRangeStep(v: integer);
    procedure SetCurrentValue(v: integer);
  public
    function Add(v: integer): integer;
    procedure Insert(idx: integer; v: integer);
    procedure Clear; override;
    function IndexOf(v: integer): integer;
    property RangeMin: integer read fRangeMin write SetRangeMin;
    property RangeMax: integer read fRangeMax write SetRangeMax;
    property RangeStep: integer read fRangeStep write SetRangeStep;
    property Items[idx: integer]: integer read GetItem write SetItem; default;
    procedure Assign(Source: TIEList); override;
    property CurrentValue: integer read fCurrentValue write SetCurrentValue;
  end;

  TIERecordList = class(TIEList)
  private
    function GetItem(idx: integer): pointer;
    procedure SetItem(idx: integer; v: pointer);
  public
    function Add(v: pointer): integer;
    procedure Insert(idx: integer; v: pointer);
    function IndexOf(v: pointer): integer;
    property Items[idx: integer]: pointer read GetItem write SetItem; default;
    constructor CreateList(RecordSize: integer);
  end;

{!!
<FS>TIEMarkerList

<FM>Description<FN>
TIEMarkerList is the object that contains the list of markers loaded from a jpeg.

<FM>Methods<FN>
    <A TIEMarkerList.AddMarker>
    <A TIEMarkerList.SetMarker>
    <A TIEMarkerList.InsertMarker>
    <A TIEMarkerList.Clear>
    <A TIEMarkerList.IndexOf>
    <A TIEMarkerList.SaveToStream>
    <A TIEMarkerList.LoadFromStream>
    <A TIEMarkerList.DeleteMarker>
    <A TIEMarkerList.Assign>

<FM>Properties<FN>

    <A TIEMarkerList.MarkerData>
    <A TIEMarkerList.MarkerStream>
    <A TIEMarkerList.MarkerLength>
    <A TIEMarkerList.MarkerType>
    <A TIEMarkerList.Count>
!!}
  TIEMarkerList = class
  private
    fData: TList; // list of TMemoryStream
    fType: TList; // list of byte
    function GetCount: integer;
    function GetMarkerData(idx: integer): pchar;
    function GetMarkerStream(idx: integer): TStream;
    function GetMarkerType(idx: integer): byte;
    function GetMarkerLength(idx: integer): word;
    function SortCompare(Index1,Index2:integer):integer;
    procedure SortSwap(Index1,Index2:integer);
  public
    constructor Create;
    destructor Destroy; override;
    function AddMarker(marker: byte; data: pchar; datalen: word): integer;
    procedure SetMarker(idx: integer; marker: byte; data: pchar; datalen: word);
    procedure InsertMarker(idx: integer; data: pchar; marker: byte; datalen: word);
    procedure Clear;
    property MarkerData[idx: integer]: pchar read GetMarkerData;
    property MarkerStream[idx: integer]: TStream read GetMarkerStream;
    property MarkerLength[idx: integer]: word read GetMarkerLength;
    property MarkerType[idx: integer]: byte read GetMarkerType;
    function IndexOf(marker: byte): integer;
    procedure SaveToStream(Stream: TStream);
    procedure LoadFromStream(Stream: TStream);
    procedure DeleteMarker(idx: integer);
    property Count: integer read GetCount;
    procedure Assign(Source: TIEMarkerList);
    procedure Sort;
  end;

  TIPTCInfo = packed record
    fRecord: integer;
    fDataSet: integer;
    fLength: integer;
  end;
  PIPTCInfo = ^TIPTCInfo;

{!!
<FS>TIEIPTCInfoList

<FM>Description<FN>
TIEIPTCInfoList contains a list of IPTC information contained in a file.
IPTC records can contains text, objects and images. Applications can read/write information from TIEIPTCInfoList using string objects or a memory buffer.
Each IPTC_Info item has a record number and a dataset number.  These values specify the type of data contained in the item, according to IPTC - NAA Information Interchange Model Version 4 (look at <L http://www.iptc.org>www.iptc.org</L>).
ImageEn can read/write IPTC textual information of PhotoShop (File info menu).
For JPEG files ImageEn read/write IPTC fields from APP13 marker.
Click <L IPTC items compatible with Adobe PhotoShop>here</L> for a list of IPTC Photoshop items.

An instance of TIEIPTCInfoList is <A TIOParamsVals.IPTC_Info>

<FM>Methods<FN>

    <A TIEIPTCInfoList.AddStringItem>
    <A TIEIPTCInfoList.AddBufferItem>
    <A TIEIPTCInfoList.InsertStringItem>
    <A TIEIPTCInfoList.Clear>
    <A TIEIPTCInfoList.IndexOf>
    <A TIEIPTCInfoList.DeleteItem>
    <A TIEIPTCInfoList.Assign>
    <A TIEIPTCInfoList.SaveToStream>
    <A TIEIPTCInfoList.LoadFromStream>
    <A TIEIPTCInfoList.LoadFromStandardBuffer>
    <A TIEIPTCInfoList.SaveToStandardBuffer>

<FM>Properties<FN>

    <A TIEIPTCInfoList.StringItem>
    <A TIEIPTCInfoList.RecordNumber>
    <A TIEIPTCInfoList.DataSet>
    <A TIEIPTCInfoList.Count>
!!}
  TIEIPTCInfoList = class
  private
    fBuffer: TList;
    fInfo: TList;
    fUserChanged: boolean;
    function GetStrings(idx: integer): string;
    procedure SetStrings(idx: integer; Value: string);
    function GetRecordNumber(idx: integer): integer;
    procedure SetRecordNumber(idx: integer; Value: integer);
    function GetDataSet(idx: integer): integer;
    procedure SetDataSet(idx: integer; Value: integer);
    function GetCount: integer;
  public
    constructor Create;
    destructor Destroy; override;
    property StringItem[idx: integer]: string read GetStrings write SetStrings;
    property RecordNumber[idx: integer]: integer read GetRecordNumber write SetRecordNumber;
    property DataSet[idx: integer]: integer read GetDataSet write SetDataSet;
    function AddStringItem(ARecordNumber: integer; ADataSet: integer; Value: string): integer;
    function AddBufferItem(ARecordNumber: integer; ADataSet: integer; Buffer: pointer; BufferLength: integer): integer;
    procedure InsertStringItem(idx: integer; ARecordNumber: integer; ADataSet: integer; Value: string);
    procedure Clear;
    function IndexOf(ARecordNumber: integer; ADataSet: integer): integer;
    procedure DeleteItem(idx: integer);
    property Count: integer read GetCount;
    procedure Assign(Source: TIEIPTCInfoList);
    procedure SaveToStream(Stream: TStream);
    procedure LoadFromStream(Stream: TStream);
    procedure LoadFromStandardBuffer(Buffer: pointer; BufferLength: integer);
    procedure SaveToStandardBuffer(var Buffer: pointer; var BufferLength: integer; WriteHeader: boolean);
    property UserChanged: boolean read fUserChanged write fUserChanged;
  end;

  // annotation types
const
  IEAnnotImageEmbedded = 1;
  IEAnnotImageReference = 2;
  IEAnnotStraightLine = 3;
  IEAnnotFreehandLine = 4;
  IEAnnotHollowRectangle = 5;
  IEAnnotFilledRectangle = 6;
  IEAnnotTypedText = 7;
  IEAnnotTextFromFile = 8;
  IEAnnotTextStamp = 9;
  IEAnnotAttachANote = 10;
  IEAnnotForm = 12;
  IEAnnotOCRRegion = 13;

  // TIEBitmap maximum channels
const
  IEMAXCHANNELS = 4;

type

  TIEBitmap = class;

  OIAN_MARK_ATTRIBUTES = record
    uType: integer;
    lrBounds: TRect;
    rgbColor1: TRGBQUAD;
    rgbColor2: TRGBQUAD;
    bHighlighting: longbool;
    bTransparent: longbool;
    uLineSize: dword;
    uReserved1: dword;
    uReserved2: dword;
    lfFont: TLOGFONT;
    bReserved3: dword;
    Time: integer;
    bVisible: longbool;
    dwReserved4: dword;
    lReserved: array[0..9] of integer;
  end;

{!!
<FS>TIEImagingObject

<FM>Declaration<FC>
TIEImagingObject = class
private
  attrib: OIAN_MARK_ATTRIBUTES;
  points: PIEPointArray;
  pointsLen: integer;
  text: pchar;
  image: TIEBitmap;
public
  constructor Create;

⌨️ 快捷键说明

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