From db9e12eda4de72d3aa999cfba7d20377d44fa9f1 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 15 Oct 2008 17:58:36 +0000 Subject: [PATCH] Fixed the screen update function... again... git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@260 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- boutons.c | 13 +++++++++++-- graph.c | 44 ++++++++++++++++++++++++++++---------------- operatio.c | 1 + 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/boutons.c b/boutons.c index 5d15c22e..826774f1 100644 --- a/boutons.c +++ b/boutons.c @@ -3622,6 +3622,8 @@ void Bouton_Loupe(void) if ((!Config.Fast_zoom) || (Mouse_Y>=Menu_Ordonnee) || On_vient_du_menu_de_facteurs_de_zoom) { On_vient_du_menu_de_facteurs_de_zoom=0; + DEBUG("BUTL",2); + SDL_UpdateRect(Ecran_SDL,0,0,0,0); Demarrer_pile_operation(OPERATION_LOUPE); } else @@ -3666,6 +3668,8 @@ void Bouton_Loupe(void) } } Afficher_curseur(); + DEBUG("BUTL",1); + SDL_UpdateRect(Ecran_SDL,0,0,0,0); } @@ -3701,24 +3705,29 @@ void Bouton_Menu_Loupe(void) } while (Bouton_clicke<=0); + DEBUG("BUTM",3); if (Bouton_clicke>1) { Menu_Ordonnee=Menu_Ordonnee_avant_fenetre; + DEBUG("BUTM",42); Changer_facteur_loupe(Bouton_clicke-2); } Fermer_fenetre(); - if ( (Bouton_clicke==1) && (!Loupe_Mode) && (Operation_en_cours!=OPERATION_LOUPE) ) + if ( (Bouton_clicke==1) && (!Loupe_Mode) && (Operation_en_cours!=OPERATION_LOUPE) ) // Cancel Desenclencher_bouton(BOUTON_LOUPE); Afficher_curseur(); + DEBUG("BUTM",1); + SDL_UpdateRect(Ecran_SDL,0,0,0,0); - if ( (Bouton_clicke>1) && (!Loupe_Mode) && (Operation_en_cours!=OPERATION_LOUPE) ) + if ( (Bouton_clicke>1) && (!Loupe_Mode) && (Operation_en_cours!=OPERATION_LOUPE) ) // Passage en mode zoom { On_vient_du_menu_de_facteurs_de_zoom=1; Enclencher_bouton(BOUTON_LOUPE,A_GAUCHE); } + } diff --git a/graph.c b/graph.c index 66d52940..22eee25c 100644 --- a/graph.c +++ b/graph.c @@ -87,7 +87,7 @@ void Mettre_Ecran_A_Jour(short X, short Y, short Largeur, short Hauteur) // Et ensuite dans la partie zoomée if(Loupe_Mode) { - X_effectif = Min(Max((X-Loupe_Decalage_X + 1)*Loupe_Facteur + 2 + Principal_Split + LARGEUR_BARRE_SPLIT,0), Largeur_ecran); + X_effectif = Min(Max((X-Loupe_Decalage_X)*Loupe_Facteur + 6 + Principal_Split + LARGEUR_BARRE_SPLIT,0), Largeur_ecran); // TODO: trouver d'ou sort le 6! Y_effectif = Min(Max(Y-Loupe_Decalage_Y,0) * Loupe_Facteur, Menu_Ordonnee); Largeur *= Loupe_Facteur / 2; // ???! @@ -101,7 +101,13 @@ void Mettre_Ecran_A_Jour(short X, short Y, short Largeur, short Hauteur) if(Y_effectif + Hauteur <= Menu_Ordonnee) H_effectif = Hauteur; else H_effectif = Menu_Ordonnee - Y_effectif; - +/* Très utile pour le debug :) + SDL_Rect r; + r.x=X_effectif; + r.y=Y_effectif; + r.h=r.w=3; + SDL_FillRect(Ecran_SDL,&r,3); +*/ SDL_UpdateRect(Ecran_SDL,X_effectif,Y_effectif,L_effectif,H_effectif); } } @@ -859,6 +865,10 @@ void Changer_facteur_loupe(byte Indice_facteur) Recadrer_ecran_par_rapport_au_zoom(); Pixel_Preview=Pixel_Preview_Loupe; + + DEBUG("CHL",3); + Afficher_ecran(); + SDL_UpdateRect(Ecran_SDL,0,0,0,0); } else Pixel_Preview=Pixel_Preview_Normal; @@ -1869,7 +1879,7 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) && (Pinceau_Y<=Limite_Bas) ) { Pixel_Preview(Pinceau_X,Pinceau_Y,Couleur); - if(Loupe_Mode) Mettre_Ecran_A_Jour(Pinceau_X,Pinceau_Y,1,1); + Mettre_Ecran_A_Jour(X,Y,1,1); } break; @@ -1970,8 +1980,6 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) Smear_Brosse[Position]=Couleur_temporaire; } - //SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0), - // Fin_Compteur_X,Fin_Compteur_Y ); Mettre_Ecran_A_Jour(Debut_X,Debut_Y,Largeur,Hauteur); } @@ -1998,8 +2006,7 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) Afficher_pixel(Pos_X,Pos_Y,Couleur); } } -// SDL_UpdateRect(Ecran_SDL, Max(Debut_X,0), Max(Debut_Y,0), Fin_Compteur_X, Fin_Compteur_Y); - Mettre_Ecran_A_Jour(Debut_X,Debut_Y,Fin_Compteur_X,Fin_Compteur_Y); + Mettre_Ecran_A_Jour(Debut_X,Debut_Y,Fin_Compteur_X,Fin_Compteur_Y); } break; @@ -2099,8 +2106,7 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) if (Lit_pixel_dans_brosse(Compteur_X,Compteur_Y)!=Back_color) Afficher_pixel(Pos_X,Pos_Y,Couleur); } -//ok - if(Loupe_Mode) Mettre_Ecran_A_Jour(Debut_X,Debut_Y,Fin_Compteur_X-Debut_Compteur_X,Fin_Compteur_Y-Debut_Compteur_Y); + Mettre_Ecran_A_Jour(Debut_X,Debut_Y,Fin_Compteur_X-Debut_Compteur_X,Fin_Compteur_Y-Debut_Compteur_Y); } } Mettre_Ecran_A_Jour(X-Brosse_Decalage_X,Y-Brosse_Decalage_Y,Brosse_Largeur,Brosse_Hauteur); @@ -2205,9 +2211,12 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) if (Pinceau_Sprite[(TAILLE_MAXI_PINCEAU*Compteur_Y)+Compteur_X]) Afficher_pixel(Pos_X,Pos_Y,Couleur); } - /* Mettre_Ecran_A_Jour(Debut_X,Debut_Y, - Fin_Compteur_X-Debut_Compteur_X, - Fin_Compteur_Y-Debut_Compteur_Y);*/ + DEBUG("PINCEAU",435); + #ifndef __macosx__ + Mettre_Ecran_A_Jour(X,Y, + Largeur, + Hauteur); + #endif } } } @@ -2445,19 +2454,19 @@ void Afficher_curseur(void) for (Pos_X=Debut_X,Compteur_X=0;Compteur_X<15;Pos_X++,Compteur_X++) { if( Pos_X < 0 ) continue; - else if (Pos_X > Largeur_ecran) break; for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) { if( Pos_Y < 0 ) continue; - else if (Pos_Y > Hauteur_ecran) break; Couleur=SPRITE_CURSEUR[Temp][Compteur_Y][Compteur_X]; FOND_CURSEUR[Compteur_Y][Compteur_X]=Lit_pixel(Pos_X,Pos_Y); if (Couleur!=CM_Trans) Pixel(Pos_X,Pos_Y,Couleur); + if (Pos_Y > Hauteur_ecran) break; } + if (Pos_X >= Largeur_ecran) break; } - SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0),Compteur_X - 1,Compteur_Y-1); + SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0),Compteur_X,Compteur_Y); } } break; @@ -3079,7 +3088,6 @@ void Afficher_ecran(void) } if (Principal_Hauteur_image