Contourfill now uses a kind of 'additive XOR' lines : Pixels stay marked even if you pass over them several times.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@588 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
daf5f99979
commit
0c26dc6459
22
graph.c
22
graph.c
@ -856,6 +856,18 @@ void Remplir(byte Couleur_de_remplissage)
|
|||||||
Pos_Y-Principal_Decalage_Y));
|
Pos_Y-Principal_Decalage_Y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Affichage d'un point pour une preview en xor additif
|
||||||
|
// (Il lit la couleur depuis la page backup)
|
||||||
|
void Pixel_figure_Preview_xorback(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur)
|
||||||
|
{
|
||||||
|
if ( (Pos_X>=Limite_Gauche) &&
|
||||||
|
(Pos_X<=Limite_Droite) &&
|
||||||
|
(Pos_Y>=Limite_Haut) &&
|
||||||
|
(Pos_Y<=Limite_Bas) )
|
||||||
|
Pixel_Preview(Pos_X,Pos_Y,~Ecran_backup[Pos_X+Pos_Y*Principal_Largeur_image]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Effacement d'un point de preview
|
// Effacement d'un point de preview
|
||||||
void Pixel_figure_Effacer_preview(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur)
|
void Pixel_figure_Effacer_preview(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur)
|
||||||
{
|
{
|
||||||
@ -1294,6 +1306,16 @@ void Tracer_ligne_Preview_xor(short Debut_X,short Debut_Y,short Fin_X,short Fin_
|
|||||||
Mettre_Ecran_A_Jour((Debut_X<Fin_X)?Debut_X:Fin_X,(Debut_Y<Fin_Y)?Debut_Y:Fin_Y,abs(L)+1,abs(H)+1);
|
Mettre_Ecran_A_Jour((Debut_X<Fin_X)?Debut_X:Fin_X,(Debut_Y<Fin_Y)?Debut_Y:Fin_Y,abs(L)+1,abs(H)+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -- Tracer la preview d'une ligne en xor additif --
|
||||||
|
|
||||||
|
void Tracer_ligne_Preview_xorback(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur)
|
||||||
|
{
|
||||||
|
int L = Fin_X-Debut_X, H = Fin_Y - Debut_Y;
|
||||||
|
Pixel_figure=Pixel_figure_Preview_xorback;
|
||||||
|
Tracer_ligne_General(Debut_X,Debut_Y,Fin_X,Fin_Y,Couleur);
|
||||||
|
Mettre_Ecran_A_Jour((Debut_X<Fin_X)?Debut_X:Fin_X,(Debut_Y<Fin_Y)?Debut_Y:Fin_Y,abs(L)+1,abs(H)+1);
|
||||||
|
}
|
||||||
|
|
||||||
// -- Effacer la preview d'une ligne --
|
// -- Effacer la preview d'une ligne --
|
||||||
|
|
||||||
void Effacer_ligne_Preview(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y)
|
void Effacer_ligne_Preview(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y)
|
||||||
|
|||||||
2
graph.h
2
graph.h
@ -52,6 +52,7 @@ void Remplacer(byte Nouvelle_couleur);
|
|||||||
void Pixel_figure_Preview (word Pos_X,word Pos_Y,byte Couleur);
|
void Pixel_figure_Preview (word Pos_X,word Pos_Y,byte Couleur);
|
||||||
void Pixel_figure_Preview_auto(word Pos_X,word Pos_Y);
|
void Pixel_figure_Preview_auto(word Pos_X,word Pos_Y);
|
||||||
void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,byte Couleur);
|
void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,byte Couleur);
|
||||||
|
void Pixel_figure_Preview_xorback(word Pos_X,word Pos_Y,byte Couleur);
|
||||||
void Pixel_figure_Dans_brosse(word Pos_X,word Pos_Y,byte Couleur);
|
void Pixel_figure_Dans_brosse(word Pos_X,word Pos_Y,byte Couleur);
|
||||||
|
|
||||||
void Tracer_cercle_vide_Definitif(short Centre_X,short Centre_Y,short Rayon,byte Couleur);
|
void Tracer_cercle_vide_Definitif(short Centre_X,short Centre_Y,short Rayon,byte Couleur);
|
||||||
@ -69,6 +70,7 @@ void Tracer_ligne_General(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y, b
|
|||||||
void Tracer_ligne_Definitif (short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
void Tracer_ligne_Definitif (short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
||||||
void Tracer_ligne_Preview (short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
void Tracer_ligne_Preview (short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
||||||
void Tracer_ligne_Preview_xor(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
void Tracer_ligne_Preview_xor(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
||||||
|
void Tracer_ligne_Preview_xorback(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
||||||
void Effacer_ligne_Preview (short Debut_X,short Debut_Y,short Fin_X,short Fin_Y);
|
void Effacer_ligne_Preview (short Debut_X,short Debut_Y,short Fin_X,short Fin_Y);
|
||||||
|
|
||||||
void Tracer_rectangle_vide(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
void Tracer_rectangle_vide(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur);
|
||||||
|
|||||||
12
operatio.c
12
operatio.c
@ -2623,8 +2623,16 @@ void Filled_polyform_12_8(void)
|
|||||||
Print_coordonnees();
|
Print_coordonnees();
|
||||||
|
|
||||||
// On le place à l'écran
|
// On le place à l'écran
|
||||||
Tracer_ligne_Preview_xor(Debut_X,Debut_Y,Fin_X,Fin_Y,0);
|
if (Operation_en_cours==OPERATION_FILLED_CONTOUR)
|
||||||
Tracer_ligne_Preview_xor(Debut_X,Debut_Y,Pinceau_X,Pinceau_Y,0);
|
{
|
||||||
|
Tracer_ligne_Preview_xorback(Debut_X,Debut_Y,Fin_X,Fin_Y,0);
|
||||||
|
Tracer_ligne_Preview_xorback(Debut_X,Debut_Y,Pinceau_X,Pinceau_Y,0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Tracer_ligne_Preview_xor(Debut_X,Debut_Y,Fin_X,Fin_Y,0);
|
||||||
|
Tracer_ligne_Preview_xor(Debut_X,Debut_Y,Pinceau_X,Pinceau_Y,0);
|
||||||
|
}
|
||||||
|
|
||||||
// On peut le rajouter au polygone
|
// On peut le rajouter au polygone
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user