summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore11
-rw-r--r--canevas.cpp46
-rw-r--r--canevas.h42
-rw-r--r--coordonnee.h18
-rw-r--r--couche.cpp11
-rw-r--r--couche.h18
-rw-r--r--forme.cpp31
-rw-r--r--forme.h31
-rw-r--r--graphicus-01.cpp18
-rw-r--r--makefile27
-rw-r--r--tests.cpp50
-rw-r--r--tests.h28
12 files changed, 331 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7aa28f5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,11 @@
+# C++ binary files:
+*.exe
+*.out
+*.o
+*.obj
+
+# Ctags:
+tags
+
+# Vim buffers:
+*.swp
diff --git a/canevas.cpp b/canevas.cpp
new file mode 100644
index 0000000..bc7a0e5
--- /dev/null
+++ b/canevas.cpp
@@ -0,0 +1,46 @@
+/********
+ * Fichier: canevas.cpp
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Implementation des methodes des classes decrites dans
+ * canevas.h. Ce fichier fait partie de la distribution de Graphicus.
+********/
+
+#include "canevas.h"
+
+Canevas::Canevas() {
+}
+
+Canevas::~Canevas() {
+}
+
+bool Canevas::reinitialiser() {
+ return true;
+}
+
+bool Canevas::activerCouche(int index) {
+ return true;
+}
+
+bool Canevas::cacherCouche(int index) {
+ return true;
+}
+
+bool Canevas::ajouterForme(Forme *p_forme) {
+ return true;
+}
+
+bool Canevas::retirerForme(int index) {
+ return true;
+}
+
+double Canevas::aire() {
+ return 0.0;
+}
+
+bool Canevas::translater(int deltaX, int deltaY) {
+ return true;
+}
+
+void Canevas::afficher(ostream & s) {
+}
diff --git a/canevas.h b/canevas.h
new file mode 100644
index 0000000..21ed457
--- /dev/null
+++ b/canevas.h
@@ -0,0 +1,42 @@
+/********
+ * Fichier: canevas.h
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Declaration de la classe Canevas. La classe gere un
+ * tableau de couches en accord avec les specifications de Graphicus.
+ * Ce fichier fait partie de la distribution de Graphicus.
+********/
+
+#ifndef DESSIN_H
+#define DESSIN_H
+
+#include <iostream>
+#include "forme.h"
+#include "couche.h"
+
+const int MAX_COUCHES = 5;
+
+using namespace std;
+
+class Canevas {
+public:
+ Canevas();
+ ~Canevas();
+
+ bool reinitialiser();
+
+ bool activerCouche(int index);
+ bool cacherCouche(int index);
+
+ bool ajouterForme(Forme *p_forme);
+ bool retirerForme(int index);
+
+ double aire();
+ bool translater(int deltaX, int deltaY);
+ void afficher(ostream & s);
+
+private:
+ Couche couches[MAX_COUCHES];
+};
+
+#endif
diff --git a/coordonnee.h b/coordonnee.h
new file mode 100644
index 0000000..a36901b
--- /dev/null
+++ b/coordonnee.h
@@ -0,0 +1,18 @@
+/********
+ * Fichier: coordonnee.h
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Structure pour l'ancrage d'une forme geometrique. Cette
+ * classe et donc de fichier, ne doit pas etre modifie. Ce fichier
+ * fait partie de la distribution de Graphicus.
+********/
+
+#ifndef COORDONNEE_H
+#define COORDONNEE_H
+
+struct Coordonnee {
+ int x;
+ int y;
+};
+
+#endif
diff --git a/couche.cpp b/couche.cpp
new file mode 100644
index 0000000..07c4418
--- /dev/null
+++ b/couche.cpp
@@ -0,0 +1,11 @@
+/********
+ * 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"
+
+// Implementation a faire...
diff --git a/couche.h b/couche.h
new file mode 100644
index 0000000..32cba2f
--- /dev/null
+++ b/couche.h
@@ -0,0 +1,18 @@
+/********
+ * Fichier: couche.h
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Declaration de la classe pour une couche dans un
+ * canevas. La classe Couche gere un vecteur de pointeur de formes
+ * geometriques en accord avec les specifications de Graphicus.
+ * Ce fichier fait partie de la distribution de Graphicus.
+********/
+
+#ifndef COUCHE_H
+#define COUCHE_H
+
+class Couche {
+ // Classe a completer
+};
+
+#endif
diff --git a/forme.cpp b/forme.cpp
new file mode 100644
index 0000000..f6a9415
--- /dev/null
+++ b/forme.cpp
@@ -0,0 +1,31 @@
+/********
+ * Fichier: forme.cpp
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Implementation des methodes des classes decrites dans
+ * forme.h. Les methodes de la classe Forme ne doivent pas etre
+ * modifiees. Ce fichier fait partie de la distribution de Graphicus.
+********/
+
+#include "forme.h"
+
+Forme::Forme(int x1, int y1) {
+ ancrage.x = x1;
+ ancrage.y = y1;
+}
+
+Forme::~Forme() {
+}
+
+void Forme::translater(int deltaX, int deltaY) {
+ ancrage.x += deltaX;
+ ancrage.y += deltaY;
+}
+
+Coordonnee Forme::getAncrage() {
+ return ancrage;
+}
+
+void Forme::setAncrage(Coordonnee c) {
+ ancrage = c;
+}
diff --git a/forme.h b/forme.h
new file mode 100644
index 0000000..c719366
--- /dev/null
+++ b/forme.h
@@ -0,0 +1,31 @@
+/********
+ * Fichier: forme.h
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Declaration des classes de formes geometriques. La
+ * classe Forme ne doit pas etre modifiee. Ce fichier fait partie de
+ * la distribution de Graphicus.
+********/
+
+#ifndef FORME_H
+#define FORME_H
+
+#include <iostream>
+#include "coordonnee.h"
+
+using namespace std;
+
+class Forme {
+public:
+ Forme(int x = 0, int y = 0);
+ virtual ~Forme();
+ void translater(int deltaX, int deltaY);
+ Coordonnee getAncrage();
+ void setAncrage(Coordonnee c);
+ virtual double aire() = 0;
+ virtual void afficher(ostream & s) = 0;
+protected:
+ Coordonnee ancrage;
+};
+
+#endif
diff --git a/graphicus-01.cpp b/graphicus-01.cpp
new file mode 100644
index 0000000..b544cc8
--- /dev/null
+++ b/graphicus-01.cpp
@@ -0,0 +1,18 @@
+/********
+ * Fichier: graphicus-01.cpp
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: gestionnaire de tests pour l'application Graphicus. Ce
+ * fichier fait partie de la distribution de Graphicus.
+********/
+#include "tests.h"
+
+using namespace std;
+
+int main() {
+ Tests tests;
+
+ tests.tests_application();
+ return 0;
+}
+
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..86bcbe2
--- /dev/null
+++ b/makefile
@@ -0,0 +1,27 @@
+#
+# Auteur: C.-A. Brunet
+# Date: 08 janvier 2018
+# Description: compilation de graphicus-01. Ce fichier fait partie de
+# la distribution de Graphicus.
+#
+
+graphicus-01: graphicus-01.o tests.o canevas.o couche.o forme.o
+ g++ -o graphicus-01 graphicus-01.o tests.o canevas.o couche.o forme.o
+
+graphicus-01.o: graphicus-01.cpp canevas.h couche.h forme.h
+ g++ -c graphicus-01.cpp
+
+tests.o: tests.cpp tests.h canevas.h couche.h forme.h
+ g++ -c tests.cpp
+
+canevas.o: canevas.cpp canevas.h couche.h forme.h
+ g++ -c canevas.cpp
+
+couche.o: couche.cpp couche.h forme.h
+ g++ -c couche.cpp
+
+forme.o: forme.cpp forme.h
+ g++ -c forme.cpp
+
+clean:
+ rm -f *.o
diff --git a/tests.cpp b/tests.cpp
new file mode 100644
index 0000000..83bce1c
--- /dev/null
+++ b/tests.cpp
@@ -0,0 +1,50 @@
+/********
+ * Fichier: tests.cpp
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Implementation des methodes des classes decrites dans
+ * tests.h. Ce fichier peut etre adapte a vos besoins de tests.
+ * Ce fichier fait partie de la distribution de Graphicus.
+********/
+
+#include "tests.h"
+
+void Tests::tests_unitaires_formes() {
+ // Tests sur les formes geometriques
+}
+
+void Tests::tests_unitaires_vecteur() {
+ // Tests sur la classe Vecteur
+}
+
+void Tests::tests_unitaires_couche() {
+ // Tests sur la classe Couche
+}
+
+void Tests::tests_unitaires_canevas() {
+ // Tests sur la classe Canevas
+}
+
+void Tests::tests_unitaires() {
+ // Fait tous les tests unitaires
+ tests_unitaires_formes();
+ tests_unitaires_vecteur();
+ tests_unitaires_couche();
+ tests_unitaires_canevas();
+}
+
+void Tests::tests_application() {
+ // Fait tous les tests applicatifs
+ tests_application_cas_01();
+ tests_application_cas_02();
+}
+
+void Tests::tests_application_cas_01() {
+ cout << "TESTS APPLICATION (CAS 01)" << endl;
+ // Il faut ajouter les operations realisant ce scenario de test.
+}
+
+void Tests::tests_application_cas_02() {
+ cout << "TESTS APPLICATION (CAS 02)" << endl;
+ // Il faut ajouter les operations realisant ce scenario de test.
+}
diff --git a/tests.h b/tests.h
new file mode 100644
index 0000000..3397fb9
--- /dev/null
+++ b/tests.h
@@ -0,0 +1,28 @@
+/********
+ * Fichier: tests.h
+ * Auteurs: C.-A. Brunet
+ * Date: 08 janvier 2018 (creation)
+ * Description: Declaration de la classe pour les tests de Graphicus.
+ * Ce fichier peut etre adapte a vos besoins de tests. Ce fichier
+ * fait partie de la distribution de Graphicus.
+********/
+
+#include <iostream>
+#include "canevas.h"
+
+using namespace std;
+
+class Tests {
+public:
+ // Methodes pour les tests unitaires des classes
+ void tests_unitaires_formes();
+ void tests_unitaires_vecteur();
+ void tests_unitaires_couche();
+ void tests_unitaires_canevas();
+ void tests_unitaires(); // Appel de tous les tests unitaires
+
+ // Methodes pour les tests unitaires des classes
+ void tests_application_cas_01();
+ void tests_application_cas_02();
+ void tests_application(); // Appel de tous les tests applicatifs
+};