Codage de l'objet Image et test BGI

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
This commit is contained in:
Geoffrey Frogeye 2014-04-14 00:16:49 +02:00
parent 9ee9a54415
commit 015aa04a56
7 changed files with 112 additions and 55 deletions

View file

@ -15,9 +15,9 @@
* Correspondance commandes ↔ fonctions * Correspondance commandes ↔ fonctions
* Objets * Objets
* Fenêtre **D** * Fenêtre **D**
* SDL * SDL **C**
* BGI * BGI **A**
* Pixel **D** * Pixel **C**
* Image **D** * Image **D**
* Fonctions **D** * Fonctions **D**
* Gestion de fichier * Gestion de fichier

View file

@ -1,12 +1,30 @@
class Fenetre { #include <graphics.h>
public: int ouvrirFenetre(int dimensionX, int dimensionY, const char* nom) { // Crée une fenêtre
int Fenetre(int dimensionX, int dimensionY, string nom); // Crée une fenêtre initwindow(dimensionX, dimensionY, nom, 0, 0);
int setNom(string nom); // Change le nom de la fenêtre return 0;
int point(int x, int y); }
private:
int dimensionX; // Stocke les dimensions X de la fenêtre int setNomFenetre(const char* nom) { // Change le nom de la fenêtre
int dimensionY; // Stocke les dimensions Y de la fenêtre return 0;
string m_nom; // Stocke le nom de la fenêtre }
vector< vector< int[3] > > tab; // Tableau qui stocke les pixels
}; 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);
}

View file

@ -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
};

55
src/image.cpp Normal file
View file

@ -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);
}

View file

@ -1,37 +1,33 @@
class Pixel { #include <vector>
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
int setR(int R); // Change la composante Rouge typedef Pixel {
int setV(int V); // Change la composante Vert int typeComposantes;
int setB(int B); // Change la composante Bleu int maxComposante;
int setG(int G); // Change la composante Gris int r;
int setN(bool N); // Change la composante Noir int v;
int b;
private: int g;
int m_typeComposantes; // 0 : N&B, 1 : Niveaux de gris, 2 : RVB bool n;
int m_maxComposante; // Maximum de composante (inutilisé pour binaire)
int m_R; } Pixel;
int m_V;
int m_B;
int m_G;
bool m_N;
};
class Image { class Image {
public: public:
int Image(int dimensionX, int dimensionY, int maxComposante, int typeComposantes); // Crée l'objet Image 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 // Getters
Pixel getPoint(int x, int y); 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: 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_typeComposantes; // 0 : N&B, 1 : Niveaux de gris, 2 : RVB
int m_maxComposante; // Maximum de composante (inutilisé pour binaire) int m_maxComposante; // Maximum de composante (inutilisé pour binaire)
vector< vector< Pixel > > m_tab; vector< vector< Pixel > > m_tab;

View file

@ -1,7 +1,7 @@
#include <iostream> #include <iostream>
#include <string> #include <string>
#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; using namespace std;

View file

@ -1,7 +1,7 @@
#include <iostream> #include <iostream>
#include <string> #include <string>
#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; using namespace std;