// Borland C++ Builder
// Copyright (c) 1995, 1999 by Borland International
// All rights reserved

// (DO NOT EDIT: machine generated header) 'hyieutils.pas' rev: 5.00

#ifndef hyieutilsHPP
#define hyieutilsHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <iewords.hpp>	// Pascal unit
#include <hyiedefs.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <StdCtrls.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Messages.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Hyieutils
{
//-- type declarations -------------------------------------------------------
struct THash1Item;
typedef THash1Item *PHash1Item;

struct THash1Item
{
	int key;
	THash1Item *nextitem;
} ;

class DELPHICLASS THash1;
class PASCALIMPLEMENTATION THash1 : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	int *fMainKeys;
	Byte *fMainKeysUse;
	int fHbits;
	int fHdim;
	int __fastcall HashFunc(int kk);
	
public:
	int nkeys;
	__fastcall THash1(int Hbits);
	__fastcall virtual ~THash1(void);
	bool __fastcall Insert(int kk);
	bool __fastcall KeyPresent(int kk);
};


class DELPHICLASS TImageEnPaletteDialog;
class PASCALIMPLEMENTATION TImageEnPaletteDialog : public Forms::TForm 
{
	typedef Forms::TForm inherited;
	
private:
	int MouseCol;
	Hyiedefs::TRGB *fPalette;
	int fNumCol;
	void __fastcall FormPaint(System::TObject* Sender);
	void __fastcall FormMouseMove(System::TObject* Sender, Classes::TShiftState Shift, int x, int y);
	void __fastcall FormClick(System::TObject* Sender);
	
public:
	Stdctrls::TButton* ButtonCancel;
	Graphics::TColor SelCol;
	__property int NumCol = {read=MouseCol, nodefault};
	__fastcall virtual TImageEnPaletteDialog(Classes::TComponent* AOwner);
	void __fastcall SetPalette(Hyiedefs::TRGB * Palette, const int Palette_Size, int NumCol);
	bool __fastcall Execute(void);
public:
	#pragma option push -w-inl
	/* TCustomForm.CreateNew */ inline __fastcall virtual TImageEnPaletteDialog(Classes::TComponent* AOwner
		, int Dummy) : Forms::TForm(AOwner, Dummy) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TCustomForm.Destroy */ inline __fastcall virtual ~TImageEnPaletteDialog(void) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TWinControl.CreateParented */ inline __fastcall TImageEnPaletteDialog(HWND ParentWindow) : Forms::TForm(
		ParentWindow) { }
	#pragma option pop
	
};


class DELPHICLASS TIEScrollBarParams;
class PASCALIMPLEMENTATION TIEScrollBarParams : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	int fLineStep;
	int fPageStep;
	bool fTracking;
	
public:
	__fastcall TIEScrollBarParams(void);
	__fastcall virtual ~TIEScrollBarParams(void);
	__property int LineStep = {read=fLineStep, write=fLineStep, nodefault};
	__property int PageStep = {read=fPageStep, write=fPageStep, nodefault};
	__property bool Tracking = {read=fTracking, write=fTracking, nodefault};
};


#pragma option push -b-
enum hyieutils__5 { iemwNone, iemwVScroll, iemwZoom };
#pragma option pop

#pragma option push -b-
enum hyieutils__6 { iemwAbsolute, iemwPercentage };
#pragma option pop

class DELPHICLASS TIEMouseWheelParams;
class PASCALIMPLEMENTATION TIEMouseWheelParams : public System::TObject 
{
	typedef System::TObject inherited;
	
public:
	bool InvertDirection;
	hyieutils__5 Action;
	hyieutils__6 Variation;
	int Value;
	__fastcall TIEMouseWheelParams(void);
	__fastcall virtual ~TIEMouseWheelParams(void);
};


