// Module PI : Peida Interactive      PIEventHandler
// Classe Gestionnaire d'evenements (Ecran/Clavier/Souris)
//                                    R.Ansari  12/98 
// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA

#include "sopnamsp.h"
#include "pievthandler.h"

//++
// Class	PIEventHandler
// Lib		PI
// include	pievthandler.h
//
//	Classe fournissant les services nécessaires à la création de
//	gestionnaire d'événements écran-clavier-souris.
//--
//++
// Links	Parents
// PIMsgHandler
//--
//++
// Links	Voir aussi
// PIWdg
//--
//++
// Titre	Constructeur, méthodes
//--
//++
// PIEventHandler(PIMsgHandler* par=NULL, PIMessage msg = 0)
//	Constructeur. "par" est le gestionnaire de message parent, et
//	"msg" le message associé.
//
// void	  SetMsg(PIMessage msg = 0)
//	Modification du message associé.
// PIMessage  Msg() 
//	Renvoie le message associé.
//--



/* --Methode-- */
PIEventHandler::PIEventHandler(PIMsgHandler* par, PIMessage msg)
	: PIMsgHandler(par)
{
SetMsg(msg);
curwdg = NULL;
event = PIEvent_None;
posx = posy = 0;
key = 0;
keymod = PIKM_Blank;
evttime = 0;
}

/* --Methode-- */
PIEventHandler::~PIEventHandler()
{
}

//++
// Titre	Traitement des événements
//--
//++
// void Draw(PIGraphic* g, int x0, int y0, int dx, int dy)
//	Méthode spécialisée appelée pour retracer le contenu 
//	d'une partie de l'objet "PIWdg" auquel est attaché l'objet
//	"PIEventHandler". "PIGraphic* g" fournit les services de 
//	tracé graphique et "(x0, y0), "dx * dy" définissent le 
//	rectangle à retracer. L'implementation par défaut ne 
//	fait rien.
//
// void ProcessEvent()
//	Cette méthode est appelée pour le traitement de tous 
//	les autres types d'événements. L'implementation par défaut 
//	ne fait rien. 
//--


/* --Methode-- */
void PIEventHandler::Draw(PIGraphic*, int, int, int, int)
{
return;
}

/* --Methode-- */
void PIEventHandler::ProcessEvent()
{
return;
}

/* --Methode-- */
void PIEventHandler::SetCurrentWdg(PIWdg* wdg)
{
curwdg = wdg;
}


//++
// Titre	Description de l'événement
//--
//++
// PIWdg*  CurrentWdg()
//	L'objet "PIWdg" source de l'événement.
// PIEventMask EventType()
//	Type de l'événement :
//|	PIEvent_Draw 
//|	PIEvent_Resize , PIEvent_Enter , PIEvent_Leave
//|	PIEvent_ButxPress , PIEvent_ButxRelease  (x=1,2,3)
//|	PIEvent_PtrMove , PIEvent_PtrxMove (x=1,2,3)
//|	PIEvent_Keyboard
//
// int GetPosX()
//	Position X de la souris
// int GetPosY()
//	Position Y de la souris
// int GetKey()
//	Code touche du clavier. Code ASCII des caractères ordinaires, ou l'une des constantes:
//|	PIK_Return , PIK_Enter
//|	PIK_BackSpace , PIK_Delete
//|	PIK_Tab , PIK_Escape
//|	PIK_Up , PIK_Down
//|	PIK_Right , PIK_Left
//|	PIK_Previous , PIK_Next
//
// PIKeyModifier GetKeyMod()
//	Code d'une des touches <Shift>, <Alt>, <Cntl> si appuyée en même temps.
//|	PIKM_Blank , PIKM_Shift , PIKM_Alt , PIKM_Cntl
//
// unsigned long GetEventTime()
//	Temps de l'action en millisecondes.
//--

/* --Methode-- */
void PIEventHandler::SetEventInfo(PIEventMask evt, int px, int py, 
                                  int k, PIKeyModifier km, unsigned long tm)
{
event = evt;
posx = px; posy = py;
key = k;
keymod = km;
evttime = tm;
}

