#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