summaryrefslogtreecommitdiff
path: root/couche.cpp
blob: b84cc73050185d7ce4417ae0bb52966baaab22de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/********
 * Fichier: couche.cpp
 * Auteurs: C.-A. Brunet
 * Date: 08 janvier 2018 (creation)
 * Description: Implementation des methodes des classes decrites dans
 *    couche.h. Ce fichier fait partie de la distribution de Graphicus.
********/

#include "couche.h"

Couche::Couche() {
  state = STATE_INIT;
  Vecteur vecteur;
};

Couche::~Couche() {
  vecteur.vider();
};

int Couche::getEtat() {
  return state;
};

Forme *Couche::getForme(int index) {
  return vecteur.getForme(index);
};

double Couche::aire() {
  double aire = 0;
  for (int i = 0; i < vecteur.getTaille(); i++) {
    aire += vecteur.getForme(i)->aire();
  };
  return aire;
};

void Couche::afficher(ostream &s) {
  if (state == STATE_INIT) {
    s << "Couche initialisée\n";
  } else {
    vecteur.afficher(s);
  };
};

bool Couche::changerEtat(int newState) {
  if ( newState>=STATE_INIT && newState<=STATE_INACTIVE ) {
    state = newState;
    return true;
  };
  return false;
};

bool Couche::translater(int deltaX, int deltaY) {
  if (state != STATE_ACTIVE) return false;
  for (int i = 0; i < vecteur.getTaille(); i++)
    vecteur.getForme(i)->translater(deltaX, deltaY);
  return true;
};

bool Couche::ajouterForme(Forme *f) {
  if (state != STATE_ACTIVE) return false;
  return vecteur.ajouterForme(f);
};

Forme *Couche::supprimerForme(int index) {
  if (state != STATE_ACTIVE) {
    return NULL;
  } else {
    return vecteur.supprimerForme(index);
  };
  return vecteur.supprimerForme(index);
};

bool Couche::reinitialiser() {
  if (state == STATE_INIT) return false;
  state = STATE_INIT;
  vecteur.vider();
  return true;
};