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:
parent
9ee9a54415
commit
015aa04a56
6
TODO.md
6
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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
55
src/image.cpp
Normal 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);
|
||||
}
|
50
src/image.h
50
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 <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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Reference in a new issue