//*****Cette classe permet de représenter graphiquement un symbole*******
//*Si le symbole est un symbole "logo" on met le booléen representable  * 
//*à true. Cela nous permettra de connaître les actions à faire en      * 
//*fonction des symboles (à dessiner ou non). On dessinera dans un objet*
//*de type zoneDessin (qui utilise une Gtk::DrawingArea)*****************

#include <iostream.h>
#include <string>
#include<math.h>
#include "zoneDessin.h"
using namespace std;

class interpreteGraphique{
 private:
  string lettre;      //la lettre du symbole
  bool representable;
  float nouvelX;      //Les nouvelles positions de x et y
  float nouvelY;
  float angleNv;      //le nouvel angle
  float positionMemX; //les positions à retenir
  float positionMemY;
  int tailleTrait;    //la taille du trait pour dessiner

public:
  //constructeurs
  interpreteGraphique(){};
  interpreteGraphique(string);
 
 //méthodes
  bool estRepresentable();
  //permet de calculer les nouvelles coordonnées à partir d'une position
  // et un angle
  void calculNouvelX(float, float, int); 
  void calculNouvelY(float, float, int);

  string getLettre();
  float getNouvelX();
  float getNouvelY();
  float getNvAngle();
  float getMemX();
  float getMemY();

  //permet de dessiner une ligne dans une zone, avec un angle courant
  // (si on est actuellement au 270 par ex), l'angle du l_systeme,
  //les positions actuelles et futures du point, les positions mémorisées
  //ainsi que la taille du trait
  void dessine(zoneDessin &zone, int angle, float angle2, float x, float y, float posMemX, float posMemY, int trait);
};
