Fixes SIGSEGVs and weird coordinates of viewports when resizing the screen (w/ and w/o zoom, with resolution change or window resize)

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@406 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-12-20 19:06:00 +00:00
parent 8862c1994f
commit a81bc2c1a4
2 changed files with 24 additions and 1 deletions

18
graph.c
View File

@ -336,14 +336,30 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
Brouillon_Loupe_Mode=0; // | la résolution.
}
if (Loupe_Mode)
{
Pixel_Preview=Pixel_Preview_Loupe;
}
else
{
Pixel_Preview=Pixel_Preview_Normal;
// Recaler la vue (meme clipping que dans Scroller_ecran())
if (Principal_Decalage_X+Largeur_ecran>Principal_Largeur_image)
Principal_Decalage_X=Principal_Largeur_image-Largeur_ecran;
else if (Principal_Decalage_X<0)
Principal_Decalage_X=0;
if (Principal_Decalage_Y+Menu_Ordonnee>Principal_Hauteur_image)
Principal_Decalage_Y=Principal_Hauteur_image-Menu_Ordonnee;
else if (Principal_Decalage_Y<0)
Principal_Decalage_Y=0;
}
Calculer_donnees_loupe();
if (Loupe_Mode)
Recadrer_ecran_par_rapport_au_zoom();
Calculer_limites();
Calculer_coordonnees_pinceau();
Afficher_ecran();
Resize_Largeur=0;
Resize_Hauteur=0;
}

View File

@ -1233,6 +1233,13 @@ void Calculer_donnees_loupe(void)
Loupe_Decalage_X=Principal_Largeur_image-Loupe_Largeur;
if (Loupe_Decalage_X<0) Loupe_Decalage_X=0;
}
if (Loupe_Mode && Loupe_Decalage_Y)
{
if (Principal_Hauteur_image<Loupe_Decalage_Y+Loupe_Hauteur)
Loupe_Decalage_Y=Principal_Hauteur_image-Loupe_Hauteur;
if (Loupe_Decalage_Y<0) Loupe_Decalage_Y=0;
}
}