Fixed the remaining bugs from r339. Now we have a fully working gradiation rectangle system !
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@343 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
d016b8ba48
commit
a6774e5d73
5
graph.c
5
graph.c
@ -5268,11 +5268,12 @@ void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
short a,b;
|
float a;
|
||||||
|
float b;
|
||||||
int Distance_X, Distance_Y;
|
int Distance_X, Distance_Y;
|
||||||
|
|
||||||
Degrade_Intervalle_total = sqrt(pow(VBY - VAY,2)+pow(VBX - VAX,2));
|
Degrade_Intervalle_total = sqrt(pow(VBY - VAY,2)+pow(VBX - VAX,2));
|
||||||
a = (VBY - VAY)/(VBX - VAX);
|
a = (float)(VBY - VAY)/(float)(VBX - VAX);
|
||||||
b = VAY - a*VAX;
|
b = VAY - a*VAX;
|
||||||
|
|
||||||
for (Pos_Y=RAY;Pos_Y<=RBY;Pos_Y++)
|
for (Pos_Y=RAY;Pos_Y<=RBY;Pos_Y++)
|
||||||
|
|||||||
@ -4263,18 +4263,19 @@ void Rectangle_Degrade_0_5(void)
|
|||||||
if (Max(RAX,RBX)-Principal_Decalage_X > Min(Principal_Largeur_image,Loupe_Mode?Principal_Split:Largeur_ecran)) // Tous les clippings à gérer sont là
|
if (Max(RAX,RBX)-Principal_Decalage_X > Min(Principal_Largeur_image,Loupe_Mode?Principal_Split:Largeur_ecran)) // Tous les clippings à gérer sont là
|
||||||
decalage_largeur = Max(RAX,RBX) - Min(Principal_Largeur_image,Loupe_Mode?Principal_Split:Largeur_ecran);
|
decalage_largeur = Max(RAX,RBX) - Min(Principal_Largeur_image,Loupe_Mode?Principal_Split:Largeur_ecran);
|
||||||
|
|
||||||
if (Max(RAY,RBY)-Principal_Decalage_Y > Menu_Ordonnee)
|
if (Max(RAY,RBY)-Principal_Decalage_Y > Min(Principal_Hauteur_image,Menu_Ordonnee))
|
||||||
decalage_hauteur = Max(RAY,RBY) - Menu_Ordonnee;
|
decalage_hauteur = Max(RAY,RBY) - Min(Principal_Hauteur_image,Menu_Ordonnee);
|
||||||
|
|
||||||
// Dessin dans la zone de dessin normale
|
// Dessin dans la zone de dessin normale
|
||||||
Ligne_horizontale_XOR(Min(RAX,RBX)-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,largeur - decalage_largeur);
|
Ligne_horizontale_XOR(Min(RAX,RBX)-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,largeur - decalage_largeur);
|
||||||
if(decalage_hauteur == 0)
|
if(decalage_hauteur == 0)
|
||||||
Ligne_horizontale_XOR(Min(RAX,RBX)-Principal_Decalage_X,Max(RAY,RBY)-1-Principal_Decalage_Y,largeur - decalage_largeur);
|
Ligne_horizontale_XOR(Min(RAX,RBX)-Principal_Decalage_X,Max(RAY,RBY)-1-Principal_Decalage_Y,largeur - decalage_largeur);
|
||||||
|
|
||||||
Ligne_verticale_XOR(Min(RAX,RBX)-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,hauteur-decalage_hauteur);
|
Ligne_verticale_XOR(Min(RAX,RBX)-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,hauteur-decalage_hauteur);
|
||||||
if (decalage_largeur == 0) // Sinon cette ligne est en dehors de la zone image, inutile de la dessiner
|
if (decalage_largeur == 0) // Sinon cette ligne est en dehors de la zone image, inutile de la dessiner
|
||||||
Ligne_verticale_XOR(Max(RAX,RBX)-1-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,hauteur-decalage_hauteur);
|
Ligne_verticale_XOR(Max(RAX,RBX)-1-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,hauteur-decalage_hauteur);
|
||||||
|
|
||||||
UpdateRect(Min(RAX,RBX)-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,largeur+1-decalage_largeur,hauteur+1-decalage_largeur);
|
UpdateRect(Min(RAX,RBX)-Principal_Decalage_X,Min(RAY,RBY)-Principal_Decalage_Y,largeur+1-decalage_largeur,hauteur+1-decalage_hauteur);
|
||||||
|
|
||||||
// Dessin dans la zone zoomée
|
// Dessin dans la zone zoomée
|
||||||
if(Loupe_Mode)
|
if(Loupe_Mode)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user