#ifndef TOOLTIP_H_
#define TOOLTIP_H_

#include "Text.h"
#include "CObjLayerFont.h"

#define TOOLTIP_TIMEOUT 500
#define TIP_VISIBLE_END 3000

class CObjectBase;

class CObjToolTip
{
private:
	// timer
	int TTtimer;
	int TTtimeout;
	
protected:
	// objnode auquel est associé le tooltip
	CObjectBase *TTobj;

	// texte du ToolTip
	char *TTtexte;

public:
	// le tooltip est visible
	int TTisVisible;

	// position du curseur
	int TTcursorX;
	int TTcursorY;
	
	
	// constructeur-destructeur
	CObjToolTip(CObjectBase *obj, char *txt, int timeout);
	virtual ~CObjToolTip();

	inline CObjectBase* GetObject(){return TTobj;}
	
	void TimerEnd();

	// arm the tip display mechanism
	void Arm(int CursorX, int CursorY);
	
	// Reset the WakeUp Time, and the current point
	void Reset(int CursorX, int CursorY);
	
	// Clear The Tip and disarm the tip display mechanism
	void Disarm();

	// Show Tip
	virtual int ToolTipOn();

	// Hide Tip
	virtual int ToolTipOff();

	virtual Layer* GetLayerToolTip();

};

class CObjToolTipDefaut:public CObjToolTip
{
private:
	// le layer graphique
	Layer *TTDlayer;
	
	Text *TTDtxt;
	
  CObjLayerFont *TTDfont;

	// ToolTip coordinates
	int	  TTDx;
	int	  TTDy;
	int	  TTDw;
	int	  TTDh;
	
	int	  TTDbackground;	// tooltip bacground color
	int	  TTDtextcolor;	// textcolor

	void	EvalPosition();

public:	
	
	// Constructeur-destructeur
	CObjToolTipDefaut(CObjectBase *, char *, int, int, int, int, int *);
	virtual ~CObjToolTipDefaut();

	// Show Tip
	int ToolTipOn();
	
	// Hide Tip
	int ToolTipOff();

	Layer* GetLayerToolTip();
};

//////////////////////////////////////////////////////////////////////////////////////////////////////
//  Fonctions Scol
//////////////////////////////////////////////////////////////////////////////////////////////////////
int _CRtoolTip(mmachine);
int _CRtoolTipDefault(mmachine);
int _DStoolTip(mmachine);


#endif