Source: WaveArea.h


Annotated List
Files
Globals
Hierarchy
Index
#ifndef WAVEAREA_H
#define WAVEAREA_H

class WaveArea;

#include "Panel.h"
#include "Pane.h"

/**
 * Paneau destiné à l'affichage des fichier sons au format .sf.
 *
 * @short Paneau d'affichage fichier SF
 * @author Ph.Chose
 * @version 10/99
 */
class WaveArea : public Panel
{
private:
  /**
   * Nom du fichier SF à afficher
   */
  char* sfFileName;
  /**
   * Nom du fichier temporaire contenant les données sonores obtenu par fromsf
   */
  char* fileName;
  /**
   * Fréquence d'échantillonage du son affiché
   */
  float samplingFrequency;
  /**
   * Taille du fichier en nombre d'échantillons 16bits
   */
  long int fileLength;
  /**
   * Amplitude maximale afficher: utilisé pour normaliser l'affichage
   */
  float maxAmplitude;
  /**
   * Pointeur sur la PanedWindow mère (cf @ref Pane)
   */
  Pane* parent;
  /**
   * Sauvegarde de la position X du dernier clic souris (cf @ref WaveArea::switchLimit)
   */
  Position controlX;
  /**
   * Sauvegarde de la position Y du dernier clic souris (cf @ref WaveArea::switchLimit)
   */
  Position controlY;
  
public:
  /**
   * Constructeur. Initialise les membres.
   * @param parent pointeur sur la Pane mère
   * @param app contexte d'application
   */
  WaveArea(Pane* parent, XtAppContext app);
  /**
   * Destructeur. Libère la mémoire.
   */
  ~WaveArea();

  /**
   * Met à jour l'affichage en appelant @ref Panel::updateDisplay
   */
  void updateDisplay();

  /**
   * Initialise l'affichage en détectant la durée du fichier et convertit le dit fichier au format interne
   * @param newfname nom du fichier SF à afficher.
   */
  void initDisplay(char* newfname);

  /**
   * Joue le son affiché dans le paneau en appelant playsf
   */
  void playSound();
  
private:
  /**
   * Eteint ou allume un marqueur vertical à l'instant donné en paramètre: sert pou repére temporellement
   * l'instant d'une FFT
   * @param time instant où doit apparaître le marqueur
   */
  void switchMarker(float time);
  /**
   * Affiche ou efface les bornes de la fenêtre d'analyse correspondant à la position du click de souris
   * @param x coordonnée X de la souris
   * @param y coordonnée Y de la souris
   */
  void switchLimit(Position x, Position y);
  /**
   * Affiche les données audio dans la fenêtre. Utilise des XSegments.
   */
  void redraw();
  /**
   * Trace les axes et les échelles
   */
  void axisScaleDisplay();
  /**
   * Recherche l'amplitude maximale dans le fichier pour normaliser l'affichage
   */
  void setMaxAmplitude(char* newfname);

  /**
   * Fonction Shift+click gauche : inactivée
   * @param x position X de la souris
   * @param y position Y de la souris
   */
  void shiftClick(Position x, Position y);
  /**
   * Fonction click milieu : zoom total arrière
   * @param x position X de la souris
   * @param y position Y de la souris
   */
  void clickSecond(Position x, Position y);
  /**
   * Fonction click droit : annule le dernier zoom
   * @param x position X de la souris
   * @param y position Y de la souris
   */
  void clickThird(Position x, Position y);
  /**
   * Fonction selection box : zoome sur la partie sélectionnée
   * @param x1 position X du premier coin
   * @param y1 position Y du premier coin
   * @param x2 position X du second coin
   * @param y2 position Y du second coin
   */
  void selectBox(Position x1, Position x2, Position y1, Position y2);
  /**
   * Fonction Control+click gauche : affiche les aides au réglage des paramètres
   * @param x position X de la souris
   * @param y position Y de la souris
   */
  void controlClick(Position x, Position y);
  /**
   * Efface les aides au réglage des paramètres
   * (cf @ref WaveArea::controlClick)
   * @param x position X de la souris
   * @param y position Y de la souris
   */
  void controlUnClick(Position x, Position y);
};

#endif

Generated by: chose@josquin on Wed Nov 10 20:57:01 199.