Floyd Steinberg dithering enabled on 24b picture loading... doesn' t give very impressing results on my test picture, however...
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@122 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
867ac703ca
commit
fce305c1eb
30
op_c.c
30
op_c.c
@ -1081,12 +1081,13 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i
|
||||
Rouge=Courant->R;
|
||||
Vert =Courant->V;
|
||||
Bleu =Courant->B;
|
||||
// Cherche la couleur correspondant dans la palette et la range dans l'image de destination
|
||||
*D=TC_Get(tc,Rouge,Vert,Bleu);
|
||||
/*
|
||||
|
||||
// Puis on calcule pour chaque composante l'erreur dûe à l'approximation
|
||||
Rouge=Rouge-palette[*D].R;
|
||||
Vert =Vert -palette[*D].V;
|
||||
Bleu =Bleu -palette[*D].B;
|
||||
Rouge=palette[*D].R - Rouge;
|
||||
Vert =palette[*D].V - Vert;
|
||||
Bleu =palette[*D].B - Bleu;
|
||||
|
||||
// On initialise la quantité d'erreur diffusée
|
||||
DRouge=Rouge;
|
||||
@ -1095,11 +1096,12 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i
|
||||
|
||||
// Et dans chaque pixel voisin on propage l'erreur
|
||||
// A droite:
|
||||
ERouge=(Rouge*7)/16;
|
||||
EVert =(Vert *7)/16;
|
||||
EBleu =(Bleu *7)/16;
|
||||
ERouge=(Rouge*7)/16.0;
|
||||
EVert =(Vert *7)/16.0;
|
||||
EBleu =(Bleu *7)/16.0;
|
||||
if (Pos_X+1<largeur)
|
||||
{
|
||||
// Valeur_modifiee fait la somme des 2 params en bornant sur [0,255]
|
||||
C_plus1->R=Valeur_modifiee(C_plus1->R,ERouge);
|
||||
C_plus1->V=Valeur_modifiee(C_plus1->V,EVert );
|
||||
C_plus1->B=Valeur_modifiee(C_plus1->B,EBleu );
|
||||
@ -1110,9 +1112,9 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i
|
||||
// En bas à gauche:
|
||||
if (Pos_Y+1<hauteur)
|
||||
{
|
||||
ERouge=(Rouge*3)/16;
|
||||
EVert =(Vert *3)/16;
|
||||
EBleu =(Bleu *3)/16;
|
||||
ERouge=(Rouge*3)/16.0;
|
||||
EVert =(Vert *3)/16.0;
|
||||
EBleu =(Bleu *3)/16.0;
|
||||
if (Pos_X>0)
|
||||
{
|
||||
S_moins1->R=Valeur_modifiee(S_moins1->R,ERouge);
|
||||
@ -1123,9 +1125,9 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i
|
||||
DVert -=EVert;
|
||||
DBleu -=EBleu;
|
||||
// En bas:
|
||||
ERouge=(Rouge*4)/16;
|
||||
EVert =(Vert *4)/16;
|
||||
EBleu =(Bleu *4)/16;
|
||||
ERouge=(Rouge/4);
|
||||
EVert =(Vert /4);
|
||||
EBleu =(Bleu /4);
|
||||
Suivant->R=Valeur_modifiee(Suivant->R,ERouge);
|
||||
Suivant->V=Valeur_modifiee(Suivant->V,EVert );
|
||||
Suivant->B=Valeur_modifiee(Suivant->B,EBleu );
|
||||
@ -1140,7 +1142,7 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i
|
||||
S_plus1->B=Valeur_modifiee(S_plus1->B,DBleu );
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// On passe au pixel suivant :
|
||||
Courant++;
|
||||
C_plus1++;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user