Source: Param.h


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

class Param;

#include "LabelText.h"
#include "Analysis.h"

/**
 * Fenêtre de dialogue de réglage des paramètres: permet de definir tous les
 * paramètres utilisés lors de l'analyse. Ces paramètres peuvent être chargés
 * et sauvegardés au moyen des boutons appropriés. Ils sont décrits plus en details ci-dessous.
 * 
 * @short Dialogue de réglage des paramètres
 * @author Ph.Chose
 * @version 10/99
 */



class Param
{
/**
 * Type de boîte de sélection de fichier demandée
 */
enum FileSelectionType { LOAD, SAVE };

public:
  /**
   * Taille de la FFT 
   */
  int fft_size;
  /**
   * Taille de la fenêtre d'analyse
   */
  int window_size;
  /**
   * Nombre maximal de partiels
   */
  int max_partials_number;
  /**
   * Pas d'analyse
   */
  int hop_size;
  /**
   * Repère temporel de début d'analyse
   */
  float starting_time;
  /**
   * Repère tempore de fin d'analyse
   */
  float ending_time;
  /**
   * Taille minimale d'un partiel
   */
  int minPartialLength;
  /**
   * Variance en fréquence
   */
  float freqVariance;
  /**
   * Variance en amplitude
   */
  float amplVariance;
  /**
   * Variance en phase
   */
  float phaseVariance;
  /**
   * Seuil absolu de fréquence
   */
  float freqAbsThreshold;
  /**
   * Seuil relatif de fréquence
   */
  float freqRelThreshold;
  /**
   * Paramètre additif fréquentiel
   */
  float freqAdditive;
  /**
   * Paramètre additif d'amplitude
   */
  float amplAdditive;
  /**
   * Paramètre additif de phase
   */
  float phaseAdditive;
  /**
   * Gain de partie fréquentielle du score
   */
  float freqGain;
  /**
   * Gain de la partie amplitude du score
   */
  float amplGain;
  /**
   * Gain de la partie phase du score
   */
  float phaseGain;
  /**
   * Drapeau de détection avancée de fréquences (partial++)
   */
  int enhanced;
  /**
   * Drapeau de mise a jour temps-réel
   */
  int updateRT;
  /**
   * Drapeau pour demander le calcul de la FFT
   */
  int fftStep;
  /**
   * Drapeau pour demander la détection des pics
   */
  int peaksStep;
  /**
   * Drapeau pour demander la détection des trajets de pics
   */
  int partialsStep;
  /**
   * Fréquence minimale explorée
   */
  float freqMin;
  /**
   * Fréquence maximale explorée
   */
  float freqMax;
  /**
   * Fréquence d'échantillonage
   * Ne sert que pour calculer les tailles de la fenêtre d'analyse et du pas d'analyse en secondes
   */
  int samplingFrequency;
  /**
   * Drapeau pour bloquer le zoom au cours d'une analyse
   */
  int freezeLimits;

  /**
   * Pointeur sur un objet Analysis
   */
  Analysis* theAnalysis;
  
private:
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::fft_size
   */
  LabelText* tfft;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::window_size
   */
  LabelText* twindow;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::max_partials_number
   */
  LabelText* tpartials;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::hop_size
   */
  LabelText* thop;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::starting_time
   */
  LabelText* tstart;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::ending_time
   */
  LabelText* tend;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqVariance
   */
  LabelText* tfreqV;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::amplVariance
   */
  LabelText* tamplV;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::phaseVariance
   */
  LabelText* tphaseV;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::minPartialLength
   */
  LabelText* tminPartial;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqAbsThreshold
   */
  LabelText* tfreqAbsThreshold;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqRelThreshold
   */
  LabelText* tfreqRelThreshold;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqAdditive
   */
  LabelText* tfreqA;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::amplAdditive
   */
  LabelText* tamplA;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::phaseAdditive
   */
  LabelText* tphaseA;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqGain
   */
  LabelText* tfreqG;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::amplGain
   */
  LabelText* tamplG;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::phaseGain
   */
  LabelText* tphaseG;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqMin
   */
  LabelText* tfreqMin;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::freqMax
   */
  LabelText* tfreqMax;
  /**
   * Widget regroupant Label Text et Slider
   * Variable contrôlée: @ref Param::samplingFrequency
   */
  LabelText* tsamplingFrequency;

  /**
   * Bouton OK. Accepte les changements et referme le dialogue
   */
  Widget buttonOk;
  /**
   * Bouton Cancel. Ferme le dialogue.
   */
  Widget buttonCancel;
  /**
   * Bouton Load Parameters. Charge les paramètres à partir d'un fichier au format .param
   */
  Widget buttonLoad;
  /**
   * Bouton Save Parameters. Sauve les paramètres dans un fichier au format .param
   */
  Widget buttonSave;
  /**
   * Bouton Stop Analysis. Stoppe l'analyse en cours.
   */
  Widget buttonStop;

