Fixes the crash with the gradrect. But there are still some screen corruption (and missing lines) problems...

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@429 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues
2008-12-27 17:25:20 +00:00
parent 63d595a3ed
commit 9bc64e8adb
3 changed files with 24 additions and 13 deletions

View File

@@ -4299,34 +4299,46 @@ void Rectangle_Degrade_0_5(void)
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)
if(Loupe_Mode && Min(RAX,RBX)<Limite_visible_Droite_Zoom && Max(RAX,RBX)>Limite_Gauche_Zoom && Min(RAY,RBY)<Limite_visible_Bas_Zoom && Max(RAY,RBY)>Limite_Haut_Zoom )
{
decalage_largeur = 0;
if(Min(RAX,RBX)<Limite_Gauche_Zoom)
decalage_hauteur=0;
if(Min(RAX,RBX)<Limite_Gauche_Zoom) // On dépasse du zoom à gauche
{
decalage_largeur += Limite_Gauche_Zoom - Min(RAX,RAY);
decalage_gauche = Limite_Gauche_Zoom;
}
if(Max(RAX,RAY)>Limite_visible_Droite_Zoom)
if(Max(RAX,RAY)>Limite_visible_Droite_Zoom) // On dépasse du zoom à droite
decalage_largeur += Max(RAX,RAY) - Limite_visible_Droite_Zoom;
decalage_hauteur=0;
if(Min(RAY,RBY)<Limite_Haut_Zoom)
if(Min(RAY,RBY)<Limite_Haut_Zoom) // On dépasse du zoom en haut
{
decalage_hauteur += Limite_Haut_Zoom - Min(RAY,RBY);
decalage_haut = Limite_Haut_Zoom;
}
if(Max(RAY,RBY)>Limite_visible_Bas_Zoom)
if(Max(RAY,RBY)>Limite_visible_Bas_Zoom) // On dépasse du zoom en bas
decalage_hauteur += Max(RAX,RAY) + Limite_visible_Bas_Zoom;
if(decalage_haut==0)
if(largeur > decalage_largeur)
{
if(decalage_haut==0) // La ligne du haut est visible
Ligne_horizontale_XOR_Zoom(decalage_gauche>0?decalage_gauche:Min(RAX,RBX),Min(RAY,RBY),largeur-decalage_largeur);
if(Max(RAY,RBY)<Limite_visible_Bas_Zoom)
if(Max(RAY,RBY)<Limite_visible_Bas_Zoom) // La ligne du bas est visible
Ligne_horizontale_XOR_Zoom(decalage_gauche>0?decalage_gauche:Min(RAX,RBX),Max(RAY,RBY),largeur-decalage_largeur);
if(decalage_gauche==0)
}
if(hauteur>decalage_hauteur)
{
if(decalage_gauche==0) // La ligne de gauche est visible
Ligne_verticale_XOR_Zoom(Min(RAX,RBX),decalage_haut>0?decalage_haut:Min(RAY,RBY),hauteur-decalage_hauteur);
if(Max(RAX,RBX)<Limite_visible_Droite_Zoom)
if(Max(RAX,RBX)<Limite_visible_Droite_Zoom) // La ligne de droite est visible
Ligne_verticale_XOR_Zoom(Max(RAX,RBX),decalage_haut>0?decalage_haut:Min(RAY,RBY),hauteur-decalage_hauteur);
}
}
Operation_PUSH(RAX);