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

// (DO NOT EDIT: machine generated header) 'RVAnimate.pas' rev: 4.00

#ifndef RVAnimateHPP
#define RVAnimateHPP

#pragma delphiheader begin
#pragma option push -w-
#include <CRVFData.hpp>	// Pascal unit
#include <RVItem.hpp>	// Pascal unit
#include <DLines.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

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

namespace Rvanimate
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TRVAnimator;
class DELPHICLASS TRVAnimatorList;
#pragma pack(push, 4)
class PASCALIMPLEMENTATION TRVAnimatorList : public Classes::TList 
{
	typedef Classes::TList inherited;
	
public:
	bool Active;
	int LastMinInterval;
	int MinInterval;
	__fastcall TRVAnimatorList(void);
	__fastcall virtual ~TRVAnimatorList(void);
	void __fastcall TimerEvent(void);
	DYNAMIC void __fastcall Clear(void);
	void __fastcall FreeAnimators(void);
	void __fastcall Reset(void);
	HIDESBASE void __fastcall Add(TRVAnimator* &Item);
	void __fastcall ResetBackground(void);
};

#pragma pack(pop)

#pragma pack(push, 4)
class PASCALIMPLEMENTATION TRVAnimator : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	TRVAnimatorList* List;
	
protected:
	int FrameIndex;
	Rvitem::TCustomRVItemInfo* Item;
	int Interval;
	virtual int __fastcall GetFrameCount(void) = 0 ;
	bool __fastcall IsVisible(void);
	void __fastcall CalcNextFrameIndex(void);
	void __fastcall DrawFrame(void);
	virtual void __fastcall ResetBackground(void);
	
public:
	Crvfdata::TCustomRVFormattedData* RVData;
	__fastcall TRVAnimator(Crvfdata::TCustomRVFormattedData* ARVData, Rvitem::TCustomRVItemInfo* AItem)
		;
	void __fastcall Update(Crvfdata::TCustomRVFormattedData* ARVData, Rvitem::TCustomRVItemInfo* AItem)
		;
	__fastcall virtual ~TRVAnimator(void);
	virtual void __fastcall Reset(void) = 0 ;
	virtual void __fastcall ChangeFrame(void) = 0 ;
	virtual void __fastcall Draw(int X, int Y, Graphics::TCanvas* Canvas, bool Animation) = 0 ;
	virtual tagSIZE __fastcall GetExportImageSize(void);
	virtual void __fastcall DrawForExport(Graphics::TCanvas* Canvas) = 0 ;
	virtual bool __fastcall ExportIgnoresScale(void);
};

#pragma pack(pop)

class DELPHICLASS TRVBitmapAnimator;
#pragma pack(push, 4)
class PASCALIMPLEMENTATION TRVBitmapAnimator : public TRVAnimator 
{
	typedef TRVAnimator inherited;
	
protected:
	virtual int __fastcall GetFrameCount(void);
	
public:
	virtual void __fastcall Reset(void);
	virtual void __fastcall ChangeFrame(void);
	virtual void __fastcall Draw(int X, int Y, Graphics::TCanvas* Canvas, bool Animation);
	virtual void __fastcall DrawForExport(Graphics::TCanvas* Canvas);
	virtual bool __fastcall ExportIgnoresScale(void);
public:
	#pragma option push -w-inl
	/* TRVAnimator.Create */ inline __fastcall TRVBitmapAnimator(Crvfdata::TCustomRVFormattedData* ARVData
		, Rvitem::TCustomRVItemInfo* AItem) : TRVAnimator(ARVData, AItem) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TRVAnimator.Destroy */ inline __fastcall virtual ~TRVBitmapAnimator(void) { }
	#pragma option pop
	
};

#pragma pack(pop)

typedef void __fastcall (*TRVMakeAnimatorProc)(Rvitem::TCustomRVItemInfo* item, Crvfdata::TCustomRVFormattedData* 
	RVData, TRVAnimator* &anim);

//-- var, const, procedure ---------------------------------------------------
extern PACKAGE TRVMakeAnimatorProc RV_MakeAnimator;
extern PACKAGE int RVMaxAnimations;

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

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