#ifndef TransitionH
#define TransitionH
#include <vcl.h>

enum {FromLeft,FromRight,FromTop,FromBottom};
enum {Transparent,UseColour,FormColour};

class TTransition
{
  protected:
  TForm *mpDestForm;
  Graphics::TBitmap *mpDestBitMap;
  Graphics::TBitmap *mpDestBitMapCopy;
  Graphics::TBitmap *mpSecondaryBitMap; // For slide in etc.
  TRect mrectBitMapSize;                // Rectangle bounding the forms background bitmap
  TRect mrectScreenArea;

  public:
  ~TTransition();
  TTransition(TForm *DestForm, Graphics::TBitmap *DestBitMap,Graphics::TBitmap *SecondaryBitMap=NULL);
  void ZoomOut(int Resolution=3,int FrameDelay=20);
  void Wipe(int Direction=FromLeft, int Resolution=10, int FrameDelay=10,  int BackgroundState=Transparent,TColor BackgroundColour=clWhite);
  void Slide(int Direction=FromLeft, int Resolution=30, int FrameDelay=30,  int BackgroundState=Transparent,TColor BackgroundColour=clWhite);
};


class TExtraTrans : public TTransition
{
  public:
  TExtraTrans(TForm *DestForm, Graphics::TBitmap *DestBitMap,Graphics::TBitmap *SecondaryBitMap=NULL);
  void ZoomOut(bool Clear, int Resolution=3,int FrameDelay=20);
};
#endif