class DELPHICLASS TIEHint;
class PASCALIMPLEMENTATION TIEHint : public Controls::TCustomControl 
{
	typedef Controls::TCustomControl inherited;
	
private:
	AnsiString fText;
	Graphics::TFont* fFont;
	HIDESBASE void __fastcall SetText(AnsiString s);
	HIDESBASE void __fastcall SetFont(Graphics::TFont* f);
	
protected:
	virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
	HIDESBASE MESSAGE void __fastcall WMNCHitTest(Messages::TWMNCHitTest &Message);
	HIDESBASE MESSAGE void __fastcall WMNCPaint(Messages::TMessage &Message);
	
public:
	__fastcall virtual TIEHint(Classes::TComponent* Owner);
	__fastcall virtual ~TIEHint(void);
	virtual void __fastcall Paint(void);
	__property AnsiString Text = {read=fText, write=SetText};
	__property Graphics::TFont* Font = {read=fFont, write=SetFont};
public:
	#pragma option push -w-inl
	/* TWinControl.CreateParented */ inline __fastcall TIEHint(HWND ParentWindow) : Controls::TCustomControl(
		ParentWindow) { }
	#pragma option pop
	
};


class DELPHICLASS TIEByteArray;
class PASCALIMPLEMENTATION TIEByteArray : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	int fSize;
	int fRSize;
	int fBlockSize;
	void __fastcall SetSize(int v);
	
public:
	Byte *Data;
	__fastcall TIEByteArray(void);
	__fastcall virtual ~TIEByteArray(void);
	void __fastcall AddByte(Byte v);
	__property int Size = {read=fSize, write=SetSize, nodefault};
	__property int BlockSize = {read=fBlockSize, write=fBlockSize, nodefault};
	void __fastcall Clear(void);
	int __fastcall AppendFromStream(Classes::TStream* Stream, int Count);
};


class DELPHICLASS TNulStream;
class PASCALIMPLEMENTATION TNulStream : public Classes::TStream 
{
	typedef Classes::TStream inherited;
	
private:
	int fposition;
	int fsize;
	
public:
	__fastcall TNulStream(void);
	__fastcall virtual ~TNulStream(void);
	virtual int __fastcall Read(void *Buffer, int Count);
	virtual int __fastcall Write(const void *Buffer, int Count);
	virtual int __fastcall Seek(int Offset, Word Origin);
};


#pragma option push -b-
enum hyieutils__01 { ielItems, ielRange, ielCurrentValue };
#pragma option pop

typedef Set<hyieutils__01, ielItems, ielCurrentValue>  TIEListChanges;

class DELPHICLASS TIEList;
class PASCALIMPLEMENTATION TIEList : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	int fCount;
	
protected:
	int fItemSize;
	void *fData;
	TIEListChanges fChanged;
	virtual void __fastcall SetCount(int v);
	int __fastcall AddItem(void * v);
	void __fastcall InsertItem(int idx, void * v);
	int __fastcall IndexOfItem(void * v);
	void * __fastcall BaseGetItem(int idx);
	void __fastcall BaseSetItem(int idx, void * v);
	
public:
	__fastcall virtual TIEList(void);
	__fastcall virtual ~TIEList(void);
	virtual void __fastcall Delete(int idx);
	__property int Count = {read=fCount, write=SetCount, nodefault};
	virtual void __fastcall Clear(void);
	virtual void __fastcall Assign(TIEList* Source);
	__property TIEListChanges Changed = {read=fChanged, write=fChanged, nodefault};
};


class DELPHICLASS TIEDoubleList;
class PASCALIMPLEMENTATION TIEDoubleList : public TIEList 
{
	typedef TIEList inherited;
	
private:
	double fRangeMin;
	double fRangeMax;
	double fRangeStep;
	double fCurrentValue;
	double __fastcall GetItem(int idx);
	void __fastcall SetItem(int idx, double v);
	void __fastcall SetRangeMax(double v);
	void __fastcall SetRangeMin(double v);
	void __fastcall SetRangeStep(double v);
	void __fastcall SetCurrentValue(double v);
	
public:
	int __fastcall Add(double v);
	void __fastcall Insert(int idx, double v);
	virtual void __fastcall Clear(void);
	int __fastcall IndexOf(double v);
	__property double RangeMin = {read=fRangeMin, write=SetRangeMin};
	__property double RangeMax = {read=fRangeMax, write=SetRangeMax};
	__property double RangeStep = {read=fRangeStep, write=SetRangeStep};
	__property double Items[int idx] = {read=GetItem, write=SetItem/*, default*/};
	virtual void __fastcall Assign(TIEList* Source);
	__property double CurrentValue = {read=fCurrentValue, write=SetCurrentValue};
public:
	#pragma option push -w-inl
	/* TIEList.Create */ inline __fastcall virtual TIEDoubleList(void) : TIEList() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TIEList.Destroy */ inline __fastcall virtual ~TIEDoubleList(void) { }
	#pragma option pop
	
};


