From a90c04af772c5ee5a98d90d4925b0911e15ed777 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 24 Jul 2008 13:16:03 +0000 Subject: [PATCH] Debugged mouse cursor erasing ! git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@60 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- divers.c | 2 +- graph.c | 20 +++++++++++++++----- sdlscreen.c | 5 +++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/divers.c b/divers.c index 06a48541..0b9e5738 100644 --- a/divers.c +++ b/divers.c @@ -304,10 +304,10 @@ void Get_input(void) ) { Forcer_affichage_curseur=0; + Effacer_curseur(); // On efface le curseur AVANT de le déplacer... Mouse_X=INPUT_Nouveau_Mouse_X; Mouse_Y=INPUT_Nouveau_Mouse_Y; Mouse_K=INPUT_Nouveau_Mouse_K; - Effacer_curseur(); Calculer_coordonnees_pinceau(); Afficher_curseur(); } diff --git a/graph.c b/graph.c index a43b4387..606aea86 100644 --- a/graph.c +++ b/graph.c @@ -2473,7 +2473,8 @@ void Effacer_curseur(void) short X1,Y1,X2,Y2,X3,Y3,X4,Y4; if ( ( (Mouse_Y=Principal_X_Zoom) ) ) + && ( (!Loupe_Mode) || (Mouse_X=Principal_X_Zoom) ) ) || (Une_fenetre_est_ouverte) || (Forme_curseur==FORME_CURSEUR_SABLIER) ) Forme=Forme_curseur; else @@ -2498,9 +2499,11 @@ void Effacer_curseur(void) if (Fin_X<4) Ligne_horizontale_XOR(Mouse_X+3,Mouse_Y,4-Fin_X); - Fin_Y=(Mouse_Y+7>Menu_Ordonnee/*Hauteur_ecran*/)?Mouse_Y+7-Menu_Ordonnee/*Hauteur_ecran*/:0; + Fin_Y=(Mouse_Y+7>Hauteur_ecran)?Mouse_Y+7-Hauteur_ecran:0; if (Fin_Y<4) Ligne_verticale_XOR (Mouse_X,Mouse_Y+3,4-Fin_Y); + + SDL_UpdateRect(Ecran_SDL,Debut_X,Debut_Y,Fin_X-Debut_X,Fin_Y-Debut_Y); } else { @@ -2540,12 +2543,10 @@ void Effacer_curseur(void) if (Fin_X<3) Ligne_horizontale_XOR(Mouse_X+3,Mouse_Y,3-Fin_X); - Fin_Y=(Mouse_Y+6>Menu_Ordonnee/*Hauteur_ecran*/)?Mouse_Y+6-Menu_Ordonnee/*Hauteur_ecran*/:0; + Fin_Y=(Mouse_Y+6>Hauteur_ecran)?Mouse_Y+6-Hauteur_ecran:0; if (Fin_Y<3) Ligne_verticale_XOR (Mouse_X,Mouse_Y+3,3-Fin_Y); - // Petites barres aux extrémités - Debut_X=(!Mouse_X); Debut_Y=(!Mouse_Y); Fin_X=(Mouse_X>=Largeur_ecran-1); @@ -2562,6 +2563,8 @@ void Effacer_curseur(void) if (Mouse_Y=Limite_Haut)) + { Ligne_horizontale_XOR(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X); + SDL_UpdateRect(Ecran_SDL,0,Pinceau_Y-Principal_Decalage_Y,Compteur_X,1); + } if ((Pos_X=Limite_Gauche)) + { Ligne_verticale_XOR(Pinceau_X-Principal_Decalage_X,0,Menu_Ordonnee); + SDL_UpdateRect(Ecran_SDL,Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); + } if (Loupe_Mode) { @@ -2616,6 +2625,7 @@ void Effacer_curseur(void) Ligne_verticale_XOR_Zoom(Pinceau_X,Limite_Haut_Zoom,Loupe_Hauteur); } + break; case FORME_CURSEUR_RECTANGLE_XOR : // !!! Cette forme ne peut pas être utilisée en mode Loupe !!! diff --git a/sdlscreen.c b/sdlscreen.c index c9d7e20b..e3c2042a 100644 --- a/sdlscreen.c +++ b/sdlscreen.c @@ -13,8 +13,7 @@ void inline Pixel_SDL (word X,word Y,byte Couleur) byte inline Lit_Pixel_SDL (word X,word Y) /* On retourne la couleur du pixel aux coords données */ { - byte* p = Ecran + Y*Largeur_ecran + X; - return *p; + return *( Ecran + Y * Largeur_ecran + X ); } void Effacer_Tout_l_Ecran_SDL (byte Couleur) @@ -319,5 +318,7 @@ void Set_Mode_SDL() { Ecran_SDL=SDL_SetVideoMode(Largeur_ecran,Hauteur_ecran,8,SDL_HWSURFACE/*|SDL_FULLSCREEN*/); Ecran=Ecran_SDL->pixels; + + SDL_ShowCursor(0); // Cache le curseur SDL, on le gère en soft }