|
|
#ifndef DRAWAREA_H #define DRAWAREA_H class DrawArea; #include "CSdif.h" #include "Peak.h" #include "Pane.h" #include "Panel.h" /** * Programme de resynth�se appel� */ enum resynthType { PPP, ADD }; /** * Affichage des donn�es SDIF. Cette classe travaille en coop�ration * avec la classe @ref WaveArea au sein * de la classe @ref Pane afin d'afficher de mani�re synchronis�e donn�es SDIF et donn�es SF. * @short Paneau d'affichage SDIF * @author Ph.Chose * @version 10/99 */ class DrawArea : public Panel, public CSdif { private: /** * Position X sauvegard�e de la souris */ Position controlX; /** * Position Y sauvegard�e de la souris */ Position controlY; /** * Drapeau contr�lant l'affichage de la grille */ int gridDisplay; /** * Rep�re temporel de la trame pr�c�dente */ float previousTime; /** * Pics ou partiels de la trame courante et de la trame pr�c�dente */ Peak* pdata[2]; /** * Nombre de pics ou de partiels de la trame pr�c�dente */ int numberPeaks0; /** * nombre de pics ou de partiels de la trame courante */ int numberPeaks1; /** * Limite de fr�quence minimale pr�c�dente pour annuler un zoom */ float previousFreqMin; /** * Limite de fr�quence maximale pr�c�dente pour annuler un zoom */ float previousFreqMax; /** * Rep�re temporel du d�but du fichier */ float fileBeginTime; /** * Rep�re temporel de la fin du fichier */ float fileEndTime; /** * Taille de la bande situ�e � gauche de l'axe des y */ int deltaX; /** * Taille de la bande situ�e en dessous de l'axe des x */ int deltaY; /** * Variable utilis�e par le timer (cf @ref DrawArea::timerFunc) */ XtIntervalId id; /** * Pointeur sur la fen�tre partag�e m�re */ Pane* parent; /** * ID du processus d'analyse. Utilis� pour d�tecter la fin de l'analyse et stopper l'affichage temps-r�el */ int pid; public: /** * Instant requis pour l'affichage d'une FFT */ float requestedTime; /** * Drapeau contr�lant l'affichage des liens entre pics: utilis� pour effacer les lines lors de l'affichage * de trames de type 1TRC alors que des 1PIC �taient d�sir�e (cons�quence de l�bsence d'impl�mentation * � l'heure actuelle d'une lecture de 1PIC sous Pm */ int noLinks; /** * Type de fichier lu (Pics, Partiels, FFT ou Pitch) */ SdifFileType fileType; /** * Fr�quence maximale par d�faut r�gl�e par le menu Fr�quence */ float defaultFreqMax; /** * Taille de base d'un carr� repr�sentant un pic, modifi� par le menu Amplitude */ int baseAmplRectWidth; /** * Amplitude maximale d�tect�e dans le fichier */ float maxAmpl; /** * Amplitude miniale � afficher */ float minAmpl; /** * Fr�quence maximale affich�e */ float freqMax; /** * Fr�quence minimale affich�e */ float freqMin; /** * Drapeau indiquant si le mode Combi est activ� (affichage simutan� d'un fichier SDIF PIC et d'un fichier SDIF TRC) */ int combiMode; /** * Nom du fichier principal � afficher */ char* mainFilename; /** * Nom du fichier secondaire � afficher (mode Combi uniquement) */ char* secondFilename; /** * Nom du fichier devant etre affiche */ char* requestedFilename; /** * Initialise les variables ainsi que la librairie SDIF. * @param parentPane Fen�tre partag�e m�re * @param app contexte d�pplication X11 (n�cessaire pour la redirection des �venements souris */ DrawArea(Pane* parentPane, XtAppContext app); /** * Lib�re la m�moire */ ~DrawArea(); /** * Affiche la Pixmap � l'�cran */ void updateDisplay(); private: // TIMER FUNCTIONS /** * Fonction timer appel�e toutes les secondes lors d'une analyse * @param clientData pointeur sur l'instance de la classe @ref DrawArea * @param id r�f�rence du timer */ static void timerFunc(XtPointer clientData, XtIntervalId* id); public: /** * D�marre ou stoppe le timer */ void timerSwitch(); // DISPLAY_FUNCTIONS /** * Initialise l'affichage d'un nouveau fichier SDIF * * @param fname nomdu fichier SDIF */ void initDisplay(char* fname); /** * Initialise l'affichage de deux nouveaux fichiers SDIF en mode Combi * * @param fname1 nom du fichier SDIF PIC * @param fname2 nom du fichier SDIF TRC */ void initDisplay(char* fname1, char* fname2); /** * D�marre une visualisation temps r�el des r�sultats d'une analyse avec partial++ * @param fname nom du fichier SDIF � afficher * @param pid ID du processus d'analyse */ void realtimeDisplay(char* fname, int pid); /** * D�marre une visualisation temps r�el des r�sultats d'une analyse avec hmm * @param fname nom du fichier SDIF � afficher * @param pid ID du processus d'analyse */ void realtimeDisplayHMM(char* fname, int pid); /** * Affiche ou efface la grille */ void gridSwitch(); /** * Resitue sur la sortie sonore (uniquement sur SGI) la resynth�se de la portion de partiels s�lectionn�e � * l'�cran. * @param type programme de resynth�se demand� (partial++ ou syntadd) */ void playResynth(resynthType type); private: /** * Affiche ou efface l'aide � la visualisation des param�tres fr�quentiels * @param x position x d'affichage de l'aide * @param y position y d'affichage de l'aide */ void switchCross(Position x, Position y); /** * Affiche le contenu du fichier SDIF � l'�cran */ void redraw(); /** * Recherche les amplitudes maximales et les bornes temporelles */ int seekLimits(); /** * Cherche dans le fichier SDIF le pic repr�sent� � l'�cran en un point donn� * @param x coordonn�e x du pic s�lectionn� * @param y coordonn�e y du pic s�lectionn� */ void findPeak(int x, int y, XColor); /** * Fonction cens�e changer la couleur du pic s�lectionn� (ne fonctionne pas) * @param x coordonn�e x du pic s�lectionn� * @param y coordonn�e y du pic s�lectionn� */ void getPeak(int x, int y); /** * Fonction cens�e remettre la couleur originale du pic (ne fonctionne pas) * @param x coordonn�e x du pic s�lectionn� * @param y coordonn�e y du pic s�lectionn� */ void freePeak(int x, int y); /** * Affichage des axes et des �chelles */ void axisScaleDisplay(); /** * Fonction appel�e lors d'un clic gauche de la souris accompagn� de la touche Shift enfonc�e. * D�clenche la recherche du pics s�lectionn� en appelant @DrawArea::shiftClick * @param x position x de la souris au moment du clic * @param y position y de la souris au moment du clic */ void shiftClick(Position x, Position y); /** * Fonction appel�e lors d'un clic milieu de la souris * Fait un zoom total arri�re. * @param x position x de la souris au moment du clic * @param y position y de la souris au moment du clic */ void clickSecond(Position x, Position y); /** * Fonction appel�e lors d'un clic droit de la souris * Annule le dernier zoom. * @param x position x de la souris au moment du clic * @param y position y de la souris au moment du clic */ void clickThird(Position x, Position y); /** * Fonction appel�e lors d'une s�lection rectangulaire effectu�e avec la souris * Effectue un zoom sur la zone enclose * @param x1 position x de la souris au d�but du drag * @param y1 position y de la souris au d�but du drag * @param x2 position x de la souris � la fin du drag * @param y2 position y de la souris � la fin du drag */ void selectBox(Position x1, Position x2, Position y1, Position y2); /** * Fonction appel�e lors d'un clic gauche de la souris accompagn� de la touche Control enfonc�e. * Affiche l'aide � la visualisation des param�tres fr�quentiels * @param x position x de la souris au moment du clic * @param y position y de la souris au moment du clic */ void controlClick(Position x, Position y); /** * Fonction appel�e lors du relachement du bouton gauche de la souris si la touche Control a �t� * pr�alablement enfonc�e. Efface l'aide � la visualisation des param�tres fr�quentiels * @param x position x de la souris au moment du clic * @param y position y de la souris au moment du clic */ void controlUnClick(Position x, Position y); }; #endif
Generated by: chose@josquin on Wed Nov 10 20:57:01 199. |