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