Corrections des commandes couleurs
* Luminosité & Saturation : multiplication au lieu d'addition * Le zéro de saturation était mal géré
This commit is contained in:
parent
82a60fccf9
commit
68694e3d73
|
@ -12,7 +12,7 @@ Nos noms complets et le nom du lycée sont masqués pour des raisons d'intimité
|
||||||
###Le programme
|
###Le programme
|
||||||
Ce programme est un éditeur basique d'images [PBM/PGM/PPM](http://fr.wikipedia.org/wiki/Portable_pixmap) s’exécutant en ligne de commande.
|
Ce programme est un éditeur basique d'images [PBM/PGM/PPM](http://fr.wikipedia.org/wiki/Portable_pixmap) s’exécutant en ligne de commande.
|
||||||
|
|
||||||
*Version :* v1.0.0
|
*Version :* v1.0.1
|
||||||
|
|
||||||
*Status :* [![Build Status](https://travis-ci.org/GeoffreyFrogeye/PILG.svg?branch=master)](https://travis-ci.org/GeoffreyFrogeye/PILG)
|
*Status :* [![Build Status](https://travis-ci.org/GeoffreyFrogeye/PILG.svg?branch=master)](https://travis-ci.org/GeoffreyFrogeye/PILG)
|
||||||
|
|
||||||
|
|
|
@ -398,7 +398,7 @@ int saturation(Image entree, Image &sortie,
|
||||||
for (int y = 0; y < sortie.g_dimensionY(); y++) {
|
for (int y = 0; y < sortie.g_dimensionY(); y++) {
|
||||||
entree.g_pixel(x, y, pixel);
|
entree.g_pixel(x, y, pixel);
|
||||||
rvb2tsl(pixel, tsl);
|
rvb2tsl(pixel, tsl);
|
||||||
tsl.s += saturation;
|
tsl.s *= saturation;
|
||||||
tsl.s = tsl.s > 1 ? 1 : (tsl.s < 0 ? 0 : tsl.s);
|
tsl.s = tsl.s > 1 ? 1 : (tsl.s < 0 ? 0 : tsl.s);
|
||||||
tsl2rvb(tsl, pixel);
|
tsl2rvb(tsl, pixel);
|
||||||
sortie.s_pixel(x, y, pixel);
|
sortie.s_pixel(x, y, pixel);
|
||||||
|
@ -418,7 +418,7 @@ int luminosite(Image entree, Image &sortie,
|
||||||
for (int y = 0; y < sortie.g_dimensionY(); y++) {
|
for (int y = 0; y < sortie.g_dimensionY(); y++) {
|
||||||
entree.g_pixel(x, y, pixel);
|
entree.g_pixel(x, y, pixel);
|
||||||
rvb2tsl(pixel, tsl);
|
rvb2tsl(pixel, tsl);
|
||||||
tsl.l += luminosite;
|
tsl.l *= luminosite;
|
||||||
tsl.l = tsl.l > 1 ? 1 : (tsl.l < 0 ? 0 : tsl.l);
|
tsl.l = tsl.l > 1 ? 1 : (tsl.l < 0 ? 0 : tsl.l);
|
||||||
tsl2rvb(tsl, pixel);
|
tsl2rvb(tsl, pixel);
|
||||||
sortie.s_pixel(x, y, pixel);
|
sortie.s_pixel(x, y, pixel);
|
||||||
|
|
|
@ -66,14 +66,14 @@ int tsl2rvb(TSL entree, Pixel &sortie) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entree.s == 0) {
|
if (entree.s == 0) {
|
||||||
fill_n(c, 3, entree.l * 255);
|
fill_n(c, 3, entree.l);
|
||||||
} else {
|
} else {
|
||||||
fill_n(t3, 3, 0);
|
fill_n(t3, 3, 0);
|
||||||
fill_n(c, 3, 0);
|
fill_n(c, 3, 0);
|
||||||
t2 = entree.l < 0.5 ? entree.l * (1 + entree.s) : entree.l + entree.s - entree.l
|
t2 = entree.l < 0.5 ? entree.l * (1 + entree.s) : entree.l + entree.s - entree.l
|
||||||
* entree.s;
|
* entree.s;
|
||||||
t1 = 2 * entree.l - t2;
|
t1 = 2 * entree.l - t2;
|
||||||
entree.t /= 360;
|
entree.t /= 360.0;
|
||||||
t3[0] = entree.t + 1 / 3.0;
|
t3[0] = entree.t + 1 / 3.0;
|
||||||
t3[1] = entree.t;
|
t3[1] = entree.t;
|
||||||
t3[2] = entree.t - 1 / 3.0;
|
t3[2] = entree.t - 1 / 3.0;
|
||||||
|
@ -97,12 +97,11 @@ int tsl2rvb(TSL entree, Pixel &sortie) {
|
||||||
c[i] = t1;
|
c[i] = t1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sortie.r = c[0] * sortie.maxComposante;
|
|
||||||
sortie.v = c[1] * sortie.maxComposante;
|
|
||||||
sortie.b = c[2] * sortie.maxComposante;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sortie.r = c[0] * sortie.maxComposante;
|
||||||
|
sortie.v = c[1] * sortie.maxComposante;
|
||||||
|
sortie.b = c[2] * sortie.maxComposante;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue