Source: DrawArea.h


Annotated List
Files
Globals
Hierarchy
Index
#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.