class DELPHICLASS TIEIntegerList;
class PASCALIMPLEMENTATION TIEIntegerList : public TIEList 
{
	typedef TIEList inherited;
	
private:
	int fRangeMin;
	int fRangeMax;
	int fRangeStep;
	int fCurrentValue;
	int __fastcall GetItem(int idx);
	void __fastcall SetItem(int idx, int v);
	void __fastcall SetRangeMax(int v);
	void __fastcall SetRangeMin(int v);
	void __fastcall SetRangeStep(int v);
	void __fastcall SetCurrentValue(int v);
	
public:
	int __fastcall Add(int v);
	void __fastcall Insert(int idx, int v);
	virtual void __fastcall Clear(void);
	int __fastcall IndexOf(int v);
	__property int RangeMin = {read=fRangeMin, write=SetRangeMin, nodefault};
	__property int RangeMax = {read=fRangeMax, write=SetRangeMax, nodefault};
	__property int RangeStep = {read=fRangeStep, write=SetRangeStep, nodefault};
	__property int Items[int idx] = {read=GetItem, write=SetItem/*, default*/};
	virtual void __fastcall Assign(TIEList* Source);
	__property int CurrentValue = {read=fCurrentValue, write=SetCurrentValue, nodefault};
public:
	#pragma option push -w-inl
	/* TIEList.Create */ inline __fastcall virtual TIEIntegerList(void) : TIEList() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TIEList.Destroy */ inline __fastcall virtual ~TIEIntegerList(void) { }
	#pragma option pop
	
};


class DELPHICLASS TIERecordList;
class PASCALIMPLEMENTATION TIERecordList : public TIEList 
{
	typedef TIEList inherited;
	
private:
	void * __fastcall GetItem(int idx);
	void __fastcall SetItem(int idx, void * v);
	
public:
	int __fastcall Add(void * v);
	void __fastcall Insert(int idx, void * v);
	int __fastcall IndexOf(void * v);
	__property void * Items[int idx] = {read=GetItem, write=SetItem/*, default*/};
	__fastcall TIERecordList(int RecordSize);
public:
	#pragma option push -w-inl
	/* TIEList.Create */ inline __fastcall virtual TIERecordList(void) : TIEList() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TIEList.Destroy */ inline __fastcall virtual ~TIERecordList(void) { }
	#pragma option pop
	
};


class DELPHICLASS TIEMarkerList;
class PASCALIMPLEMENTATION TIEMarkerList : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	Classes::TList* fData;
	Classes::TList* fType;
	int __fastcall GetCount(void);
	char * __fastcall GetMarkerData(int idx);
	Classes::TStream* __fastcall GetMarkerStream(int idx);
	Byte __fastcall GetMarkerType(int idx);
	Word __fastcall GetMarkerLength(int idx);
	
public:
	__fastcall TIEMarkerList(void);
	__fastcall virtual ~TIEMarkerList(void);
	int __fastcall AddMarker(Byte marker, char * data, Word datalen);
	void __fastcall SetMarker(int idx, Byte marker, char * data, Word datalen);
	void __fastcall InsertMarker(int idx, char * data, Byte marker, Word datalen);
	void __fastcall Clear(void);
	__property char * MarkerData[int idx] = {read=GetMarkerData};
	__property Classes::TStream* MarkerStream[int idx] = {read=GetMarkerStream};
	__property Word MarkerLength[int idx] = {read=GetMarkerLength};
	__property Byte MarkerType[int idx] = {read=GetMarkerType};
	int __fastcall IndexOf(Byte marker);
	void __fastcall SaveToStream(Classes::TStream* Stream);
	void __fastcall LoadFromStream(Classes::TStream* Stream);
	void __fastcall DeleteMarker(int idx);
	__property int Count = {read=GetCount, nodefault};
	void __fastcall Assign(TIEMarkerList* Source);
};


#pragma pack(push, 1)
struct TIPTCInfo
{
	int fRecord;
	int fDataSet;
	int fLength;
} ;
#pragma pack(pop)

