From a6774e5d73989f7c8deb53b56f30616af9816503 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 15 Nov 2008 15:35:02 +0000 Subject: [PATCH] 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 --- gfx2.cfg | Bin 10062 -> 10062 bytes graph.c | 5 +++-- operatio.c | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gfx2.cfg b/gfx2.cfg index 8bcb0dc59fcec80a5cb135aa4adf4f85920c1115..5b2e6af494ed670070a58986ffa25d104df2bd8a 100644 GIT binary patch delta 29 icmX@-cg}Bv89O86W=Cljj?MPsY&<{$$Z}QYWB~w)R|lH_ delta 27 hcmX@-cg}Bv8T)1jX;zNS_Tp?jK!Sy1v#T;E3jl)N2bll> diff --git a/graph.c b/graph.c index 2a421a51..9ef03447 100644 --- a/graph.c +++ b/graph.c @@ -5268,11 +5268,12 @@ void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX, } else { - short a,b; + float a; + float b; int Distance_X, Distance_Y; 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; for (Pos_Y=RAY;Pos_Y<=RBY;Pos_Y++) diff --git a/operatio.c b/operatio.c index f9bab000..6bf51d45 100644 --- a/operatio.c +++ b/operatio.c @@ -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à decalage_largeur = Max(RAX,RBX) - Min(Principal_Largeur_image,Loupe_Mode?Principal_Split:Largeur_ecran); - if (Max(RAY,RBY)-Principal_Decalage_Y > Menu_Ordonnee) - decalage_hauteur = Max(RAY,RBY) - Menu_Ordonnee; + if (Max(RAY,RBY)-Principal_Decalage_Y > Min(Principal_Hauteur_image,Menu_Ordonnee)) + decalage_hauteur = Max(RAY,RBY) - Min(Principal_Hauteur_image,Menu_Ordonnee); // 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); if(decalage_hauteur == 0) 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); 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); - 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 if(Loupe_Mode)