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.