  /**
   * Le dialogue lui-même.
   */
  Widget dialog;

  /**
   * Check box pour la détection avancée de pics
   */
  Widget checkEnhanced;
  /**
   * Check box pour la mise à jour de l'affichage grahique à chaque modification de paramètre
   */
  Widget checkUpdate;
  /**
   * Check box pour valider le calcul de la FFT
   */
  Widget checkFftStep;
  /**
   * Check box pour valider la détection de pics
   */
  Widget checkPeaksStep;
  /**
   * Check box pour valider la détection des partiels
   */
  Widget checkPartialsStep;
  /**
   * Check box pour permuter entre secondes et échantillon (unités des paramètres taille de fenêtre d'analyse
   * et pas d'analyse.
   */
  Widget checkSamsSecs;
  /**
   * Check box pour figer les limites de l'affichage graphique
   */
  Widget checkFreezeLimits;
  
  /**
   * SAVE ou LOAD -> Choix pour la lecture ou l'écriture des paramètres
   */
  FileSelectionType buttonClicked;
  
public:
  /**
   * Affiche le dialogue
   */
  void display();
  /**
   * Constructeur.
   * Initialise les paramètres à leurs valeurs par défaut et construit le dialogue
   *
   * @param parent widget père de la fenêtre de dialogue
   */
  Param(Widget parent);
  /**
   * Destructeur.
   * Libère la mémoire
   */
  ~Param();
  /**
   * Charge les paramètres à partir d'un fichier au format .param
   *
   * @param inFile nom du fichier de paramètre à charger
   */
  void loadParameters(char inFile[]);
  /** 
   * Sauve les paramètres dans un fichier au format .param
   * 
   * @param outFile nom du fichier de sauvegarde
   */
  void saveParameters(char outFile[]);
  /**
   * Récupère les paramètres des différentes widgets vers les variables de l'objet.
   * Exemple: stocke dans @ref Param::fft_size la valeur stockée dans le widget @ref Param::tfft
   */
  void getParameters();
  /**
   * Positionne les différents widgets en fonction des paramètres de la classe.
   * Exemple: positionne le widget @ref Param::tfft à la valeur @ref Param::fft_size
   */
  void setParameters();
  /**
   * Fonction callback du bouton Load (@ref Param::buttonLoad). Déclenche l'ouverture  d'une boîte de dialogue
   * afin de saisir le nom du fichier à ouvrir. Cette fonction est publique car elle
   * est appelée par la classe @ref Menu lors du choix Options/Charger Paramètres.
   *
   * @param w widget père pour l'affichage de la FileSelectionBox
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   */
  static void loadButton(Widget w, XtPointer clientData, XtPointer);
  /**
   * Fonction callback du bouton Save (@ref Param::buttonSave). Déclenche l'ouverture d'une boîte de dialogue
   * afin de saisir le nom du fichier de sauvegarde. Cette fonction est publique car elle
   * est appelée par la classe @ref Menu lors du choix Options/Sauver Paramètres.
   *
   * @param w widget père pour l'affichage de la FileSelectionBox
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   */
  static void saveButton(Widget w, XtPointer clientData, XtPointer);
  
private:
  /**
   * Fonction callback du bouton Ok (@ref Param::buttonOk). Récupère les paramètres et ferme la boîte de dialogue.
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   */
  static void okButton(Widget,XtPointer clientData,XtPointer);
  /**
   * Fonction callback du bouton Cancel (@ref Param::buttonCancel). Ferme la boîte de dialogue.
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   */
  static void cancelButton(Widget,XtPointer clientData,XtPointer);
  /**
   * Fonction callback du bouton Stop Analysis (@ref Param::buttonStop). Stoppe l'analyse en cours.
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   */
  static void stopButton(Widget,XtPointer clientData,XtPointer);
  /**
   * Fonction callback du bouton Ok de la boîte de sélection des fichiers.
   * @param w widget père
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   * @param selection pointeur sur la sélection de fichier (cf MOTIF)
   */
  static void selectOk(Widget w, XtPointer clientData, XmFileSelectionBoxCallbackStruct* selection);
  /** 
   * Fonction callback du bouton Cancel de la boîte de sélection des fichiers.
   * @param w widget père
   */
  static void selectCancel(Widget w,XtPointer,XtPointer);
  /**
   * Fonction callback de la check box permettant de permuter entre secondes et échantillon
   * pour l'addichage de la taille de la fenêtre d'analyse et du pas d'analyse.
   * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++)
   */
  static void samsSecsCheck(Widget, XtPointer clientData, XtPointer);
};

#endif



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