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
|
* 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
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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 {
|
#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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Reference in a new issue