summaryrefslogtreecommitdiff
path: root/couche.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'couche.cpp')
-rw-r--r--couche.cpp70
1 files changed, 69 insertions, 1 deletions
diff --git a/couche.cpp b/couche.cpp
index 07c4418..9273031 100644
--- a/couche.cpp
+++ b/couche.cpp
@@ -8,4 +8,72 @@
#include "couche.h"
-// Implementation a faire...
+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 (state == STATE_INIT) return false;
+ state = newState;
+ return true;
+};
+
+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) {
+ int initialState = getEtat();
+ if (initialState == STATE_INACTIVE) return false;
+ bool success = vecteur.ajouterForme(f);
+ if (success) {
+ changerEtat(STATE_ACTIVE);
+ };
+ return success;
+};
+
+Forme *Couche::supprimerForme(int index) {
+ if (state != STATE_ACTIVE) return NULL;
+ return vecteur.supprimerForme(index);
+};
+
+bool Couche::reinitialiser() {
+ if (state == STATE_INIT) return false;
+ state = STATE_INIT;
+ vecteur.vider();
+ return true;
+};
+
+