///
/// \file CheckBox.h
/// Classe mere du composant CheckBox.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

#ifndef ____CHECKBOX____
#define ____CHECKBOX____

#include <stdio.h>

#include "Controle.h"

class Couleur;

///
/// \class CheckBox
/// Classe mere du composant CheckBox.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

class CheckBox : public Controle {

  protected :
    int *d;                    ///< La variable geree par la CheckBox.
    int save;                  ///< Le champ de sauvegarde de la variable.
    int dx;                    ///< La position de la box cliquable par rapport a la position de base du CheckBox.
    char titre[100];           ///< La chaine de caracteres titre du CheckBox.
    Couleur *coulTexte;        ///< La couleur d'affchage du texte du CheckBox.
    Couleur *coulBox;          ///< La couleur de dessin de la box.

  public :

///
/// Constructeur basique.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    CheckBox(void);

///
/// Constructeur avec parametres d'initialisation.
///
/// @param px La position en x du CheckBox.
/// @param py La position en y du CheckBox.
/// @param dx La position de la box cliquable par rapport a la position de base du CheckBox.
/// @param coul La couleur de base du CheckBox.
/// @param coulB La couleur de dessin de l'encadrement.
/// @param titre La chaine de caracteres titre du CheckBox.
/// @param coulT La couleur de dessin du texte.
/// @param v La variable configuree par le CheckBow.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    CheckBox(int px,int py,int dx,Couleur *coul,Couleur *coulB,const char *titre,Couleur *coulT,int *v);

///
/// Destructeur.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    ~CheckBox(void);

///
/// Dessin du CheckBox.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void dessiner(void);

///
/// Sauvegarde des valeurs actuelles liees au CheckBox.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void sauve(void);

///
/// Restoration des valeurs sauvegardees liees au CheckBox.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void annule(void);

///
/// Selection du CheckBox lie a la position (x,y).
///
/// @param x La coordonnee x.
/// @param y La coordonnee y.
/// @return Le booleen indiquant que la selection a bien ete geree.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual int selection(int x,int y);

///
/// Ajustement d'un ensemble de CheckBox auquel this appartient pour que seul this soit active.
///
/// @param n Le nombre de CheckBox de l'ensemble a gerer.
/// @param ctrl Le tableau des CheckBox.
/// @param v Le tableau des variables (pointeurs) gerees par les CheckBox.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void ajuste(int n,CheckBox **ctrl,int **v);

///
/// Sauvegarde du TextField dans un fichier.
///
/// @param f Le fichier de sauvegarde.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void sauve(FILE *f);
};

#endif
