// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'iemview.pas' rev: 30.00 (Windows)

#ifndef IemviewHPP
#define IemviewHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <Winapi.Windows.hpp>
#include <Winapi.Messages.hpp>
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
#include <Vcl.Graphics.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.Forms.hpp>
#include <System.Types.hpp>
#include <System.UITypes.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Clipbrd.hpp>
#include <Vcl.StdCtrls.hpp>
#include <hyieutils.hpp>
#include <hyiedefs.hpp>
#include <imageenview.hpp>
#include <imageenproc.hpp>
#include <imageenio.hpp>
#include <ieview.hpp>
#include <iemio.hpp>
#include <iepresetim.hpp>
#include <ievect.hpp>
#include <ieanimation.hpp>
#include <iexTransitions.hpp>
#include <Vcl.Menus.hpp>

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

namespace Iemview
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TIEMText;
struct TIEImageInfo;
class DELPHICLASS TIEStarter;
class DELPHICLASS TIECachedIcon;
class DELPHICLASS TIECachedIconList;
class DELPHICLASS TIEMViewerGestures;
class DELPHICLASS TImageEnMView;
//-- type declarations -------------------------------------------------------
typedef void __fastcall (__closure *TIEImageAddEvent)(System::TObject* Sender, int idx, const System::UnicodeString sFilename, bool bFolder, bool bHiddenFile, __int64 iFileSizeBytes, System::TDateTime CreateDate, System::TDateTime EditDate, bool &bAllow);

typedef void __fastcall (__closure *TIEImageSelectEvent)(System::TObject* Sender, int idx);

typedef void __fastcall (__closure *TIESelectionChangingEvent)(System::TObject* Sender, bool &bAllow);

typedef void __fastcall (__closure *TIECheckboxClickEvent)(System::TObject* Sender, int idx, bool &bChecked);

typedef void __fastcall (__closure *TIEImageIDRequestEvent)(System::TObject* Sender, int Index, int ID, Vcl::Graphics::TBitmap* &Bitmap);

typedef void __fastcall (__closure *TIEImageIDRequestExEvent)(System::TObject* Sender, int Index, int ID, Hyieutils::TIEBitmap* &Bitmap);

typedef void __fastcall (__closure *TIEMProgressEvent)(System::TObject* Sender, int per, int idx);

typedef void __fastcall (__closure *TIEWrongImageEvent)(System::TObject* Sender, Hyieutils::TIEBitmap* OutBitmap, int idx, bool &Handled);

typedef void __fastcall (__closure *TIEImageDrawEvent)(System::TObject* Sender, int idx, int Left, int Top, Vcl::Graphics::TCanvas* Canvas);

typedef void __fastcall (__closure *TIEImageDraw2Event)(System::TObject* Sender, int idx, int Left, int Top, const System::Types::TRect &ImageRect, Vcl::Graphics::TCanvas* Canvas);

typedef void __fastcall (__closure *TIEImageDrawEventEx)(System::TObject* Sender, int idx, int Left, int Top, Vcl::Graphics::TBitmap* Dest, System::Types::TRect &ThumbRect);

typedef void __fastcall (__closure *TIEImageAtPosEvent)(System::TObject* Sender, int &idx, int x, int y);

typedef void __fastcall (__closure *TIECreateImageEvent)(System::TObject* Sender, int idx);

typedef void __fastcall (__closure *TIEDestroyImageEvent)(System::TObject* Sender, int idx);

typedef void __fastcall (__closure *TIEProcessStreamEvent)(System::TObject* Sender, System::Classes::TStream* Stream, System::Byte Version);

typedef int __fastcall (*TIEImageEnMViewSortCompare)(int Item1, int Item2);

typedef int __fastcall (__closure *TIEImageEnMViewSortCompareEx)(int Item1, int Item2);

enum DECLSPEC_DENUM TIEImageEnMViewSortBy : unsigned char { iesbFilename, iesbTopText, iesbBottomText, iesbInfoText, iesbImageSize, iesbFilenameWithoutPath, iesbFileExtension, iesbFileSize, iesbCreateDate, iesbEditDate, iesbFileType, iesbCustom, iesbNone };

enum DECLSPEC_DENUM TIEImageEnMViewIconSize : unsigned char { ieicStandardSize, ieicDoubleSize, ieicStretchHD, ieicStretchAll };

enum DECLSPEC_DENUM TIEMCheckboxType : unsigned char { iecbNone, iecbShowOnHover, iecbAlways };

enum DECLSPEC_DENUM TIEMCheckboxPos : unsigned char { iecpTopLeft, iecpTopRight, iecpBottomLeft, iecpBottomRight };

enum DECLSPEC_DENUM TIEImageEnMViewDefaultText : unsigned char { iedtNone, iedtFilename, iedtFilenameNoExt, iedtFilePath, iedtImageDimensions, iedtImageDimAndSize, iedtFileSize, iedtFileCreateDate, iedtFileCreateDateTime, iedtFileCreateDateAndSize, iedtFileEditDate, iedtFileEditDateTime, iedtFileEditDateAndSize, iedtFileType };

enum DECLSPEC_DENUM TIEStoreType : unsigned char { ietNormal, ietThumb, ietFastThumb };

enum DECLSPEC_DENUM TIESourceType : unsigned char { iestDefault, iestFileIcon, iestFolderIcon, iestCustomImage };

enum DECLSPEC_DENUM TIEFolderImageType : unsigned char { ieftSupportedImage, ieftFile, ieftFolder };

enum DECLSPEC_DENUM TIEMTextPos : unsigned char { iemtpTop, iemtpBottom, iemtpInfo };

typedef void __fastcall (__closure *TIEGetTextEvent)(System::TObject* Sender, int Index, TIEMTextPos Position, System::WideString &Text);

#pragma pack(push,4)
class PASCALIMPLEMENTATION TIEMText : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	System::WideString fCaption;
	Vcl::Graphics::TFont* fFont;
	System::Uitypes::TColor fBackground;
	Vcl::Graphics::TBrushStyle fBackgroundStyle;
	System::Classes::TComponent* fOwner;
	TIEMTextPos fPos;
	Hyieutils::TIEMTruncSide fTruncSide;
	void __fastcall SetCaption(System::WideString value);
	
public:
	__fastcall TIEMText(System::Classes::TComponent* Owner, TIEMTextPos Position);
	__fastcall virtual ~TIEMText(void);
	void __fastcall SaveToStream(System::Classes::TStream* Stream);
	bool __fastcall LoadFromStream(System::Classes::TStream* Stream);
	__property System::WideString Caption = {read=fCaption, write=SetCaption};
	__property Vcl::Graphics::TFont* Font = {read=fFont};
	__property System::Uitypes::TColor Background = {read=fBackground, write=fBackground, nodefault};
	__property Vcl::Graphics::TBrushStyle BackgroundStyle = {read=fBackgroundStyle, write=fBackgroundStyle, nodefault};
	__property Hyieutils::TIEMTruncSide TruncSide = {read=fTruncSide, write=fTruncSide, nodefault};
};

#pragma pack(pop)

struct DECLSPEC_DRECORD TIEImageInfo
{
public:
	System::TObject* parent;
	void *image;
	void *cacheImage;
	int X;
	int Y;
	int row;
	int col;
	System::Uitypes::TColor Background;
	System::WideChar *Filename;
	int ID;
	double DTime;
	TIEMText* TopText;
	TIEMText* BottomText;
	TIEMText* InfoText;
	System::Types::TRect internalrect;
	int tag;
	void *userPointer;
	TIESourceType SourceType;
	bool Checked;
	System::TDateTime CreateDate;
	System::TDateTime EditDate;
	__int64 FileSize;
	int FileTypeIndex;
};


typedef TIEImageInfo *PIEImageInfo;

enum DECLSPEC_DENUM TIEMThumbnailOptionsExItems : unsigned char { ietxCenterThumbnailColumn, ietxShowIconForUnknownFormat, ietxShowIconWhileLoading, ietxShowShadowForIcons, ietxShowShadowForFolders };

typedef System::Set<TIEMThumbnailOptionsExItems, TIEMThumbnailOptionsExItems::ietxCenterThumbnailColumn, TIEMThumbnailOptionsExItems::ietxShowShadowForFolders> TIEMThumbnailOptionsEx;

enum DECLSPEC_DENUM TIEMMouseInteractItems : unsigned char { mmiScroll, mmiSelect };

typedef System::Set<TIEMMouseInteractItems, TIEMMouseInteractItems::mmiScroll, TIEMMouseInteractItems::mmiSelect> TIEMMouseInteract;

