|
|
#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. |