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

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

#include "Controle.h"
#include "NumberField.h"
#include "Couleur.h"
#include "ModuleFont.h"

///
/// Constructeur basique.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
NumberField::NumberField(void):TextField() {
}

///
/// Constructeur avec parametres d'initialisation.
///
/// @param px La position en x du TextField.
/// @param py La position en y du TextField.
/// @param dx La position en x de la zone de daisie par rapport à la position globale du TextField.
/// @param taille La taille de la zone de saisie.
/// @param coul La couleur de base du TextField.
/// @param coulB La couleur de dessin de l'encadrement.
/// @param titre La chaine de caracteres titre du TextField.
/// @param coulT La couleur de dessin du texte.
/// @param coulBG La couleur de dessin d'avant-plan.
/// @param coulFG La couleur de dessin d'arriere-plan.
/// @param v La valeur d'initialisation.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
NumberField::NumberField(int px,int py,int dx,int taille,Couleur *coul,Couleur *coulB,const char *titre,Couleur *coulT,Couleur *coulBG,Couleur *coulFG,int v):TextField(px,py,dx,taille,coul,coulB,titre,coulT,coulBG,coulFG) {
  sprintf(s,"%d",v);
  setText(s);
}

///
/// Constructeur avec parametres d'initialisation.
///
/// @param px La position en x du TextField.
/// @param py La position en y du TextField.
/// @param dx La position en x de la zone de daisie par rapport à la position globale du TextField.
/// @param taille La taille de la zone de saisie.
/// @param coul La couleur de base du TextField.
/// @param coulB La couleur de dessin de l'encadrement.
/// @param titre La chaine de caracteres titre du TextField.
/// @param coulT La couleur de dessin du texte.
/// @param coulBG La couleur de dessin d'avant-plan.
/// @param coulFG La couleur de dessin d'arriere-plan.
/// @param v La valeur d'initialisation.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
NumberField::NumberField(int px,int py,int dx,int taille,Couleur *coul,Couleur *coulB,const char *titre,Couleur *coulT,Couleur *coulBG,Couleur *coulFG,float v):TextField(px,py,dx,taille,coul,coulB,titre,coulT,coulBG,coulFG) {
  sprintf(s,"%f",v);
  setText(s);
}

///
/// Destructeur.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
NumberField::~NumberField(void) {
}

void NumberField::dessiner(void) {
  TextField::dessiner();
}

void NumberField::sauve(void) {
}

void NumberField::annule(void) {
}

int NumberField::selection(int x,int y) {
  return(TextField::selection(x,y));
}

///
/// Lecture de la valeur du TextField.
///
/// @return La valeur lue.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
int NumberField::getInt(void) {
  return(atoi(str));
}

///
/// Lecture de la valeur du TextField.
///
/// @return La valeur lue.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
float NumberField::getFloat(void) {
  return((float) atof(str));
}

///
/// Lecture de la valeur du TextField.
///
/// @return La valeur lue.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
double NumberField::getDouble(void) {
  return(atof(str));
}

///
/// Affectation de la valeur du TextField.
///
/// @param v La valeur affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
void NumberField::set(int v) {
  sprintf(s,"%d",v);
  setText(s);
  dessiner();
}

///
/// Affectation de la valeur du TextField.
///
/// @param v La valeur affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
void NumberField::set(float v) {
  sprintf(s,"%f",v);
  setText(s);
  dessiner();
}

///
/// Affectation de la valeur du TextField.
///
/// @param v La valeur affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
void NumberField::set(double v) {
  sprintf(s,"%lf",v);
  setText(s);
  dessiner();
}
