diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2023-01-10 10:28:04 -0500 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2023-01-10 10:28:04 -0500 |
commit | 5cbb09516a98d53943062badc08865507f18100d (patch) | |
tree | 1e677ab876a6fca9b1e0f0d14885e299f4ecaf6e |
Initial commit
-rw-r--r-- | .gitignore | 11 | ||||
-rw-r--r-- | canevas.cpp | 46 | ||||
-rw-r--r-- | canevas.h | 42 | ||||
-rw-r--r-- | coordonnee.h | 18 | ||||
-rw-r--r-- | couche.cpp | 11 | ||||
-rw-r--r-- | couche.h | 18 | ||||
-rw-r--r-- | forme.cpp | 31 | ||||
-rw-r--r-- | forme.h | 31 | ||||
-rw-r--r-- | graphicus-01.cpp | 18 | ||||
-rw-r--r-- | makefile | 27 | ||||
-rw-r--r-- | tests.cpp | 50 | ||||
-rw-r--r-- | tests.h | 28 |
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; +} @@ -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. +} @@ -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 +}; |