typedef TIPTCInfo *PIPTCInfo;

class DELPHICLASS TIEIPTCInfoList;
class PASCALIMPLEMENTATION TIEIPTCInfoList : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	Classes::TList* fBuffer;
	Classes::TList* fInfo;
	bool fUserChanged;
	AnsiString __fastcall GetStrings(int idx);
	void __fastcall SetStrings(int idx, AnsiString Value);
	int __fastcall GetRecordNumber(int idx);
	void __fastcall SetRecordNumber(int idx, int Value);
	int __fastcall GetDataSet(int idx);
	void __fastcall SetDataSet(int idx, int Value);
	int __fastcall GetCount(void);
	
public:
	__fastcall TIEIPTCInfoList(void);
	__fastcall virtual ~TIEIPTCInfoList(void);
	__property AnsiString StringItem[int idx] = {read=GetStrings, write=SetStrings};
	__property int RecordNumber[int idx] = {read=GetRecordNumber, write=SetRecordNumber};
	__property int DataSet[int idx] = {read=GetDataSet, write=SetDataSet};
	int __fastcall AddStringItem(int RecordNumber, int DataSet, AnsiString Value);
	int __fastcall AddBufferItem(int RecordNumber, int DataSet, void * Buffer, int BufferLength);
	void __fastcall InsertStringItem(int idx, int RecordNumber, int DataSet, AnsiString Value);
	void __fastcall Clear(void);
	int __fastcall IndexOf(int RecordNumber, int DataSet);
	void __fastcall DeleteItem(int idx);
	__property int Count = {read=GetCount, nodefault};
	void __fastcall Assign(TIEIPTCInfoList* Source);
	void __fastcall SaveToStream(Classes::TStream* Stream);
	void __fastcall LoadFromStream(Classes::TStream* Stream);
	void __fastcall LoadFromStandardBuffer(void * Buffer, int BufferLength);
	void __fastcall SaveToStandardBuffer(void * &Buffer, int &BufferLength);
	__property bool UserChanged = {read=fUserChanged, nodefault};
};


class DELPHICLASS TIEMask;
class PASCALIMPLEMENTATION TIEMask : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	int fWidth;
	int fHeight;
	int fBitsperpixel;
	int fRowlen;
	Byte *fBits;
	int fX1;
	int fY1;
	int fX2;
	int fY2;
	#pragma pack(push, 1)
	Hyiedefs::TBitmapInfoHeader256 fBitmapInfoHeader1;
	#pragma pack(pop)
	
	void __fastcall DrawHorizontalLine(int Alpha, int xleft, int xright, int y);
	void __fastcall DrawSinglePolygon(int Alpha, Hyiedefs::PPointArray SelPoly, int SelPolyCount);
	void __fastcall ResizeBits(int width, int height);
	
public:
	__fastcall TIEMask(void);
	__fastcall virtual ~TIEMask(void);
	void __fastcall SetPixel(int x, int y, int Alpha);
	int __fastcall GetPixel(int x, int y);
	void __fastcall AllocateBits(int width, int height, int bitsperpixel);
	void __fastcall FreeBits(void);
	void __fastcall CopyBitmap(Graphics::TBitmap* Dest, Graphics::TBitmap* Source);
	void __fastcall DrawPolygon(int Alpha, Hyiedefs::PPointArray SelPoly, int SelPolyCount);
	void __fastcall Fill(int Alpha);
	bool __fastcall IsPointInside(int x, int y);
	void __fastcall TranslateBitmap(int ox, int oy);
	void __fastcall InvertCanvas(Graphics::TCanvas* Dest, int xDst, int yDst, int dxDst, int dyDst, int 
		xMask, int yMask, int dxMask, int dyMask);
	__property int Width = {read=fWidth, nodefault};
	__property int Height = {read=fHeight, nodefault};
	__property int BitsPerPixel = {read=fBitsperpixel, nodefault};
};


struct TRC6Data
{
	Byte InitBlock[16];
	Byte LastBlock[16];
	unsigned KeyD[44];
} ;

