Geoffrey Frogeye
1f5f2f9c91
Des commandes qui fonctionnent vraiment ainsi quelques conversions entre types de composantes, cela suffit pour passer en alpha ! * Passage au stade d'alpha Certaines commandes peuvent désormais être executées pleinement. On ne rajoutera pas de fonctionnalités (hormis les commandes) majeures. * traitementImage.cpp * Mise en fonction de convBIN et convNIV * Correction de certaines erreurs * Travis devrait être content Note : convNIV et convRVB auront des valeurs par défaut en tant que maximum de composante, les fonctions n'étant pas très utiles à la base rien ne sert de les compliquer * Enième modification du type de fonctions * Resteront des int * Permet de prendre en compte les erreurs qui ne devraient normalement pas arriver * Passage de certaines lignes oubliées au formatteur * pivoter() * Suppression d'une stupidité mathématique (modulo 2π) (Semble plus rapide, sans raison apparente) * analyseCommande.cpp * Les arguments sont désormais correctement analysés * pivoter, convBIN et convNIV peuvent désormais être appelé * Mise en fonction de chaineVersEntier() * Ajout de chaineVersFlottant() * Ajout de l'analyse de l'argument -angle * Ajout de l'analyse de l'argument -couleur * Ajout de messages d'erreurs correspondant à ce qui a été ennoncé précédement
92 lines
2.6 KiB
C++
92 lines
2.6 KiB
C++
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
#include "affichageFenetre.cpp"
|
|
#include "image.h"
|
|
#include "traitementImage.cpp"
|
|
#include "analyserCommande.cpp"
|
|
|
|
#define NOMBREOR 1.61803398875
|
|
|
|
Image imageDefaut() {
|
|
int dimY = 256, dimX = dimY * NOMBREOR, maxComposante = 255;
|
|
Image imageRoue(dimX, dimY, maxComposante, PILG_RVB);
|
|
Pixel pointRoue = imageRoue.g_pixelVide();
|
|
int x, y, step;
|
|
float substep, lum;
|
|
for (x = 0; x < dimX; x++) {
|
|
for (y = 0; y < dimY; y++) {
|
|
step = (x * 6.0) / dimX;
|
|
substep = (x - step * (dimX / 6.0)) / (dimX / 6.0) * maxComposante;
|
|
lum = 1 - ((float) y) / dimY;
|
|
switch (step) {
|
|
case 0:
|
|
pointRoue.r = maxComposante;
|
|
pointRoue.v = substep;
|
|
pointRoue.b = 0;
|
|
break;
|
|
case 1:
|
|
pointRoue.r = maxComposante - substep;
|
|
pointRoue.v = maxComposante;
|
|
pointRoue.b = 0;
|
|
break;
|
|
case 2:
|
|
pointRoue.r = 0;
|
|
pointRoue.v = maxComposante;
|
|
pointRoue.b = substep;
|
|
break;
|
|
case 3:
|
|
pointRoue.r = 0;
|
|
pointRoue.v = maxComposante - substep;
|
|
pointRoue.b = maxComposante;
|
|
break;
|
|
case 4:
|
|
pointRoue.r = substep;
|
|
pointRoue.v = 0;
|
|
pointRoue.b = maxComposante;
|
|
break;
|
|
case 5:
|
|
pointRoue.r = maxComposante;
|
|
pointRoue.v = 0;
|
|
pointRoue.b = maxComposante - substep;
|
|
break;
|
|
default:
|
|
pointRoue.r = pointRoue.v = pointRoue.b = 0;
|
|
}
|
|
|
|
// Dégradé vers le noir
|
|
pointRoue.r = pointRoue.r * lum;
|
|
pointRoue.v = pointRoue.v * lum;
|
|
pointRoue.b = pointRoue.b * lum;
|
|
|
|
imageRoue.s_pixel(x, y, pointRoue);
|
|
}
|
|
}
|
|
return imageRoue;
|
|
}
|
|
|
|
int main(int argc, char *args[]) {
|
|
#if defined(WIN32) // Permet de refaire fonctionner cout et cerr sous Windows après démarrage de SDL
|
|
freopen("CON", "w", stdout);
|
|
freopen("CON", "w", stderr);
|
|
#endif
|
|
|
|
cout << "PILG" << endl; // Message d'entrée et de test
|
|
|
|
Image image = imageDefaut();
|
|
|
|
if (argc > 1) { // Si la commande a été entrée avec des arguments
|
|
vector< string > decoupe;
|
|
for (int i = 1; i < argc; i++) {
|
|
decoupe.push_back(args[i]);
|
|
}
|
|
procederCommande(decoupe, image);
|
|
} else {
|
|
afficherImage(image);
|
|
boucleDeCommandes(image);
|
|
}
|
|
|
|
return 0;
|
|
}
|