// CodeGear C++Builder
// Copyright (c) 1995, 2007 by CodeGear
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Rvanimate.pas' rev: 11.00

#ifndef RvanimateHPP
#define RvanimateHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <Sysinit.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Dlines.hpp>	// Pascal unit
#include <Rvitem.hpp>	// Pascal unit
#include <Crvfdata.hpp>	// Pascal unit

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

namespace Rvanimate
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TRVAnimator;
class DELPHICLASS TRVAnimatorList;
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);
	virtual void __fastcall Clear(void);
	void __fastcall FreeAnimators(void);
	void __fastcall Reset(void);
	HIDESBASE void __fastcall Add(TRVAnimator* &Item);
	void __fastcall ResetBackground(void);
};


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();
	virtual void __fastcall DrawForExport(Graphics::TCanvas* Canvas) = 0 ;
	virtual bool __fastcall ExportIgnoresScale(void);
};


class DELPHICLASS TRVBitmapAnimator;
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
	
};


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 */
using namespace Rvanimate;
#pragma pack(pop)
#pragma option pop

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