From 5cbb09516a98d53943062badc08865507f18100d Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Tue, 10 Jan 2023 10:28:04 -0500 Subject: Initial commit --- .gitignore | 11 +++++++++++ canevas.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ canevas.h | 42 ++++++++++++++++++++++++++++++++++++++++++ coordonnee.h | 18 ++++++++++++++++++ couche.cpp | 11 +++++++++++ couche.h | 18 ++++++++++++++++++ forme.cpp | 31 +++++++++++++++++++++++++++++++ forme.h | 31 +++++++++++++++++++++++++++++++ graphicus-01.cpp | 18 ++++++++++++++++++ makefile | 27 +++++++++++++++++++++++++++ tests.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests.h | 28 ++++++++++++++++++++++++++++ 12 files changed, 331 insertions(+) create mode 100644 .gitignore create mode 100644 canevas.cpp create mode 100644 canevas.h create mode 100644 coordonnee.h create mode 100644 couche.cpp create mode 100644 couche.h create mode 100644 forme.cpp create mode 100644 forme.h create mode 100644 graphicus-01.cpp create mode 100644 makefile create mode 100644 tests.cpp create mode 100644 tests.h 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 +#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 +#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 +#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 +}; -- cgit v1.2.3