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
* Objets
* Fenêtre **D**
* SDL
* BGI
* Pixel **D**
* SDL **C**
* BGI **A**
* Pixel **C**
* Image **D**
* Fonctions **D**
* Gestion de fichier

View file

@ -1,12 +1,30 @@
class Fenetre {
#include <graphics.h>
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);
}

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 {
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 <vector>
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;

View file

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

View file

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