📄 hyieutils.pas
字号:
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 + -