From 015aa04a56a2605c4e9d77bef695cca666f39df4 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Mon, 14 Apr 2014 00:16:49 +0200 Subject: [PATCH] Codage de l'objet Image et test BGI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Import du code de Geoffrey de la séance du 7/04/14 * Création et ajout de code essentiel dans l'objet Image * Modification de l'objet Pixel en type * Implémentation non-fonctionelle d'affichageFenetre pour BGI --- TODO.md | 6 ++-- src/affichageFenetreBGI.cpp | 40 ++++++++++++++++++------- src/affichageFenetreBGI.h | 12 -------- src/image.cpp | 55 +++++++++++++++++++++++++++++++++++ src/image.h | 50 +++++++++++++++---------------- src/main.cpp | 2 +- src/test_affichageFenetre.cpp | 2 +- 7 files changed, 112 insertions(+), 55 deletions(-) delete mode 100644 src/affichageFenetreBGI.h create mode 100644 src/image.cpp diff --git a/TODO.md b/TODO.md index 670922a..300374d 100644 --- a/TODO.md +++ b/TODO.md @@ -15,9 +15,9 @@ * Correspondance commandes ↔ fonctions * Objets * Fenêtre **D** - * SDL - * BGI - * Pixel **D** + * SDL **C** + * BGI **A** + * Pixel **C** * Image **D** * Fonctions **D** * Gestion de fichier diff --git a/src/affichageFenetreBGI.cpp b/src/affichageFenetreBGI.cpp index b0f178b..12894de 100644 --- a/src/affichageFenetreBGI.cpp +++ b/src/affichageFenetreBGI.cpp @@ -1,12 +1,30 @@ -class Fenetre { +#include -public: - int Fenetre(int dimensionX, int dimensionY, string nom); // Crée une fenêtre - int setNom(string nom); // Change le nom de la fenêtre - int point(int x, int y); -private: - int dimensionX; // Stocke les dimensions X de la fenêtre - int dimensionY; // Stocke les dimensions Y de la fenêtre - string m_nom; // Stocke le nom de la fenêtre - vector< vector< int[3] > > tab; // Tableau qui stocke les pixels -}; +int ouvrirFenetre(int dimensionX, int dimensionY, const char* nom) { // Crée une fenêtre + initwindow(dimensionX, dimensionY, nom, 0, 0); + return 0; +} + +int setNomFenetre(const char* nom) { // Change le nom de la fenêtre + return 0; +} + +int pointFenetre(int x, int y, int r, int v, int b) { + putpixel(x, y, COLOR(r, v, b)); + return 0; +} + +int afficherFenetre() { + + return 0; +} + +int attendreFenetre() { + while (kbhit()) { + delay(100); + } +} + +int fermerFenetre() { + closegraph(ALL_WINDOWS); +} diff --git a/src/affichageFenetreBGI.h b/src/affichageFenetreBGI.h deleted file mode 100644 index b0f178b..0000000 --- a/src/affichageFenetreBGI.h +++ /dev/null @@ -1,12 +0,0 @@ -class Fenetre { - -public: - int Fenetre(int dimensionX, int dimensionY, string nom); // Crée une fenêtre - int setNom(string nom); // Change le nom de la fenêtre - int point(int x, int y); -private: - int dimensionX; // Stocke les dimensions X de la fenêtre - int dimensionY; // Stocke les dimensions Y de la fenêtre - string m_nom; // Stocke le nom de la fenêtre - vector< vector< int[3] > > tab; // Tableau qui stocke les pixels -}; diff --git a/src/image.cpp b/src/image.cpp new file mode 100644 index 0000000..7bff85c --- /dev/null +++ b/src/image.cpp @@ -0,0 +1,55 @@ +int Image::Image(int dimensionX, int dimensionY, int maxComposante, int typeComposantes) { // Crée l'objet Image + +} +// Getters +int Image::g_dimensionX() { + return m_dimensionX; +} +int Image::g_dimensionY() { + return m_dimensionY; + +} +int Image::g_typeComposante() { + return m_typeComposante; +} +int Image::g_maxComposante() { + return m_typeComposante; + +} +int g_point(int x, int y, Pixel &pixel) { + if (en_Limites(x, y)) { + pixel = m_tab[x][y]; + return 0; + } else { + return 1; + } +} +// Setters + +int Image::s_point(int x, int y, Pixel pixel) { + if (en_Limites(x, y) && pixel.typeComposantes == Image.g_typeComposante && pixel.maxComposante == Image.g_maxComposante && enLimitesComposantes(pixel)) { + m_tab[x][y] = pixel; + } + +} + +bool Image::enLimitesComposantes(Pixel pixel) { + switch (pixel.typeComposantes) { + case 0: + return true; + break; + case 1: + return pixel.m <= pixel.maxComposante; + break; + case 2: + return (pixel.r <= pixel.maxComposante && pixel.v <= pixel.maxComposante && pixel.b <= pixel.maxComposante); + break; + default: + return false; + break; + } +} + +bool Image::enLimites(int x, int y) { + return (x >= 0 && x < g_dimensionX && y >= 0 && y < g_dimensionY); +} \ No newline at end of file diff --git a/src/image.h b/src/image.h index 8f7d051..7f06b6e 100644 --- a/src/image.h +++ b/src/image.h @@ -1,37 +1,33 @@ -class Pixel { -public: - int Pixel(int typeComposantes, int maxComposante); // Crée l'objet Pixel - int getR(); // Récupère la composante Rouge - int getV(); // Récupère la composante Vert - int getB(); // Récupère la composante Bleu - int getG(); // Récupère la composante Gris - bool getN(); // Récupère la composante Noir - int getTypeComposantes(); // Récupère le type de composante - int getMaxComposantes(); // Récupère le maximum de composante +#include - int setR(int R); // Change la composante Rouge - int setV(int V); // Change la composante Vert - int setB(int B); // Change la composante Bleu - int setG(int G); // Change la composante Gris - int setN(bool N); // Change la composante Noir - -private: - int m_typeComposantes; // 0 : N&B, 1 : Niveaux de gris, 2 : RVB - int m_maxComposante; // Maximum de composante (inutilisé pour binaire) - int m_R; - int m_V; - int m_B; - int m_G; - bool m_N; -}; +typedef Pixel { + int typeComposantes; + int maxComposante; + int r; + int v; + int b; + int g; + bool n; + +} Pixel; class Image { public: int Image(int dimensionX, int dimensionY, int maxComposante, int typeComposantes); // Crée l'objet Image - int point(int x, int y, Pixel pixel); // Définit une couleur au point - Pixel getPoint(int x, int y); + // Getters + int g_dimensionX(); + int g_dimensionY(); + int g_typeComposante(); + int g_maxComposante(); + Pixel g_point(int x, int y); + // Setters + int s_point(int x, int y, Pixel pixel); private: + bool enLimitesComposantes(Pixel pixel); + bool enLimites(int x, int y); + int m_dimensionX; + int m_dimensionY; int m_typeComposantes; // 0 : N&B, 1 : Niveaux de gris, 2 : RVB int m_maxComposante; // Maximum de composante (inutilisé pour binaire) vector< vector< Pixel > > m_tab; diff --git a/src/main.cpp b/src/main.cpp index 8965b65..dd7caf6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,7 @@ #include #include -#include "affichageFenetreSDL.cpp" // Devrait charger le .h mais le programme est relativement simple (sans Makefile) donc on assemble tout en même temps +#include "affichageFenetreSDL.cpp" using namespace std; diff --git a/src/test_affichageFenetre.cpp b/src/test_affichageFenetre.cpp index b04f0fb..c7366d2 100644 --- a/src/test_affichageFenetre.cpp +++ b/src/test_affichageFenetre.cpp @@ -1,7 +1,7 @@ #include #include -#include "affichageFenetreSDL.cpp" // Devrait charger le .h mais le programme est relativement simple (sans Makefile) donc on assemble tout en même temps +#include "affichageFenetreBGI.cpp" using namespace std;