//-- var, const, procedure ---------------------------------------------------
static const Shortint NUMROUNDS = 0x14;
extern PACKAGE int __fastcall _GetBitCount(int b);
extern PACKAGE int __fastcall _NColToBitsPixel(int NCol);
extern PACKAGE int __fastcall _BitmapRowLen(int Width, int BitCount);
extern PACKAGE int __fastcall _Pixelformat2BitCount(Graphics::TPixelFormat PixelFormat);
extern PACKAGE Graphics::TPixelFormat __fastcall _Bitcount2Pixelformat(int Bitcount);
extern PACKAGE void __fastcall ReverseBitsB(Byte &inp);
extern PACKAGE void __fastcall ReverseBits(unsigned &inp);
extern PACKAGE void __fastcall _CastPolySelCC(const int x1, const int y1, int &x2, int &y2);
extern PACKAGE bool __fastcall _RectXRect(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int 
	bx2, int by2);
extern PACKAGE int __fastcall _RectPRect(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2
	, int by2);
extern PACKAGE bool __fastcall _InRect(int xx, int yy, int x1, int y1, int x2, int y2);
extern PACKAGE bool __fastcall _InRectO(int xx, int yy, int x1, int y1, int x2, int y2);
extern PACKAGE int __fastcall _getfilesize(const AnsiString nf);
extern PACKAGE int __fastcall IEFindHandle(Classes::TComponent* cmp);
extern PACKAGE void __fastcall SaveStringToStream(Classes::TStream* Stream, const AnsiString ss);
extern PACKAGE void __fastcall LoadStringFromStream(Classes::TStream* Stream, AnsiString &ss);
extern PACKAGE int __fastcall _GetNumCol(int BitsPerSample, int SamplesPerPixel);
extern PACKAGE void __fastcall IESetTranslationWord(const Hyiedefs::TMsgLanguageR lang, const Hyiedefs::TMsgLanguageWords 
	msg, const AnsiString trans);
extern PACKAGE AnsiString __fastcall iemsg(const Hyiedefs::TMsgLanguageWords msg, const Hyiedefs::TMsgLanguageR 
	lang);
extern PACKAGE int __fastcall IEFloor(Extended X);
extern PACKAGE double __fastcall _DistPoint2Point(int x1, int y1, int x2, int y2);
extern PACKAGE double __fastcall _DistPoint2Line(int xp, int yp, int x1, int y1, int x2, int y2);
extern PACKAGE double __fastcall _DistPoint2Seg(int xp, int yp, int x1, int y1, int x2, int y2);
extern PACKAGE bool __fastcall RC6SelfTest(void);
extern PACKAGE void __fastcall RC6Init(TRC6Data &Data, void * Key, int Len, void * IV);
extern PACKAGE void __fastcall RC6Burn(TRC6Data &Data);
extern PACKAGE void __fastcall RC6EncryptECB(TRC6Data &Data, void * InData, void * OutData);
extern PACKAGE void __fastcall RC6DecryptECB(TRC6Data &Data, void * InData, void * OutData);
extern PACKAGE void __fastcall RC6EncryptCBC(TRC6Data &Data, void * InData, void * OutData);
extern PACKAGE void __fastcall RC6DecryptCBC(TRC6Data &Data, void * InData, void * OutData);
extern PACKAGE void __fastcall RC6EncryptCFB(TRC6Data &Data, void * InData, void * OutData, int Len)
	;
extern PACKAGE void __fastcall RC6DecryptCFB(TRC6Data &Data, void * InData, void * OutData, int Len)
	;
extern PACKAGE void __fastcall RC6EncryptOFB(TRC6Data &Data, void * InData, void * OutData);
extern PACKAGE void __fastcall RC6DecryptOFB(TRC6Data &Data, void * InData, void * OutData);
extern PACKAGE void __fastcall RC6EncryptOFBC(TRC6Data &Data, void * InData, void * OutData, int Len
	);
extern PACKAGE void __fastcall RC6DecryptOFBC(TRC6Data &Data, void * InData, void * OutData, int Len
	);
extern PACKAGE void __fastcall RC6Reset(TRC6Data &Data);
extern PACKAGE Byte __fastcall MMXSupported(void);

}	/* namespace Hyieutils */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Hyieutils;
#endif
#pragma option pop	// -w-
#pragma option pop	// -Vx

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// hyieutils