enum DECLSPEC_DENUM TIEMKeyInteractItems : unsigned char { mkiMoveSelected };

typedef System::Set<TIEMKeyInteractItems, TIEMKeyInteractItems::mkiMoveSelected, TIEMKeyInteractItems::mkiMoveSelected> TIEMKeyInteract;

enum DECLSPEC_DENUM TIEMDisplayMode : unsigned char { mdGrid, mdSingle };

enum DECLSPEC_DENUM TIESeek : unsigned char { iskLeft, iskRight, iskUp, iskDown, iskFirst, iskLast, iskPagDown, iskPagUp };

enum DECLSPEC_DENUM TIEMStyle : unsigned char { iemsFlat, iemsACD };

enum DECLSPEC_DENUM Iemview__2 : unsigned char { iemoRegion, iemoSelectOnMouseUp, iemoLeaveOneSelected, iemoRegionOnShift, iemoOptimizeForDragging, iemoSelectOnRightClick };

typedef System::Set<Iemview__2, Iemview__2::iemoRegion, Iemview__2::iemoSelectOnRightClick> TIEMultiSelectionOptions;

typedef void __fastcall (__closure *TIEPlayFrameEvent)(System::TObject* Sender, int FrameIndex, bool &bShowFrame);

class PASCALIMPLEMENTATION TIEStarter : public System::Classes::TThread
{
	typedef System::Classes::TThread inherited;
	
public:
	TImageEnMView* mview;
	NativeUInt resumeEvent;
	__fastcall TIEStarter(void);
	__fastcall virtual ~TIEStarter(void);
	virtual void __fastcall Execute(void);
};


enum DECLSPEC_DENUM TCachedIconType : unsigned char { citFullDraw, citIconOnly };

#pragma pack(push,4)
class PASCALIMPLEMENTATION TIECachedIcon : public System::TObject
{
	typedef System::TObject inherited;
	
public:
	Hyieutils::TIEBitmap* Bmp;
	System::UnicodeString Ext;
	__fastcall TIECachedIcon(Hyieutils::TIEBitmap* aBmp, const System::UnicodeString sExt);
	__fastcall virtual ~TIECachedIcon(void);
	bool __fastcall MatchesExt(const System::UnicodeString sExt);
};

#pragma pack(pop)

class PASCALIMPLEMENTATION TIECachedIconList : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	TImageEnMView* fOwner;
	int fMaxIconCount;
	System::Classes::TList* fDataList;
	bool fOwnerSoftShadowEnabled;
	double fOwnerSoftShadowRadius;
	void __fastcall ClearLastItem(void);
	int __fastcall LookUpExt(const System::UnicodeString sExt);
	System::UnicodeString __fastcall GetCacheName(TCachedIconType aType, const System::UnicodeString sFilename, bool bIsFolder);
	
public:
	__fastcall TIECachedIconList(TImageEnMView* Owner, int iMaxIconCount);
	__fastcall virtual ~TIECachedIconList(void);
	void __fastcall Clear(void);
	bool __fastcall RetrieveFromCache(TCachedIconType aType, const System::UnicodeString sFilename, bool bIsFolder, Hyieutils::TIEBitmap* &Dest, bool bWantCopy);
	void __fastcall SaveToCache(Hyieutils::TIEBitmap* Image, TCachedIconType aType, const System::UnicodeString sFilename, bool bIsFolder);
};


typedef void __fastcall (__closure *TIEAnimationTextEvent)(System::TObject* Sender, int imageIndex, System::WideString &text);

enum DECLSPEC_DENUM TIEAfterEvent : unsigned char { ieaeMouseDown, ieaeMouseUp, ieaeKeyDown, ieaeKeyUp, ieaePaint };

typedef void __fastcall (__closure *TIEAfterEventEvent)(System::TObject* Sender, TIEAfterEvent Event);

#pragma pack(push,4)
class PASCALIMPLEMENTATION TIEMViewerGestures : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	Imageenview::TIEGesturePanOptions* fPan;
	Imageenview::TIEGestureZoomOptions* fZoom;
	bool __fastcall GetEnabled(void);
	
public:
	__fastcall TIEMViewerGestures(void);
	__fastcall virtual ~TIEMViewerGestures(void);
	__property bool Enabled = {read=GetEnabled, nodefault};
	__property Imageenview::TIEGesturePanOptions* Pan = {read=fPan};
	__property Imageenview::TIEGestureZoomOptions* Zoom = {read=fZoom};
};

#pragma pack(pop)

class PASCALIMPLEMENTATION TImageEnMView : public Ieview::TIEView
{
	typedef Ieview::TIEView inherited;
	
private:
	bool fMDown;
	Hyieutils::TIEBitmap* fBackBuffer;
	int fHSVX1;
	int fHSVY1;
	int fHoverCheckLastIdx;
	System::Types::TPoint fHoverCheckLastPos;
	System::Uitypes::TScrollStyle fScrollBars;
	double fRXScroll;
	double fRYScroll;
	int fViewX;
	int fViewY;
	Hyieutils::TIEVirtualImageList* fImageList;
	Hyieutils::TIEVirtualImageList* fCacheList;
	TIECachedIconList* fIconList;
	TIEStoreType fStoreType;
	int fThumbWidth;
	int fThumbHeight;
	double fZoom;
	int fHorizBorder;
	int fVertBorder;
	int fVWidth;
	int fVHeight;
	Imageenview::TViewChangeEvent fOnViewChange;
	TIEImageAtPosEvent fOnImageAtPos;
	TIECreateImageEvent fOnCreateImage;
	TIEDestroyImageEvent fOnDestroyImage;
	TIEMProgressEvent fOnDrawProgress;
	TIEWrongImageEvent fOnWrongImage;
	NativeUInt fHDrawDib;
	TIEImageIDRequestEvent fOnImageIDRequest;
	TIEImageIDRequestExEvent fOnImageIDRequestEx;
	TIEImageDrawEvent fOnImageDraw;
	TIEImageDraw2Event fOnImageDraw2;
	Hyiedefs::TIEProgressEvent fOnIOProgress;
	int fBottomGap;
	int fUpperGap;
	int fSideGap;
	bool fModernStyling;
	int fTextMargin;
	TIEMDisplayMode fDisplayMode;
	int fGridWidth;
	int fCurrentGridWidth;
	int fHSX1;
	int fHSY1;
	int fHSIDX;
	int fLHSIDX;
	bool fHSIDXSelected;
	int fSelectIdxOnMouseUp;
	int FLastRegionIdx;
	int fPriorHSIDX;
	int fLastMouseMoveX;
	int fLastMouseMoveY;
	Imageenio::TImageEnIO* fImageEnIO;
	int fLockPaint;
	int fLockUpdate;
	bool fRemoveCorrupted;
	bool fDrawImageBackground;
	bool fScrollBarsAlwaysVisible;
	Hyieutils::TIEScrollBarParams* fVScrollBarParams;
	Hyieutils::TIEScrollBarParams* fHScrollBarParams;
	Hyieutils::TIEMouseWheelParams* fMouseWheelParams;
	Hyiedefs::TResampleFilter fThumbnailResampleFilter;
	Hyiedefs::TResampleFilter fThumbnailDisplayFilter;
	int fThumbnailClipping;
	bool fDestroying;
	TIEMStyle fStyle;
	bool fDoubleClicking;
	System::Uitypes::TColor fThumbnailsBackground;
	System::Uitypes::TColor fThumbnailsBackgroundSelected;
	int fThumbnailsBorderWidth;
	System::Uitypes::TColor fThumbnailsBorderColor;
	bool fThumbnailsInternalBorder;
	System::Uitypes::TColor fThumbnailsInternalBorderColor;
	bool fUpdating;
	bool fEnableResamplingOnMinor;
	TIEImageEnMViewIconSize fIconSize;
	int fThumbsRounded;
	bool fEnableAdjustOrientation;
	bool fEnableLoadEXIFThumbnails;
	bool fEnableAlphaChannel;
	Hyiedefs::TIEBackgroundStyle fBackgroundStyle;
	Hyiedefs::TIEBackgroundStyle fThumbnailsBackgroundStyle;
	bool fFillThumbnail;
	TIEImageEnMViewSortCompare fCurrentCompare;
	TIEImageEnMViewSortCompareEx fCurrentCompareEx;
	TIEImageEnMViewSortBy fCurrentOrderBy;
	bool fCurrentAscending;
	bool fCurrentCaseSensitive;
	int fThreadPoolSize;
	System::Classes::TList* fThreadPoolIO;
	System::Classes::TList* fThreadRequests;
	TIEStarter* fThreadStarter;
	System::Classes::TList* fLookAheadList;
	Vcl::Graphics::TPicture* fWallPaper;
	Imageenview::TIEWallPaperStyle fWallPaperStyle;
	int fSelectedItem;
	bool fVisibleSelection;
	int fSelectionWidth;
	int fSelectionWidthNoFocus;
	bool fSelectionAntialiased;
	System::Uitypes::TColor fSelectionColor;
	TIEImageSelectEvent fOnImageSelect;
	TIEImageSelectEvent fOnImageDeselect;
	TIESelectionChangingEvent fOnSelectionChanging;
	TIEImageAddEvent fOnImageAdd;
	TIEGetTextEvent fOnGetText;
	TIEMMouseInteract fMouseInteract;
	TIEMThumbnailOptionsEx fThumbnailOptionsEx;
	TIEMKeyInteract fKeyInteract;
	Hyieutils::TIEBitmap* fSelectedBitmap;
	int fImageCacheSize;
	bool fImageCacheUseDisk;
	bool fMultiSelecting;
	bool fEnableMultiSelect;
	bool fHaveMultiselected;
	bool fSelectInclusive;
	TIEMultiSelectionOptions fMultiSelectionOptions;
	bool fSelectImages;
	bool fChangedSel;
	System::Uitypes::TColor fSelectedFontColor;
	bool fPlaying;
	int fPlayTimer;
	bool fPlayLoop;
	bool fTimerInProgress;
	int fFrame;
	TIEMDisplayMode fSaveDM;
	int fSaveSel;
	int fLastImOp;
	int fLastImIdx;
	int fLastImP1;
	Iextransitions::TIETransitionEffects* fTransition;
	Iextransitions::TIETransitionType fTransitionEffect;
	int fTransitionDuration;
	Hyiedefs::TIEProgressEvent fOnProgress;
	TIEImageDrawEvent fOnBeforeImageDraw;
	TIEImageDrawEventEx fOnBeforeImageDrawEx;
	bool fEnableImageCaching;
	Imageenview::TIEVSoftShadow* fSoftShadow;
	int fChessboardSize;
	Vcl::Graphics::TBrushStyle fChessboardBrushStyle;
	System::Uitypes::TColor fGradientEndColor;
	bool fShowText;
	int fSetUpperGap;
	int fSetBottomGap;
	bool fFlatScrollBars;
	Hyieutils::TIEBitmap* fThumbnailFrame;
	Hyieutils::TIEBitmap* fThumbnailFrameSelected;
	System::Types::TRect fThumbnailFrameRect;
	System::Classes::TList* fMultiOnDemands;
	int fMaintainInvisibleImages;
	int fLookAhead;
	System::Classes::TNotifyEvent fOnAllDisplayed;
	bool fAllDisplayed;
	bool fUserAction;
	System::Classes::TNotifyEvent fOnFinishWork;
	Imageenio::TIEAcquireBitmapEvent fOnAcquireBitmap;
	TIEPlayFrameEvent fOnPlayFrame;
	_RTL_CRITICAL_SECTION fThreadCS;
	Vcl::Graphics::TFont* fDefaultBottomTextFont;
	Vcl::Graphics::TFont* fDefaultTopTextFont;
	Vcl::Graphics::TFont* fDefaultInfoTextFont;
	Vcl::Graphics::TBrushStyle fDefaultTextBackgroundStyle;
	bool fTrackMouseSelection;
	bool fDrawMouseSelection;
	bool fCheckThumbBoundsOnSelect;
	bool fSelectedImageAlwaysVisible;
	TIEAfterEventEvent fOnAfterEvent;
	System::Classes::TStringList* fFileTypeList;
	Ieanimation::TIEAnimation* fAnimation;
	Vcl::Extctrls::TTimer* fAnimationTimer;
	bool fAnimationDraggingSlider;
	TIEAnimationTextEvent fOnAnimationText;
	Vcl::Extctrls::TTimer* FDragScrollTimer;
	int FDragScrollCount;
	TIEMCheckboxType fCheckboxes;
	TIEMCheckboxPos fCheckboxPos;
	TIECheckboxClickEvent fOnCheckboxClick;
	int fCheckedCount;
	Vcl::Graphics::TBitmap* fCheckedBitmap;
	Vcl::Graphics::TBitmap* fUncheckedBitmap;
	System::Types::TPoint fCheckboxMargins;
	TIEMViewerGestures* fGestures;
	Imageenview::TIEImageEnGestureEvent fOnImageEnGesture;
	int fGestureStartX;
	int fGestureStartY;
	int fGestureBaseViewX;
	int fGestureBaseViewY;
	double fGestureBaseZoom;
	int fGestureStartValue;
	void __fastcall InitializeDragScrollTimer(void);
	void __fastcall TerminateDragScrollTimer(void);
	void __fastcall DragScrollTimer(System::TObject* Sender);
	System::UnicodeString __fastcall GetHintStr(int idx);
	void __fastcall GetMaxViewXY(int &mx, int &my);
	void __fastcall SetViewX(int v);
	void __fastcall SetViewY(int v);
	int __fastcall GetImageX(int idx);
	int __fastcall GetImageY(int idx);
	int __fastcall GetImageCol(int idx);
	int __fastcall GetImageRow(int idx);
	void __fastcall SetThumbWidth(int v);
	void __fastcall SetThumbHeight(int v);
	int __fastcall GetThumbWidth(void);
	int __fastcall GetThumbHeight(void);
	void __fastcall SetZoom(double value);
	int __fastcall GetImageCount(void);
	void __fastcall SetImageFileName(int idx, System::WideString v);
	System::WideString __fastcall GetImageFileName(int idx);
	void __fastcall SetImageID(int idx, int v);
	int __fastcall GetImageID(int idx);
	void __fastcall SetImageTag(int idx, int v);
	int __fastcall GetImageTag(int idx);
	void __fastcall SetImageUserPointer(int idx, void * v);
	void * __fastcall GetImageUserPointer(int idx);
	void __fastcall SetHorizBorder(int v);
	int __fastcall _GetHorizMargin(void);
	void __fastcall SetVertBorder(int v);
	int __fastcall _GetVertMargin(void);
	void __fastcall SetSelectedImageAlwaysVisible(bool v);
	bool __fastcall DeleteImageNU(int idx, bool bBatchProcessing = false);
	void __fastcall DeleteAllImages(void);
	void __fastcall SetCheckboxes(TIEMCheckboxType v);
	void __fastcall SetCheckboxPos(TIEMCheckboxPos v);
	bool __fastcall GetChecked(int index);
	void __fastcall SetChecked(int index, bool v);
	void __fastcall SetVisibleSelection(bool v);
	void __fastcall SetSelectionWidth(int v);
	void __fastcall SetSelectionWidthNoFocus(int v);
	void __fastcall SetSelectionAntialiased(bool v);
	void __fastcall SetSelectionColor(System::Uitypes::TColor v);
	void __fastcall SetSelectedItem(int v);
	void __fastcall SetBottomGap(int v);
	void __fastcall SetUpperGap(int v);
	void __fastcall SetSideGap(int v);
	void __fastcall SetTextMargin(int v);
	void __fastcall SetImageBackground(int idx, System::Uitypes::TColor v);
	System::Uitypes::TColor __fastcall GetImageBackground(int idx);
	void __fastcall SetImageDelayTime(int idx, double v);
	double __fastcall GetImageDelayTime(int idx);
	bool __fastcall ObtainImageNow(int idx);
	bool __fastcall ObtainImageThreaded(int idx, int priority);
	void __fastcall SetDisplayMode(TIEMDisplayMode v);
	void __fastcall SetGridWidth(int v);
	void __fastcall SetPlaying(bool v);
	void __fastcall PlayFrame(void);
	void __fastcall SetSelectedItemNU(int v);
	void __fastcall DeselectNU(void);
	void __fastcall SetVisibleFrame(int v);
	TIEMMouseInteract __fastcall GetMouseInteract(void);
	TIEMKeyInteract __fastcall GetKeyInteract(void);
	void __fastcall SetRemoveCorrupted(bool v);
	void __fastcall SetDrawImageBackground(bool v);
	bool __fastcall GetScrollBarsAlwaysVisible(void);
	void __fastcall SetScrollBarsAlwaysVisible(bool v);
	void __fastcall SetImageCacheSize(int v);
	void __fastcall SetImageCacheUseDisk(bool v);
	bool __fastcall GetTransitionRunning(void);
	TIEMText* __fastcall GetImageTopText(int idx);
	TIEMText* __fastcall GetImageBottomText(int idx);
	TIEMText* __fastcall GetImageInfoText(int idx);
	void __fastcall SetStyle(TIEMStyle value);
	void __fastcall SetEnableMultiSelect(bool Value);
	int __fastcall GetMultiSelectedImages(int index);
	int __fastcall GetMultiSelectedImagesCount(void);
	Hyiedefs::TIEArrayOfInteger __fastcall GetMultiSelectedImagesList(void);
	void __fastcall SetThumbnailsBorderWidth(int Value);
	void __fastcall SetThumbnailsBorderColor(System::Uitypes::TColor Value);
	void __fastcall SetThumbnailsInternalBorder(bool Value);
	void __fastcall SetThumbnailsInternalBorderColor(System::Uitypes::TColor Value);
	void __fastcall SetEnableResamplingOnMinor(bool Value);
	void __fastcall SetIconSize(TIEImageEnMViewIconSize Value);
	void __fastcall DrawImage(Vcl::Graphics::TBitmap* DestBitmap, PIEImageInfo info, bool IsSelected, int Index);
	void __fastcall ThreadFinish(System::TObject* Sender);
	int __fastcall GetImageBitCount(int idx);
	int __fastcall GetMaximumViewX(void);
	int __fastcall GetMaximumViewY(void);
	void __fastcall SetEnableImageCaching(bool v);
	bool __fastcall SetImageFromStreamOrFile(int idx, System::Classes::TStream* Stream, const System::WideString FileName, int SourceImageIndex);
	void __fastcall SetEnableAlphaChannel(bool v);
	void __fastcall SetBackgroundStyle(Hyiedefs::TIEBackgroundStyle v);
	void __fastcall SetThumbnailsBackgroundStyle(Hyiedefs::TIEBackgroundStyle v);
	void __fastcall SetGradientEndColor(System::Uitypes::TColor Value);
	void __fastcall SetFillThumbnail(bool Value);
	void __fastcall SetShowText(bool Value);
	void __fastcall SetThumbnailClipping(int Value);
	void __fastcall SetFlatScrollBars(bool Value);
	int __fastcall GetJobsRunning(void);
	int __fastcall GetJobsWaiting(void);
	int __fastcall SortCompareFunction(int index1, int index2);
	int __fastcall SortCompareBy(int index1, int index2);
	Imageenio::TImageEnIO* __fastcall GetOnDemandIO(const System::WideString filename, int &FrameIndex);
	void __fastcall ClearOnDemandIOList(void);
	void __fastcall LoadMultiOnDemand(Imageenio::TImageEnIO* io, int frameindex, double &dt);
	bool __fastcall IsOnDemand(PIEImageInfo info);
	bool __fastcall IsLookAhead(int idx);
	virtual void __fastcall SetOnFinishWork(System::Classes::TNotifyEvent v);
	virtual System::Classes::TNotifyEvent __fastcall GetOnFinishWork(void);
	virtual void __fastcall SetOnAcquireBitmap(Imageenio::TIEAcquireBitmapEvent v);
	virtual Imageenio::TIEAcquireBitmapEvent __fastcall GetOnAcquireBitmap(void);
	System::UnicodeString __fastcall GetImageEnVersion(void);
	void __fastcall SetImageEnVersion(System::UnicodeString Value);
	void __fastcall AbortImageLoading(int idx);
	void __fastcall Sort2(TIEImageEnMViewSortCompare Compare, TIEImageEnMViewSortCompareEx CompareEx);
	int __fastcall ImageAtPosWithCheckEvent(int x, int y, bool checkBounds, bool bRelativeToWindow = true);
	void __fastcall SetAnimation(Ieanimation::TIEAnimation* value);
	void __fastcall AnimGetImageInfo(System::TObject* Sender, int imageIndex, bool isVisible, int &ImageWidth, int &ImageHeight, System::WideString &text);
	void __fastcall AnimGetImage(System::TObject* Sender, int imageIndex, Hyieutils::TIEBitmap* &image, System::WideString &text);
	void __fastcall AnimReleaseImage(System::TObject* Sender, int imageIndex, Hyieutils::TIEBitmap* &image);
	void __fastcall AnimPaintTo(Hyieutils::TIEBitmap* dest);
	void __fastcall AnimTimer(System::TObject* Sender);
	void __fastcall CheckSelectedImageIsVisible(void);
	void __fastcall DoAfterEvent(TIEAfterEvent e);
	void __fastcall _InsertImage(int idx, bool bSelectIt);
	void __fastcall ProcessUndoRedo(System::TObject* Sender, bool bIsUndo, Imageenproc::TIEUndoSource Source, System::TObject* UndoObj, int iIndex, bool &bHandled);
	bool __fastcall CheckSelectionChangingAllowed(void);
	HIDESBASE MESSAGE void __fastcall WMGestureNotify(Hyiedefs::TIEWMGestureNotify &Msg);
	MESSAGE void __fastcall WMEnabled(Winapi::Messages::TMessage &Msg);
	HIDESBASE MESSAGE void __fastcall WMGesture(Winapi::Messages::TMessage &Msg);
	virtual void __fastcall DoImageEnGestureEvent(const Hyiedefs::TIEGESTUREINFO &GInfo, bool &Handled);
	double __fastcall PerformZoomSnap(double Value);
	
protected:
	Iemio::TImageEnMIO* fImageEnMIO;
	Imageenproc::TImageEnProc* fImageEnProc;
	System::Classes::TList* fMultiSelectedImages;
	System::Classes::TList* fImageInfo;
	bool fShowThumbnailHint;
	bool fDragging;
	virtual Iemio::TImageEnMIO* __fastcall GetImageEnMIO(void);
	virtual Imageenproc::TImageEnProc* __fastcall GetImageEnProc(void);
	virtual void __fastcall SetScrollBars(System::Uitypes::TScrollStyle v);
	void __fastcall SetStoreType(TIEStoreType v);
	MESSAGE void __fastcall IEMAutoScroll(Winapi::Messages::TMessage &Message);
	HIDESBASE MESSAGE void __fastcall WMSize(Winapi::Messages::TWMSize &Message);
	HIDESBASE MESSAGE void __fastcall WMEraseBkgnd(Winapi::Messages::TMessage &Message);
	HIDESBASE MESSAGE void __fastcall WMVScroll(Winapi::Messages::TMessage &Message);
	HIDESBASE MESSAGE void __fastcall WMHScroll(Winapi::Messages::TMessage &Message);
	MESSAGE void __fastcall WMTimer(Winapi::Messages::TWMTimer &Message);
	MESSAGE void __fastcall CMWantSpecialKey(Winapi::Messages::TWMKey &Msg);
	HIDESBASE MESSAGE void __fastcall CNKEYUP(Winapi::Messages::TMessage &Message);
	DYNAMIC void __fastcall MouseDown(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseMove(System::Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseUp(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
	HIDESBASE MESSAGE void __fastcall WMLButtonDblClk(Winapi::Messages::TWMMouse &Message);
	HIDESBASE MESSAGE void __fastcall WMKillFocus(Winapi::Messages::TWMKillFocus &Msg);
	HIDESBASE MESSAGE void __fastcall WMSetFocus(Winapi::Messages::TWMSetFocus &Msg);
	HIDESBASE MESSAGE void __fastcall WMMouseWheel(Winapi::Messages::TMessage &Message);
	HIDESBASE MESSAGE void __fastcall WMNCPaint(Winapi::Messages::TMessage &Message);
	virtual void __fastcall ViewChange(int c);
	DYNAMIC bool __fastcall PaletteChanged(bool Foreground);
	virtual void __fastcall SetBackGround(System::Uitypes::TColor cl);
	virtual Vcl::Graphics::TBitmap* __fastcall GetFBitmap(void);
	virtual Hyieutils::TIEBitmap* __fastcall GetIEBitmap(void);
	void __fastcall SetThumbnailOptionsEx(TIEMThumbnailOptionsEx v);
	virtual void __fastcall SetMouseInteract(TIEMMouseInteract v);
	virtual void __fastcall SetKeyInteract(TIEMKeyInteract v);
	int __fastcall GetImageWidth(int idx);
	int __fastcall GetImageHeight(int idx);
	int __fastcall GetImageOriginalWidth(int idx);
	int __fastcall GetImageOriginalHeight(int idx);
	System::TDateTime __fastcall GetImageCreateDate(int idx);
	__int64 __fastcall GetImageFileSize(int idx);
	System::TDateTime __fastcall GetImageEditDate(int idx);
	System::WideString __fastcall GetImageFileType(int idx);
	TIEFolderImageType __fastcall GetImageType(int idx);
	void __fastcall SetImageOriginalWidth(int idx, int Value);
	void __fastcall SetImageOriginalHeight(int idx, int Value);
	void __fastcall SetImageCreateDate(int idx, System::TDateTime Value);
	void __fastcall SetImageFileSize(int idx, __int64 Value);
	void __fastcall SetImageEditDate(int idx, System::TDateTime Value);
	DYNAMIC void __fastcall KeyDown(System::Word &Key, System::Classes::TShiftState Shift);
	DYNAMIC void __fastcall KeyUp(System::Word &Key, System::Classes::TShiftState Shift);
	void __fastcall SelectAtPos(int X, int Y, System::Classes::TShiftState Shift);
	void __fastcall SetWallPaper(Vcl::Graphics::TPicture* Value);
	void __fastcall SetWallPaperStyle(Imageenview::TIEWallPaperStyle Value);
	virtual bool __fastcall GetHasAlphaChannel(void);
	virtual Hyieutils::TIEBitmap* __fastcall GetAlphaChannel(void);
	virtual void __fastcall SetOnProgress(Hyiedefs::TIEProgressEvent v);
	virtual Hyiedefs::TIEProgressEvent __fastcall GetOnProgress(void);
	virtual void __fastcall ClearThreadsAndRequests(void);
	void __fastcall ClearCache(void);
	virtual void __fastcall DoWrongImage(Hyieutils::TIEBitmap* OutBitmap, int idx, TIESourceType &ASourceType);
	virtual void __fastcall DoImageSelect(int idx);
	virtual void __fastcall DoImageDeselect(int idx);
	void __fastcall SwapImages(int idx1, int idx2);
	int __fastcall IsRequested(int idx);
	void __fastcall PaintBackgroundTo(Vcl::Graphics::TBitmap* DestBitmap);
	int __fastcall ImageAtPosEx(int x, int y, bool checkBounds = true, bool bRelativeToWindow = true);
	System::WideString __fastcall ReplaceIEMConsts(const System::WideString ws, int idx);
	void __fastcall GetFileDetailsForImage(int idx);
	void __fastcall DrawCheckbox(Vcl::Graphics::TCanvas* ACanvas, int Index, const System::Types::TRect &ThumbRect, bool IsSelected, bool bRelativeToView = false)/* overload */;
	void __fastcall DrawCheckbox(Vcl::Graphics::TCanvas* ACanvas, int Index, bool IsSelected, bool bRelativeToView = false)/* overload */;
	int __fastcall CheckboxAtPos(int X, int Y);
	void __fastcall ClickCheckboxAtPos(int X, int Y);
	System::Types::TRect __fastcall ThumbToCheckboxRect(const System::Types::TRect &ThumbRect, bool bRelativeToView = false);
	void __fastcall _UpdateImage(int idx, bool bInvalidateOnly);
	
public:
	__fastcall virtual TImageEnMView(System::Classes::TComponent* Owner);
	__fastcall virtual ~TImageEnMView(void);
	virtual void __fastcall Update(void);
	void __fastcall UpdateEx(bool bUpdateCache, bool bRespositionSelection = false);
	HIDESBASE virtual void __fastcall PaintTo(Vcl::Graphics::TBitmap* DestBitmap);
	virtual void __fastcall PaintToCanvas(Vcl::Graphics::TCanvas* DestCanvas);
	virtual void __fastcall Paint(void);
	__property ClientWidth;
	__property ClientHeight;
	__property int ViewX = {read=fViewX, write=SetViewX, nodefault};
	__property int ViewY = {read=fViewY, write=SetViewY, nodefault};
	__property double Zoom = {read=fZoom, write=SetZoom};
	__property int MaximumViewX = {read=GetMaximumViewX, nodefault};
	__property int MaximumViewY = {read=GetMaximumViewY, nodefault};
	void __fastcall SetViewXY(int x, int y);
	void __fastcall CenterSelected(void);
	void __fastcall CenterFrame(void);
	virtual void __fastcall LockPaint(void);
	virtual void __fastcall LockUpdate(void);
	virtual int __fastcall UnLockPaint(void);
	virtual int __fastcall UnLockUpdate(void);
	int __fastcall UnLockUpdateEx(void);
	virtual int __fastcall NPUnLockPaint(void);
	__property int LockPaintCount = {read=fLockPaint, nodefault};
	__property int LockUpdateCount = {read=fLockUpdate, nodefault};
	__property Imageenview::TIEVSoftShadow* SoftShadow = {read=fSoftShadow};
	void __fastcall SetChessboardStyle(int Size, Vcl::Graphics::TBrushStyle BrushStyle);
	__property System::Uitypes::TColor GradientEndColor = {read=fGradientEndColor, write=SetGradientEndColor, nodefault};
	__property bool FillThumbnail = {read=fFillThumbnail, write=SetFillThumbnail, nodefault};
	void __fastcall SetModernStyling(bool bAutoGridWidth = false, int iThumbWidth = 0x0, int iThumbHeight = 0x0);
	__property int ThumbsRounded = {read=fThumbsRounded, write=fThumbsRounded, nodefault};
	void __fastcall SetPresetThumbnailFrame(int PresetIndex, System::Uitypes::TColor UnSelectedColor, System::Uitypes::TColor SelectedColor);
	__property Hyieutils::TIEBitmap* ThumbnailFrame = {read=fThumbnailFrame, write=fThumbnailFrame};
	__property Hyieutils::TIEBitmap* ThumbnailFrameSelected = {read=fThumbnailFrameSelected, write=fThumbnailFrameSelected};
	__property System::Types::TRect ThumbnailFrameRect = {read=fThumbnailFrameRect, write=fThumbnailFrameRect};
	__property MouseCapture;
	virtual void __fastcall Assign(System::Classes::TPersistent* Source);
	virtual void __fastcall SetBounds(int ALeft, int ATop, int AWidth, int AHeight);
	int __fastcall GetLastOp(void);
	int __fastcall GetLastOpIdx(void);
	int __fastcall GetLastOpP1(void);
	__property bool ScrollBarsAlwaysVisible = {read=GetScrollBarsAlwaysVisible, write=SetScrollBarsAlwaysVisible, nodefault};
	int __fastcall RemoveBlankPages(double Tolerance = 0.000000E+00, bool Complete = true, bool LeftToRight = true);
	int __fastcall CalcGridWidth(void);
	int __fastcall CalcGridHeight(void);
	__property Hyieutils::TIEScrollBarParams* VScrollBarParams = {read=fVScrollBarParams};
	__property Hyieutils::TIEScrollBarParams* HScrollBarParams = {read=fHScrollBarParams};
	__property Hyieutils::TIEMouseWheelParams* MouseWheelParams = {read=fMouseWheelParams};
	virtual void __fastcall RemoveAlphaChannel(bool Merge);
	virtual void __fastcall CallBitmapChangeEvents(void);
	void __fastcall FillFromDirectory(const System::WideString Directory, int Limit = 0xffffffff, bool AllowUnknownFormats = false, const System::WideString ExcludeExtensions = System::WideString(), bool DetectFileFormat = false, const System::WideString FilterMask = System::WideString(), bool IncludeVideoFiles = false, bool LoadOnDemand = true, TIEImageEnMViewDefaultText DefaultTopText = (TIEImageEnMViewDefaultText)(0x0), TIEImageEnMViewDefaultText DefaultInfoText = (TIEImageEnMViewDefaultText)(0x0), TIEImageEnMViewDefaultText DefaultBottomText = (TIEImageEnMViewDefaultText)(0x1), bool bShowHiddenFiles = false, bool bShowFolders = false);
	__property bool EnableAdjustOrientation = {read=fEnableAdjustOrientation, write=fEnableAdjustOrientation, nodefault};
	__property int MaintainInvisibleImages = {read=fMaintainInvisibleImages, write=fMaintainInvisibleImages, nodefault};
	void __fastcall LoadFromFileOnDemand(const System::WideString FileName, bool Append = false);
	__property bool EnableLoadEXIFThumbnails = {read=fEnableLoadEXIFThumbnails, write=fEnableLoadEXIFThumbnails, nodefault};
	void __fastcall CreateMorphingSequence(Ievect::TImageEnVect* Source, Ievect::TImageEnVect* Target, int FramesCount);
	__property int JobsRunning = {read=GetJobsRunning, nodefault};
	__property int JobsWaiting = {read=GetJobsWaiting, nodefault};
	__property int LookAhead = {read=fLookAhead, write=fLookAhead, nodefault};
	void __fastcall ClearImageCache(int idx);
	__property bool EnableImageCaching = {read=fEnableImageCaching, write=SetEnableImageCaching, default=1};
	__property int ImageWidth[int idx] = {read=GetImageWidth};
	__property int ImageHeight[int idx] = {read=GetImageHeight};
	__property int ImageOriginalWidth[int idx] = {read=GetImageOriginalWidth, write=SetImageOriginalWidth};
	__property int ImageOriginalHeight[int idx] = {read=GetImageOriginalHeight, write=SetImageOriginalHeight};
	__property int ImageBitCount[int idx] = {read=GetImageBitCount};
	__property int ImageX[int idx] = {read=GetImageX};
	__property int ImageY[int idx] = {read=GetImageY};
	__property int ImageRow[int idx] = {read=GetImageRow};
	__property int ImageCol[int idx] = {read=GetImageCol};
	__property System::WideString ImageFileName[int idx] = {read=GetImageFileName, write=SetImageFileName};
	__property int ImageID[int idx] = {read=GetImageID, write=SetImageID};
	__property int ImageTag[int idx] = {read=GetImageTag, write=SetImageTag};
	__property void * ImageUserPointer[int idx] = {read=GetImageUserPointer, write=SetImageUserPointer};
	__property System::Uitypes::TColor ImageBackground[int idx] = {read=GetImageBackground, write=SetImageBackground};
	__property double ImageDelayTime[int idx] = {read=GetImageDelayTime, write=SetImageDelayTime};
	__property System::TDateTime ImageCreateDate[int idx] = {read=GetImageCreateDate, write=SetImageCreateDate};
	__property System::TDateTime ImageEditDate[int idx] = {read=GetImageEditDate, write=SetImageEditDate};
	__property __int64 ImageFileSize[int idx] = {read=GetImageFileSize, write=SetImageFileSize};
	__property TIEMText* ImageTopText[int idx] = {read=GetImageTopText};
	__property TIEMText* ImageBottomText[int idx] = {read=GetImageBottomText};
	__property TIEMText* ImageInfoText[int idx] = {read=GetImageInfoText};
	__property Vcl::Graphics::TFont* DefaultBottomTextFont = {read=fDefaultBottomTextFont};
	__property Vcl::Graphics::TFont* DefaultTopTextFont = {read=fDefaultTopTextFont};
	__property Vcl::Graphics::TFont* DefaultInfoTextFont = {read=fDefaultInfoTextFont};
	__property Vcl::Graphics::TBrushStyle DefaultTextBackgroundStyle = {read=fDefaultTextBackgroundStyle, write=fDefaultTextBackgroundStyle, nodefault};
	__property bool ShowText = {read=fShowText, write=SetShowText, nodefault};
	void __fastcall UpdateImage(int idx);
	void __fastcall InsertImage(int Idx)/* overload */;
	void __fastcall InsertImage(int Idx, System::Classes::TStream* Stream)/* overload */;
	void __fastcall InsertImage(int Idx, Hyieutils::TIEBitmap* Bitmap)/* overload */;
	void __fastcall InsertImage(int Idx, Vcl::Graphics::TBitmap* Bitmap)/* overload */;
	void __fastcall InsertImage(int Idx, int Width, int Height, Hyieutils::TIEPixelFormat PixelFormat = (Hyieutils::TIEPixelFormat)(0x5))/* overload */;
	void __fastcall InsertImage(int Idx, const System::UnicodeString FileName)/* overload */;
	void __fastcall InsertImage(int Idx, const System::UnicodeString FileName, bool LoadOnDemand, TIEImageEnMViewDefaultText DefaultTopText = (TIEImageEnMViewDefaultText)(0x0), TIEImageEnMViewDefaultText DefaultInfoText = (TIEImageEnMViewDefaultText)(0x0), TIEImageEnMViewDefaultText DefaultBottomText = (TIEImageEnMViewDefaultText)(0x1), bool bSelectIt = true)/* overload */;
	void __fastcall InsertImageEx(int idx);
	void __fastcall InsertTransitionFrames(int Idx, int iFrameCount, Iextransitions::TIETransitionType Effect, int iWidth = 0xffffffff, int iHeight = 0xffffffff, System::Uitypes::TColor BackgroundColor = (System::Uitypes::TColor)(0xffffffff), Hyiedefs::TResampleFilter ResamplingFilter = (Hyiedefs::TResampleFilter)(0x9));
	void __fastcall InsertTransitionFramesEx(int Idx, int iFrameCount, Iextransitions::TIETransitionType Effect, const System::Types::TRect &StartRect, const System::Types::TRect &EndRect, bool RectMaintainAspectRatio = true, int iWidth = 0xffffffff, int iHeight = 0xffffffff, bool bStretchSmall = false, System::Uitypes::TColor BackgroundColor = (System::Uitypes::TColor)(0xffffffff), Hyiedefs::TResampleFilter ResamplingFilter = (Hyiedefs::TResampleFilter)(0x9), Iextransitions::TIETransitionTiming Timing = (Iextransitions::TIETransitionTiming)(0x0));
	void __fastcall MoveImage(int idx, int destination);
	void __fastcall MoveSelectedImagesTo(int beforeImage);
	void __fastcall Sort(TIEImageEnMViewSortCompare Compare)/* overload */;
	void __fastcall Sort(TIEImageEnMViewSortCompareEx Compare)/* overload */;
	void __fastcall Sort(TIEImageEnMViewSortBy OrderBy, bool Ascending = true, bool CaseSensitive = true)/* overload */;
	int __fastcall AppendImage(void)/* overload */;
	int __fastcall AppendImage(System::Classes::TStream* Stream)/* overload */;
	int __fastcall AppendImage(Hyieutils::TIEBitmap* Bitmap)/* overload */;
	int __fastcall AppendImage(Vcl::Graphics::TBitmap* Bitmap)/* overload */;
	int __fastcall AppendImage(int Width, int Height, Hyieutils::TIEPixelFormat PixelFormat = (Hyieutils::TIEPixelFormat)(0x5))/* overload */;
	int __fastcall AppendImage(const System::UnicodeString FileName)/* overload */;
	int __fastcall AppendImage(const System::UnicodeString FileName, bool LoadOnDemand, TIEImageEnMViewDefaultText DefaultTopText = (TIEImageEnMViewDefaultText)(0x0), TIEImageEnMViewDefaultText DefaultInfoText = (TIEImageEnMViewDefaultText)(0x0), TIEImageEnMViewDefaultText DefaultBottomText = (TIEImageEnMViewDefaultText)(0x1), bool bSelectIt = true)/* overload */;
	int __fastcall AppendImage2 _DEPRECATED_ATTRIBUTE0 (int Width, int Height, Hyieutils::TIEPixelFormat PixelFormat = (Hyieutils::TIEPixelFormat)(0x5));
	int __fastcall AppendSplit(Hyieutils::TIEBitmap* SourceGrid, int cellWidth, int cellHeight, int maxCount = 0x0);
	void __fastcall DeleteImage(int idx);
	void __fastcall DeleteSelectedImages(void);
	__property int ImageCount = {read=GetImageCount, nodefault};
	void __fastcall UpdateCoords(void);
	void __fastcall SetImage(int idx, Vcl::Graphics::TBitmap* srcImage)/* overload */;
	void __fastcall SetImage(int idx, int width, int height, Hyieutils::TIEPixelFormat PixelFormat)/* overload */;
	void __fastcall SetImageEx(int idx, Vcl::Graphics::TBitmap* srcImage);
	void __fastcall SetIEBitmapEx(int idx, Hyieutils::TIEBaseBitmap* srcImage);
	void __fastcall SetIEBitmap(int idx, Hyieutils::TIEBaseBitmap* srcImage);
	bool __fastcall SetImageFromFile(int idx, const System::WideString FileName, int SourceImageIndex = 0x0);
	bool __fastcall SetImageFromStream(int idx, System::Classes::TStream* Stream, int SourceImageIndex = 0x0);
	void __fastcall GetImageToFile(int idx, const System::WideString FileName);
	void __fastcall GetImageToStream(int idx, System::Classes::TStream* Stream, int ImageFormat);
	void __fastcall SetImageRect(int idx, Vcl::Graphics::TBitmap* srcImage, int x1, int y1, int x2, int y2)/* overload */;
	void __fastcall SetImageRect(int idx, Hyieutils::TIEBitmap* srcImage, int x1, int y1, int x2, int y2)/* overload */;
	void __fastcall Clear(void);
	Vcl::Graphics::TBitmap* __fastcall GetBitmap(int idx);
	void __fastcall ReleaseBitmap(int idx, bool saveChanges = true);
	Hyieutils::TIEBitmap* __fastcall GetTIEBitmap(int idx);
	int __fastcall GetImageVisibility(int idx);
	int __fastcall ImageAtPos(int x, int y, bool checkBounds = true);
	int __fastcall ImageAtGridPos(int row, int col);
	int __fastcall InsertingPoint(int x, int y);
	void __fastcall SetThumbnailSize(int width, int height);
	__property Hyiedefs::TResampleFilter ThumbnailResampleFilter = {read=fThumbnailResampleFilter, write=fThumbnailResampleFilter, nodefault};
	__property int ThumbnailClipping = {read=fThumbnailClipping, write=SetThumbnailClipping, default=0};
	__property Hyiedefs::TResampleFilter ThumbnailDisplayFilter = {read=fThumbnailDisplayFilter, write=fThumbnailDisplayFilter, nodefault};
	__property bool EnableResamplingOnMinor = {read=fEnableResamplingOnMinor, write=SetEnableResamplingOnMinor, nodefault};
	__property TIEImageEnMViewIconSize IconSize = {read=fIconSize, write=SetIconSize, nodefault};
	void __fastcall CopyToIEBitmap(int idx, Hyieutils::TIEBitmap* bmp);
	bool __fastcall IsVisible(int idx);
	void __fastcall ReloadImage(int idx);
	void __fastcall PrepareSpaceFor(int Width, int Height, int Bitcount, int ImageCount);
	__property bool ImageCacheUseDisk = {read=fImageCacheUseDisk, write=SetImageCacheUseDisk, nodefault};
	__property int SelectedImage = {read=fSelectedItem, write=SetSelectedItem, nodefault};
	__property bool SelectedImageAlwaysVisible = {read=fSelectedImageAlwaysVisible, write=SetSelectedImageAlwaysVisible, default=1};
	void __fastcall DeSelect(void);
	void __fastcall SelectSeek(TIESeek pos);
	void __fastcall CopySelection(TImageEnMView* SourceMView);
	__property bool CheckThumbBoundsOnSelect = {read=fCheckThumbBoundsOnSelect, write=fCheckThumbBoundsOnSelect, nodefault};
	__property bool TrackMouseSelection = {read=fTrackMouseSelection, write=fTrackMouseSelection, nodefault};
	__property bool MultiSelecting = {read=fMultiSelecting, write=fMultiSelecting, nodefault};
	__property int MultiSelectedImages[int index] = {read=GetMultiSelectedImages};
	__property int MultiSelectedImagesCount = {read=GetMultiSelectedImagesCount, nodefault};
	__property Hyiedefs::TIEArrayOfInteger MultiSelectedImagesList = {read=GetMultiSelectedImagesList};
	void __fastcall MultiSelectSortList(void);
	void __fastcall UnSelectImage(int idx);
	void __fastcall ToggleSelectImage(int idx);
	void __fastcall SelectImage(int idx);
	void __fastcall SelectAll(void);
	void __fastcall BeginSelectImages(void);
	void __fastcall EndSelectImages(void);
	bool __fastcall IsSelected(int idx);
	void __fastcall DisplayImageAt(int idx, int x, int y);
	__property System::Uitypes::TColor SelectedFontColor = {read=fSelectedFontColor, write=fSelectedFontColor, nodefault};
	__property bool Playing = {read=fPlaying, write=SetPlaying, nodefault};
	__property bool PlayLoop = {read=fPlayLoop, write=fPlayLoop, nodefault};
	__property int VisibleFrame = {read=fFrame, write=SetVisibleFrame, nodefault};
	__property bool TransitionRunning = {read=GetTransitionRunning, nodefault};
	__property Iemio::TImageEnMIO* MIO = {read=GetImageEnMIO};
	__property Imageenproc::TImageEnProc* Proc = {read=GetImageEnProc};
	void __fastcall IEBeginDrag(bool Immediate, int Threshold = 0xffffffff);
	void __fastcall IEEndDrag(void);
	__property int SelectionWidthNoFocus = {read=fSelectionWidthNoFocus, write=SetSelectionWidthNoFocus, nodefault};
	__property bool SelectionAntialiased = {read=fSelectionAntialiased, write=SetSelectionAntialiased, nodefault};
	virtual void __fastcall SaveSnapshot(System::Classes::TStream* Stream, bool SaveCache = true, bool Compressed = false, bool SaveParams = false)/* overload */;
	virtual void __fastcall SaveSnapshot(System::WideString FileName, bool SaveCache = true, bool Compressed = false, bool SaveParams = false)/* overload */;
	void __fastcall SaveSnapshotEx(System::Classes::TStream* Stream, bool SaveCache, bool Compressed, bool SaveParams, TIEProcessStreamEvent GetExtraParams);
	virtual bool __fastcall LoadSnapshot(System::Classes::TStream* Stream)/* overload */;
	virtual bool __fastcall LoadSnapshot(System::WideString FileName)/* overload */;
	bool __fastcall LoadSnapshotEx(System::Classes::TStream* Stream, TIEProcessStreamEvent SetExtraParams);
	__property Ieanimation::TIEAnimation* Animation = {read=fAnimation, write=SetAnimation};
	int __fastcall Seek(Imageenio::TIEIOSeekDestination Destination);
	__property TIEMCheckboxPos CheckboxPos = {read=fCheckboxPos, write=SetCheckboxPos, nodefault};
	int __fastcall CheckedCount(void);
	__property bool Checked[int index] = {read=GetChecked, write=SetChecked};
	void __fastcall SetCheckboxParams(int iHorzMargin, int iVertMargin, Vcl::Graphics::TBitmap* CustomCheckedImage = (Vcl::Graphics::TBitmap*)(0x0), Vcl::Graphics::TBitmap* CustomUncheckedImage = (Vcl::Graphics::TBitmap*)(0x0));
	void __fastcall CheckAll(void);
	void __fastcall UncheckAll(void);
	__property TIEMViewerGestures* Gestures = {read=fGestures};
	
__published:
	__property System::Uitypes::TScrollStyle ScrollBars = {read=fScrollBars, write=SetScrollBars, default=3};
	__property TIEStoreType StoreType = {read=fStoreType, write=SetStoreType, nodefault};
	__property int ThumbWidth = {read=GetThumbWidth, write=SetThumbWidth, nodefault};
	__property int ThumbHeight = {read=GetThumbHeight, write=SetThumbHeight, nodefault};
	__property int HorizBorder = {read=fHorizBorder, write=SetHorizBorder, nodefault};
	__property int VertBorder = {read=fVertBorder, write=SetVertBorder, nodefault};
	__property int BottomGap = {read=fBottomGap, write=SetBottomGap, default=0};
	__property int UpperGap = {read=fUpperGap, write=SetUpperGap, default=0};
	__property int SideGap = {read=fSideGap, write=SetSideGap, default=0};
	__property int TextMargin = {read=fTextMargin, write=SetTextMargin, nodefault};
	__property TIEMThumbnailOptionsEx ThumbnailOptionsEx = {read=fThumbnailOptionsEx, write=SetThumbnailOptionsEx, default=6};
	__property Imageenview::TViewChangeEvent OnViewChange = {read=fOnViewChange, write=fOnViewChange};
	__property TIEImageAtPosEvent OnImageAtPos = {read=fOnImageAtPos, write=fOnImageAtPos};
	__property TIECreateImageEvent OnCreateImage = {read=fOnCreateImage, write=fOnCreateImage};
	__property TIEDestroyImageEvent OnDestroyImage = {read=fOnDestroyImage, write=fOnDestroyImage};
	__property TIEImageIDRequestEvent OnImageIDRequest = {read=fOnImageIDRequest, write=fOnImageIDRequest};
	__property TIEImageIDRequestExEvent OnImageIDRequestEx = {read=fOnImageIDRequestEx, write=fOnImageIDRequestEx};
	__property TIEImageDrawEvent OnBeforeImageDraw = {read=fOnBeforeImageDraw, write=fOnBeforeImageDraw};
	__property TIEImageDrawEventEx OnBeforeImageDrawEx = {read=fOnBeforeImageDrawEx, write=fOnBeforeImageDrawEx};
	__property TIEImageDrawEvent OnImageDraw = {read=fOnImageDraw, write=fOnImageDraw};
	__property TIEImageDraw2Event OnImageDraw2 = {read=fOnImageDraw2, write=fOnImageDraw2};
	__property TIEImageSelectEvent OnImageSelect = {read=fOnImageSelect, write=fOnImageSelect};
	__property TIEImageAddEvent OnImageAdd = {read=fOnImageAdd, write=fOnImageAdd};
	__property TIEGetTextEvent OnGetText = {read=fOnGetText, write=fOnGetText};
	__property TIEImageSelectEvent OnImageDeselect = {read=fOnImageDeselect, write=fOnImageDeselect};
	__property TIESelectionChangingEvent OnSelectionChanging = {read=fOnSelectionChanging, write=fOnSelectionChanging};
	__property Hyiedefs::TIEProgressEvent OnIOProgress = {read=fOnIOProgress, write=fOnIOProgress};
	__property TIEMProgressEvent OnDrawProgress = {read=fOnDrawProgress, write=fOnDrawProgress};
	__property TIEWrongImageEvent OnWrongImage = {read=fOnWrongImage, write=fOnWrongImage};
	__property TIECheckboxClickEvent OnCheckboxClick = {read=fOnCheckboxClick, write=fOnCheckboxClick};
	__property TIEMCheckboxType Checkboxes = {read=fCheckboxes, write=SetCheckboxes, default=0};
	__property bool VisibleSelection = {read=fVisibleSelection, write=SetVisibleSelection, default=1};
	__property TIEMMouseInteract MouseInteract = {read=GetMouseInteract, write=SetMouseInteract, default=2};
	__property TIEMKeyInteract KeyInteract = {read=GetKeyInteract, write=SetKeyInteract, default=1};
	__property TIEMDisplayMode DisplayMode = {read=fDisplayMode, write=SetDisplayMode, default=0};
	__property int GridWidth = {read=fGridWidth, write=SetGridWidth, nodefault};
	__property int SelectionWidth = {read=fSelectionWidth, write=SetSelectionWidth, default=2};
	__property System::Uitypes::TColor SelectionColor = {read=fSelectionColor, write=SetSelectionColor, default=16752800};
	__property bool RemoveCorrupted = {read=fRemoveCorrupted, write=SetRemoveCorrupted, default=0};
	__property bool DrawImageBackground = {read=fDrawImageBackground, write=SetDrawImageBackground, default=0};
	__property int ImageCacheSize = {read=fImageCacheSize, write=SetImageCacheSize, default=10};
	__property Iextransitions::TIETransitionType TransitionEffect = {read=fTransitionEffect, write=fTransitionEffect, default=0};
	__property int TransitionDuration = {read=fTransitionDuration, write=fTransitionDuration, default=1000};
	__property TIEMStyle Style = {read=fStyle, write=SetStyle, nodefault};
	__property System::Uitypes::TColor ThumbnailsBackground = {read=fThumbnailsBackground, write=fThumbnailsBackground, nodefault};
	__property System::Uitypes::TColor ThumbnailsBackgroundSelected = {read=fThumbnailsBackgroundSelected, write=fThumbnailsBackgroundSelected, nodefault};
	__property bool EnableMultiSelect = {read=fEnableMultiSelect, write=SetEnableMultiSelect, default=0};
	__property TIEMultiSelectionOptions MultiSelectionOptions = {read=fMultiSelectionOptions, write=fMultiSelectionOptions, nodefault};
	__property int ThumbnailsBorderWidth = {read=fThumbnailsBorderWidth, write=SetThumbnailsBorderWidth, nodefault};
	__property System::Uitypes::TColor ThumbnailsBorderColor = {read=fThumbnailsBorderColor, write=SetThumbnailsBorderColor, default=-16777201};
	__property bool ThumbnailsInternalBorder = {read=fThumbnailsInternalBorder, write=SetThumbnailsInternalBorder, default=0};
	__property System::Uitypes::TColor ThumbnailsInternalBorderColor = {read=fThumbnailsInternalBorderColor, write=SetThumbnailsInternalBorderColor, default=0};
	__property Vcl::Graphics::TPicture* WallPaper = {read=fWallPaper, write=SetWallPaper};
	__property Imageenview::TIEWallPaperStyle WallPaperStyle = {read=fWallPaperStyle, write=SetWallPaperStyle, default=0};
	__property Hyiedefs::TIEProgressEvent OnProgress = {read=GetOnProgress, write=SetOnProgress};
	__property int ThreadPoolSize = {read=fThreadPoolSize, write=fThreadPoolSize, default=5};
	__property bool EnableAlphaChannel = {read=fEnableAlphaChannel, write=SetEnableAlphaChannel, default=1};
	__property Hyiedefs::TIEBackgroundStyle BackgroundStyle = {read=fBackgroundStyle, write=SetBackgroundStyle, default=0};
	__property Hyiedefs::TIEBackgroundStyle ThumbnailsBackgroundStyle = {read=fThumbnailsBackgroundStyle, write=SetThumbnailsBackgroundStyle, default=0};
	__property Imageenio::TIEAcquireBitmapEvent OnAcquireBitmap = {read=GetOnAcquireBitmap, write=SetOnAcquireBitmap};
	__property System::Classes::TNotifyEvent OnAllDisplayed = {read=fOnAllDisplayed, write=fOnAllDisplayed};
	__property System::Classes::TNotifyEvent OnFinishWork = {read=GetOnFinishWork, write=SetOnFinishWork};
	__property TIEPlayFrameEvent OnPlayFrame = {read=fOnPlayFrame, write=fOnPlayFrame};
	__property TIEAnimationTextEvent OnAnimationText = {read=fOnAnimationText, write=fOnAnimationText};
	__property TIEAfterEventEvent OnAfterEvent = {read=fOnAfterEvent, write=fOnAfterEvent};
	__property Imageenview::TIEImageEnGestureEvent OnImageEnGesture = {read=fOnImageEnGesture, write=fOnImageEnGesture};
	__property System::UnicodeString ImageEnVersion = {read=GetImageEnVersion, write=SetImageEnVersion, stored=false};
	__property bool FlatScrollBars = {read=fFlatScrollBars, write=SetFlatScrollBars, default=0};
	__property Anchors = {default=3};
	__property OnMouseWheel;
	__property OnMouseWheelDown;
	__property OnMouseWheelUp;
	__property Align = {default=0};
	__property DragCursor = {default=-12};
	__property DragMode = {default=0};
	__property Enabled = {default=1};
	__property ParentShowHint = {default=1};
	__property PopupMenu;
	__property ShowHint;
	__property Visible = {default=1};
	__property TabOrder = {default=-1};
	__property TabStop = {default=0};
	__property OnClick;
	__property OnDblClick;
	__property OnDragDrop;
	__property OnDragOver;
	__property OnEndDrag;
	__property OnMouseDown;
	__property OnMouseMove;
	__property OnMouseUp;
	__property OnStartDrag;
	__property OnKeyDown;
	__property OnKeyPress;
	__property OnKeyUp;
	__property OnContextPopup;
	__property OnGesture;
public:
	/* TWinControl.CreateParented */ inline __fastcall TImageEnMView(HWND ParentWindow) : Ieview::TIEView(ParentWindow) { }
	
};


//-- var, const, procedure ---------------------------------------------------
#define IEM_Path_Index_Delimiter L"::"
#define IEM_Filename L"$IEM_FILENAME$"
#define IEM_FilenameNoExt L"$IEM_FILENAMENOEXT$"
#define IEM_FilePath L"$IEM_FILEPATH$"
#define IEM_ImageDimensions L"$IEM_IMAGE_DIMENSIONS$"
#define IEM_ImageDimAndSize L"$IEM_IMAGE_DIM_AND_SIZE$"
#define IEM_FileSize L"$IEM_FILESIZE$"
#define IEM_FileCreateDate L"$IEM_FILECREATEDATE$"
#define IEM_FileCreateDateTime L"$IEM_FILECREATEDATETIME$"
#define IEM_FileCreateDateAndSize L"$IEM_FILECREATEDATE_AND_SIZE$"
#define IEM_FileEditDate L"$IEM_FILEEDITDATE$"
#define IEM_FileEditDateTime L"$IEM_FILEEDITDATETIME$"
#define IEM_FileEditDateAndSize L"$IEM_FILEEDITDATE_AND_SIZE$"
#define IEM_FileType L"$IEM_FILETYPE$"
static const System::Int8 Max_Icon_Images_To_Cache = System::Int8(0x32);
static const int Thumbnail_Background_When_Disabled = int(-16777194);
static const int Thumbnail_Border_When_Disabled = int(-16777200);
static const int Text_Color_When_Disabled = int(-16777199);
}	/* namespace Iemview */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_IEMVIEW)
using namespace Iemview;
#endif
#pragma pack(pop)
#pragma option pop

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