From 9770d70f2a9e7f6b1ac130830c2bd4109c7396c5 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Wed, 15 Oct 2008 22:52:00 +0000 Subject: [PATCH] Refactored the "#ifndef __macosx__" that were around every SDL_UpdateRect(). Redraw method is now defined once, in sdlscreen.c git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@266 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- Makefile.dep | 12 +-- aide.c | 12 +-- boutons.c | 66 +++++------------ divers.c | 15 +--- gfx2.ini | 2 +- graph.c | 205 +++++++++++++++------------------------------------ loadsave.c | 5 +- moteur.c | 47 ++++-------- palette.c | 21 ++---- readline.c | 17 ++--- sdlscreen.c | 80 +++++++++++++------- sdlscreen.h | 4 + shade.c | 21 ++---- 13 files changed, 182 insertions(+), 325 deletions(-) diff --git a/Makefile.dep b/Makefile.dep index eca4088e..2bc0e61f 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -13,9 +13,9 @@ special.o: special.c const.h struct.h global.h loadsave.h graph.h \ moteur.h boutons.o: boutons.c const.h struct.h global.h loadsave.h divers.h \ graph.h moteur.h readline.h files.h init.h boutons.h operatio.h pages.h \ - erreurs.h readini.h saveini.h shade.h io.h aide.h + erreurs.h readini.h saveini.h shade.h io.h aide.h sdlscreen.h palette.o: palette.c const.h struct.h global.h loadsave.h divers.h \ - graph.h moteur.h readline.h boutons.h pages.h + graph.h moteur.h readline.h boutons.h pages.h aide.h sdlscreen.h aide.o: aide.c const.h struct.h global.h loadsave.h divers.h graph.h \ moteur.h tables_aide.h aide.h operatio.o: operatio.c const.h struct.h global.h loadsave.h divers.h \ @@ -23,11 +23,11 @@ operatio.o: operatio.c const.h struct.h global.h loadsave.h divers.h \ pages.o: pages.c global.h struct.h const.h loadsave.h pages.h graph.h \ erreurs.h linux.h loadsave.o: loadsave.c const.h struct.h global.h loadsave.h graph.h \ - divers.h pages.h op_c.h boutons.h erreurs.h linux.h io.h + divers.h pages.h op_c.h boutons.h erreurs.h linux.h io.h sdlscreen.h readline.o: readline.c const.h struct.h global.h loadsave.h graph.h \ - divers.h erreurs.h linux.h + divers.h erreurs.h linux.h sdlscreen.h moteur.o: moteur.c const.h struct.h global.h loadsave.h graph.h divers.h \ - special.h boutons.h operatio.h shade.h erreurs.h linux.h + special.h boutons.h operatio.h shade.h erreurs.h linux.h sdlscreen.h files.o: files.c const.h struct.h global.h loadsave.h graph.h divers.h \ erreurs.h linux.h op_c.o: op_c.c op_c.h struct.h const.h op_asm.h erreurs.h @@ -37,7 +37,7 @@ readini.o: readini.c const.h global.h struct.h loadsave.h graph.h saveini.o: saveini.c const.h global.h struct.h loadsave.h readini.h \ files.h erreurs.h graph.h shade.o: shade.c global.h struct.h const.h loadsave.h graph.h moteur.h \ - divers.h readline.h + divers.h readline.h aide.h sdlscreen.h clavier.o: clavier.c global.h struct.h const.h loadsave.h io.o: io.c struct.h const.h io.h gfxcfg.o: gfxcfg.c SFont.h struct.h const.h clavier.h io.h hotkeys.h diff --git a/aide.c b/aide.c index 9e7215d8..462ed0c9 100644 --- a/aide.c +++ b/aide.c @@ -141,9 +141,7 @@ void Afficher_aide(void) Menu_Facteur_Y<<3, CM_Noir); } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+13*Menu_Facteur_X,Fenetre_Pos_Y+19*Menu_Facteur_Y,44*6*Menu_Facteur_X,16*8*Menu_Facteur_Y); -#endif + UpdateRect(Fenetre_Pos_X+13*Menu_Facteur_X,Fenetre_Pos_Y+19*Menu_Facteur_Y,44*6*Menu_Facteur_X,16*8*Menu_Facteur_Y); } @@ -220,9 +218,7 @@ void Fenetre_aide(int Section, const char *Sous_section) Afficher_aide(); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,310*Menu_Facteur_X,175*Menu_Facteur_Y); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,310*Menu_Facteur_X,175*Menu_Facteur_Y); Afficher_curseur(); @@ -398,9 +394,7 @@ void Bouton_Stats(void) sprintf(Buffer,"%dx%d",Largeur_ecran,Hauteur_ecran); Print_dans_fenetre(106,99,Buffer,STATS_COULEUR_DONNEES,CM_Noir); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*310,Menu_Facteur_Y*174); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*310,Menu_Facteur_Y*174); Afficher_curseur(); diff --git a/boutons.c b/boutons.c index 3d768260..9c5aee6d 100644 --- a/boutons.c +++ b/boutons.c @@ -46,6 +46,7 @@ #include "shade.h" #include "io.h" #include "aide.h" +#include "sdlscreen.h" #ifdef __WATCOMC__ #include @@ -55,11 +56,8 @@ #define FILENAMESPACE 13 -#ifdef __macosx__ -#define Display_Window(X,Y) -#else -#define Display_Window(X,Y) SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,X*Menu_Facteur_X,Y*Menu_Facteur_Y); -#endif +#define Display_Window(X,Y) UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,X*Menu_Facteur_X,Y*Menu_Facteur_Y); + //-- MODELE DE BOUTON DE MENU ------------------------------------------------ /* @@ -1243,10 +1241,8 @@ void Cocher_bouton_mode(short Pos_X, short Pos_Y, byte Etat) Block(Fenetre_Pos_X+Menu_Facteur_X*Pos_X,Fenetre_Pos_Y+Menu_Facteur_Y*Pos_Y, Menu_Facteur_X*9,Menu_Facteur_Y*3,Couleur); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+Menu_Facteur_X*Pos_X,Fenetre_Pos_Y+Menu_Facteur_Y*Pos_Y, + UpdateRect(Fenetre_Pos_X+Menu_Facteur_X*Pos_X,Fenetre_Pos_Y+Menu_Facteur_Y*Pos_Y, Menu_Facteur_X*9,Menu_Facteur_Y*3); -#endif } @@ -1754,10 +1750,8 @@ void Degrade_Dessiner_bouton_de_technique(short Pos_X,short Pos_Y,int Technique) } } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+((Pos_X+2)*Menu_Facteur_X),Fenetre_Pos_Y+((Pos_Y+2)*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+((Pos_X+2)*Menu_Facteur_X),Fenetre_Pos_Y+((Pos_Y+2)*Menu_Facteur_Y), Menu_Facteur_X*10,Menu_Facteur_Y*10); -#endif } void Degrade_Charger_infos_du_tableau(int Indice) @@ -1805,9 +1799,7 @@ void Degrade_Dessiner_preview(short Debut_X,short Debut_Y,short Largeur,short Ha for (Pos_Y=Debut_Y;Pos_Y1) && (!Loupe_Mode) && (Operation_en_cours!=OPERATION_LOUPE) ) // Passage en mode zoom { @@ -4928,9 +4910,7 @@ void Dessiner_trame_zoomee(short Orig_X, short Orig_Y) for (Pos_Y=0; Pos_Y>(15-i))&1)?CM_Blanc:CM_Noir); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,ToWinX(10),ToWinY(22),ToWinL(12*23+16),ToWinH(16)); -#endif + UpdateRect(ToWinX(10),ToWinY(22),ToWinL(12*23+16),ToWinH(16)); } @@ -4974,9 +4952,7 @@ void Inverser_trame(void) // Rafraichit toute la zone correspondant à la trame zoomee. void Mettre_a_jour_trame(short X, short Y) { -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,X,Y,80*Menu_Facteur_X,80*Menu_Facteur_Y); -#endif + UpdateRect(X,Y,80*Menu_Facteur_X,80*Menu_Facteur_Y); } @@ -5115,9 +5091,7 @@ void Bouton_Trame_Menu(void) Dessiner_trame_zoomee(Orig_X,Orig_Y); Afficher_curseur(); // Maj de la case seule -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Orig_X+(Old_Pos_X*Pos_X), Orig_Y+(Old_Pos_Y*Pos_Y),Menu_Facteur_X*5,Menu_Facteur_Y*5); -#endif + UpdateRect(Orig_X+(Old_Pos_X*Pos_X), Orig_Y+(Old_Pos_Y*Pos_Y),Menu_Facteur_X*5,Menu_Facteur_Y*5); } } break; @@ -5235,13 +5209,11 @@ void Bouton_Trame_Menu(void) Fenetre_Pos_Y+(Menu_Facteur_Y*(Bouton_Octet_insere->Pos_Y+2)), Menu_Facteur_X*7, Menu_Facteur_Y*7, (Octet_insere)?CM_Blanc:CM_Noir); Afficher_curseur(); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL, + UpdateRect( Fenetre_Pos_X+(Menu_Facteur_X*(Bouton_Octet_insere->Pos_X+2)), Fenetre_Pos_Y+(Menu_Facteur_Y*(Bouton_Octet_insere->Pos_Y+2)), Menu_Facteur_X*7, Menu_Facteur_Y*7); -#endif break; @@ -5390,9 +5362,7 @@ void Afficher_sprite_effet(short Numero_sprite, short Debut_X, short Debut_Y) for (X=0,Pos_X=Debut_X;X Hauteur_ecran) break; + Pixel(Pos_X,Pos_Y,Couleur); + if (Pos_Y > Hauteur_ecran) break; } - if (Pos_X >= Largeur_ecran) break; - } + if (Pos_X >= Largeur_ecran) break; + } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0),Compteur_X,Compteur_Y); -#endif + UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),Compteur_X,Compteur_Y); } } break; @@ -2561,9 +2523,7 @@ void Afficher_curseur(void) Pixel(Pos_X,Pos_Y,Couleur); } } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Debut_X,Debut_Y,16,16); -#endif + UpdateRect(Debut_X,Debut_Y,16,16); } } break; @@ -2588,9 +2548,7 @@ void Afficher_curseur(void) Pixel(Pos_X,Pos_Y,Couleur); } } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0),16,16); -#endif + UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),16,16); break; case FORME_CURSEUR_CIBLE_XOR : Pos_X=Pinceau_X-Principal_Decalage_X; @@ -2600,17 +2558,13 @@ void Afficher_curseur(void) if ((Pos_Y=Limite_Haut)) { Ligne_horizontale_XOR(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,0,Pinceau_Y-Principal_Decalage_Y,Compteur_X,1); -#endif + UpdateRect(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); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); -#endif + UpdateRect(Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); } if (Loupe_Mode) @@ -2661,9 +2615,7 @@ void Afficher_curseur(void) Ligne_verticale_XOR( Fin_X,Debut_Y+1,Loupe_Hauteur-2); Ligne_horizontale_XOR(Debut_X, Fin_Y,Loupe_Largeur); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Debut_X,Debut_Y,Fin_X+1-Debut_X,Fin_Y+1-Debut_Y); -#endif + UpdateRect(Debut_X,Debut_Y,Fin_X+1-Debut_X,Fin_Y+1-Debut_Y); break; default: //case FORME_CURSEUR_ROTATE_XOR : @@ -2780,9 +2732,7 @@ void Effacer_curseur(void) if (Fin_Y<4) Ligne_verticale_XOR (Mouse_X,Mouse_Y+3,4-Fin_Y); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Mouse_X+Debut_X-6,Mouse_Y+Debut_Y-6,12-Fin_X,12-Fin_Y); -#endif + UpdateRect(Mouse_X+Debut_X-6,Mouse_Y+Debut_Y-6,12-Fin_X,12-Fin_Y); } else { @@ -2791,19 +2741,17 @@ void Effacer_curseur(void) Debut_Y=Mouse_Y-Curseur_Decalage_Y[Temp]; for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) - { - if(Pos_Y>=Hauteur_ecran) break; + { + if(Pos_Y>=Hauteur_ecran) break; for (Pos_X=Debut_X,Compteur_X=0;Compteur_X<15;Pos_X++,Compteur_X++) - { + { if ( (Pos_X<0) || (Pos_Y < 0)) continue; - else if (Pos_X>=Largeur_ecran) break; + else if (Pos_X>=Largeur_ecran) break; Pixel(Pos_X,Pos_Y,FOND_CURSEUR[Compteur_Y][Compteur_X]); - } - } + } + } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0),Pos_X-Debut_X,Pos_Y-Debut_Y); -#endif + UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),Pos_X-Debut_X,Pos_Y-Debut_Y); } } if (!Cacher_pinceau) @@ -2851,9 +2799,7 @@ void Effacer_curseur(void) if (Mouse_Y=0) && (Pos_X=0) && (Pos_Y=0) && (Pos_Y>=0) ) Pixel(Pos_X,Pos_Y,FOND_CURSEUR[Compteur_Y][Compteur_X]); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Max(Debut_X,0),Max(Debut_Y,0),16,16); -#endif + UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),16,16); break; case FORME_CURSEUR_CIBLE_XOR : @@ -2901,17 +2843,13 @@ void Effacer_curseur(void) if ((Pos_Y=Limite_Haut)) { Ligne_horizontale_XOR(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,0,Pinceau_Y-Principal_Decalage_Y,Compteur_X,1); -#endif + UpdateRect(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); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); -#endif + UpdateRect(Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); } if (Loupe_Mode) @@ -2965,9 +2903,7 @@ void Effacer_curseur(void) Ligne_verticale_XOR( Fin_X,Debut_Y+1,Loupe_Hauteur-2); Ligne_horizontale_XOR(Debut_X, Fin_Y,Loupe_Largeur); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Debut_X,Debut_Y,Fin_X+1-Debut_X,Fin_Y+1-Debut_Y); -#endif + UpdateRect(Debut_X,Debut_Y,Fin_X+1-Debut_X,Fin_Y+1-Debut_Y); break; default: //case FORME_CURSEUR_ROTATE_XOR : @@ -3053,9 +2989,7 @@ byte Demande_de_confirmation(char * Message) Fenetre_Definir_bouton_normal((Largeur_de_la_fenetre/3)-20 ,37,40,14,"Yes",1,1,SDLK_y); // 1 Fenetre_Definir_bouton_normal(((Largeur_de_la_fenetre<<1)/3)-20,37,40,14,"No" ,1,1,SDLK_n); // 2 -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*Largeur_de_la_fenetre,Menu_Facteur_Y*60); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*Largeur_de_la_fenetre,Menu_Facteur_Y*60); Afficher_curseur(); @@ -3089,9 +3023,7 @@ void Warning_message(char * Message) Print_dans_fenetre((Largeur_de_la_fenetre>>1)-(strlen(Message)<<2),20,Message,CM_Noir,CM_Clair); Fenetre_Definir_bouton_normal((Largeur_de_la_fenetre>>1)-20 ,37,40,14,"OK",1,1,SDLK_RETURN); // 1 -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*Largeur_de_la_fenetre,Menu_Facteur_Y*60); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*Largeur_de_la_fenetre,Menu_Facteur_Y*60); Afficher_curseur(); do @@ -3180,9 +3112,7 @@ void Afficher_ecran(void) // ---/\/\/\ Affichage des limites /\/\/\--- if (Config.Afficher_limites_image) Afficher_limites_de_l_image(); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,0,0,Largeur_ecran,Menu_Ordonnee); // TODO On peut faire plus fin, en évitant de mettre à jour la partie à droite du split quand on est en mode loupe. Mais c'est pas vraiment intéressant ? -#endif + UpdateRect(0,0,Largeur_ecran,Menu_Ordonnee); // TODO On peut faire plus fin, en évitant de mettre à jour la partie à droite du split quand on est en mode loupe. Mais c'est pas vraiment intéressant ? } // -- Redessiner le sprite d'un bouton dans le menu -- @@ -3202,11 +3132,9 @@ void Afficher_sprite_dans_menu(int Numero_bouton,int Numero_sprite) Pixel_dans_menu(Pos_menu_X,Pos_menu_Y,Couleur); BLOCK_MENU[Pos_menu_Y][Pos_menu_X]=Couleur; } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Menu_Facteur_X*(Bouton[Numero_bouton].Decalage_X+1), - (Bouton[Numero_bouton].Decalage_Y+1)*Menu_Facteur_Y+Menu_Ordonnee, - LARGEUR_SPRITE_MENU*Menu_Facteur_X,HAUTEUR_SPRITE_MENU*Menu_Facteur_Y); -#endif + UpdateRect(Menu_Facteur_X*(Bouton[Numero_bouton].Decalage_X+1), + (Bouton[Numero_bouton].Decalage_Y+1)*Menu_Facteur_Y+Menu_Ordonnee, + LARGEUR_SPRITE_MENU*Menu_Facteur_X,HAUTEUR_SPRITE_MENU*Menu_Facteur_Y); } // -- Redessiner la forme du pinceau dans le menu -- @@ -3266,9 +3194,7 @@ void Afficher_pinceau_dans_menu(void) BLOCK_MENU[Pos_menu_Y][Pos_menu_X]=Couleur; } } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,0,Menu_Ordonnee,LARGEUR_SPRITE_MENU*Menu_Facteur_X+3,HAUTEUR_SPRITE_MENU*Menu_Facteur_Y+3); -#endif + UpdateRect(0,Menu_Ordonnee,LARGEUR_SPRITE_MENU*Menu_Facteur_X+3,HAUTEUR_SPRITE_MENU*Menu_Facteur_Y+3); } // -- Dessiner un pinceau prédéfini dans la fenêtre -- @@ -3288,12 +3214,10 @@ void Afficher_pinceau_dans_fenetre(word X,word Y,int Numero) for (Pos_fenetre_X=Orig_X,Pos_X=0; Pos_XPos_Y+3)*Menu_Facteur_Y; for (Pos_X=0,Pos_fenetre_X=Origine_X;Pos_X<16;Pos_X++,Pos_fenetre_X+=(Menu_Facteur_X*10)) Block(Pos_fenetre_X,Origine_Y,Menu_Facteur_X*3,Menu_Facteur_Y*80,CM_Clair); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Origine_X,Origine_Y,ToWinL(160),ToWinH(80)); -#endif + UpdateRect(Origine_X,Origine_Y,ToWinL(160),ToWinH(80)); } @@ -1268,9 +1255,7 @@ void Tagger_intervalle_palette(byte Debut,byte Fin) } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,ToWinX(Fenetre_Liste_boutons_palette->Pos_X+3),ToWinY(Fenetre_Liste_boutons_palette->Pos_Y+3),ToWinL(12*16),ToWinH(5*16)); -#endif + UpdateRect(ToWinX(Fenetre_Liste_boutons_palette->Pos_X+3),ToWinY(Fenetre_Liste_boutons_palette->Pos_Y+3),ToWinL(12*16),ToWinH(5*16)); } @@ -1308,11 +1293,9 @@ void Fenetre_Dessiner_jauge(struct Fenetre_Bouton_scroller * Enreg) Fenetre_Pos_Y+(Position_curseur_jauge*Menu_Facteur_Y), 11*Menu_Facteur_X,Enreg->Hauteur_curseur*Menu_Facteur_Y,CM_Clair/*CM_Blanc*/); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Enreg->Pos_X*Menu_Facteur_X), + UpdateRect(Fenetre_Pos_X+(Enreg->Pos_X*Menu_Facteur_X), Fenetre_Pos_Y+Enreg->Pos_Y*Menu_Facteur_Y, 11*Menu_Facteur_X,(Enreg->Hauteur)*Menu_Facteur_Y); -#endif } void Fenetre_Dessiner_bouton_scroller(struct Fenetre_Bouton_scroller * Enreg) @@ -1691,10 +1674,8 @@ void Deplacer_fenetre(short Dx, short Dy) Ligne_horizontale_XOR(Nouveau_X,Nouveau_Y+Hauteur-1,Largeur); Afficher_curseur(); } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Ancien_X,Ancien_Y,Largeur,Hauteur); - SDL_UpdateRect(Ecran_SDL,Nouveau_X,Nouveau_Y,Largeur,Hauteur); -#endif + UpdateRect(Ancien_X,Ancien_Y,Largeur,Hauteur); + UpdateRect(Nouveau_X,Nouveau_Y,Largeur,Hauteur); } Effacer_curseur(); @@ -1728,13 +1709,11 @@ void Deplacer_fenetre(short Dx, short Dy) Restaure_fond(Buffer, Nouveau_X, Nouveau_Y, Fenetre_Largeur, Fenetre_Hauteur); // Mise à jour du rectangle englobant -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL, + UpdateRect( (Nouveau_X>Fenetre_Pos_X)?Fenetre_Pos_X:Nouveau_X, (Nouveau_Y>Fenetre_Pos_Y)?Fenetre_Pos_Y:Nouveau_Y, ((Nouveau_X>Fenetre_Pos_X)?(Nouveau_X-Fenetre_Pos_X):(Fenetre_Pos_X-Nouveau_X)) + Fenetre_Largeur*Menu_Facteur_X, ((Nouveau_Y>Fenetre_Pos_Y)?(Nouveau_Y-Fenetre_Pos_Y):(Fenetre_Pos_Y-Nouveau_Y)) + Fenetre_Hauteur*Menu_Facteur_Y); -#endif Fenetre_Pos_X=Nouveau_X; Fenetre_Pos_Y=Nouveau_Y; diff --git a/palette.c b/palette.c index 0c63895f..b6290a51 100644 --- a/palette.c +++ b/palette.c @@ -31,6 +31,7 @@ #include "boutons.h" #include "pages.h" #include "aide.h" +#include "sdlscreen.h" // --------------------------- Menu des palettes ----------------------------- char * Libelle_reduction_palette[7]= @@ -800,9 +801,7 @@ void Bouton_Palette(void) Dessiner_zigouigoui(263,165,CM_Fonce,-1); Dessiner_zigouigoui(280,165,CM_Fonce,+1); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,299*Menu_Facteur_X,188*Menu_Facteur_Y); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,299*Menu_Facteur_X,188*Menu_Facteur_Y); Afficher_curseur(); @@ -867,9 +866,7 @@ void Bouton_Palette(void) // Affichage dans le block de visu de la couleur en cours Block(Fenetre_Pos_X+(Menu_Facteur_X*264),Fenetre_Pos_Y+(Menu_Facteur_Y*93),Menu_Facteur_X<<4,Menu_Facteur_Y*64,Fore_color); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Menu_Facteur_X*264),Fenetre_Pos_Y+(Menu_Facteur_Y*93),Menu_Facteur_X<<4,Menu_Facteur_Y*64); -#endif + UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X*264),Fenetre_Pos_Y+(Menu_Facteur_Y*93),Menu_Facteur_X<<4,Menu_Facteur_Y*64); memcpy(Palette_backup ,Palette_de_travail,sizeof(T_Palette)); memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette)); @@ -1140,10 +1137,8 @@ void Bouton_Palette(void) Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block); // En cas de X-Swap, tout l'ecran a pu changer de couleur. -#ifndef __macosx__ if (Bouton_clicke==8) - SDL_UpdateRect(Ecran_SDL,0, 0, Largeur_ecran, Menu_Ordonnee_avant_fenetre); -#endif + UpdateRect(0, 0, Largeur_ecran, Menu_Ordonnee_avant_fenetre); } break; @@ -1790,9 +1785,7 @@ void Bouton_Palette(void) Block(Fenetre_Pos_X+(Menu_Facteur_X*260),Fenetre_Pos_Y+(Menu_Facteur_Y*89),Menu_Facteur_X*24,Menu_Facteur_Y*72,Back_color); Bloc_degrade_dans_fenetre(264,93,Debut_block,Fin_block); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+8*Menu_Facteur_X,Fenetre_Pos_Y+82*Menu_Facteur_Y,Menu_Facteur_X*16*10,Menu_Facteur_Y*5*16); -#endif + UpdateRect(Fenetre_Pos_X+8*Menu_Facteur_X,Fenetre_Pos_Y+82*Menu_Facteur_Y,Menu_Facteur_X*16*10,Menu_Facteur_Y*5*16); Afficher_curseur(); Il_faut_remapper=0; @@ -1858,9 +1851,7 @@ void Bouton_Palette_secondaire(void) Fenetre_Definir_bouton_normal(10,37,180,14,"User's color series" ,14,0,SDLK_s); // 2 Fenetre_Definir_bouton_normal(60,60, 80,14,"Cancel" , 0,1,SDLK_ESCAPE); // 3 -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*200,Menu_Facteur_Y*80); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*200,Menu_Facteur_Y*80); Afficher_curseur(); diff --git a/readline.c b/readline.c index 384b360e..d086b6a5 100644 --- a/readline.c +++ b/readline.c @@ -36,6 +36,7 @@ #include "erreurs.h" #include "const.h" #include "linux.h" +#include "sdlscreen.h" #define COULEUR_TEXTE CM_Noir #define COULEUR_FOND CM_Clair @@ -128,10 +129,8 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type // Effacement de la chaîne Block(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3),COULEUR_FOND); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); -#endif // Mise à jour des variables se rapportant à la chaîne en fonction de la chaîne initiale strcpy(Chaine_initiale,Chaine); @@ -154,10 +153,8 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type Chaine_affichee[Taille_affichee-1]=CARACTERE_TRIANGLE_DROIT; Rafficher_toute_la_chaine(Pos_X,Pos_Y,Chaine_affichee,Position - Offset); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); -#endif while ((Touche_lue!=SDLK_RETURN) && (Touche_lue!=SDLK_ESCAPE)) { @@ -295,10 +292,8 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type Chaine_affichee[Taille_affichee-1]=CARACTERE_TRIANGLE_DROIT; Rafficher_toute_la_chaine(Pos_X,Pos_Y,Chaine_affichee,Position - Offset); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); -#endif } // Fin du "switch(Touche_lue)" } // Fin du "while" @@ -319,10 +314,8 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type { Print_dans_fenetre_limite(Pos_X,Pos_Y,Chaine,Taille_affichee,COULEUR_TEXTE,COULEUR_FOND); } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); -#endif return (Touche_lue==SDLK_RETURN); } diff --git a/sdlscreen.c b/sdlscreen.c index 694e0b0c..de032508 100644 --- a/sdlscreen.c +++ b/sdlscreen.c @@ -26,6 +26,23 @@ #include "divers.h" #include "erreurs.h" +// Mise à jour minimaliste en nombre de pixels +#define METHODE_UPDATE_MULTI_RECTANGLE 1 +// Mise à jour intermédiaire, par rectangle inclusif. +#define METHODE_UPDATE_PAR_CUMUL 2 +// Mise à jour totale, pour les plate-formes qui imposent un Vsync à chaque mise à jour écran. +#define METHODE_UPDATE_PLEINE_PAGE 3 + +// METHODE_UPDATE peut être fixé depuis le makefile, sinon c'est ici: +#ifndef METHODE_UPDATE + #ifdef __macosx__ + #define METHODE_UPDATE METHODE_UPDATE_PLEINE_PAGE + #else + #define METHODE_UPDATE METHODE_UPDATE_MULTI_RECTANGLE + #endif +#endif + + void Pixel_SDL (word X,word Y,byte Couleur) /* Affiche un pixel de la Couleur aux coords X;Y à l'écran */ { @@ -60,9 +77,7 @@ void Afficher_partie_de_l_ecran_SDL (word Largeur,word Hauteur,word Largeu Src+=Largeur_image; Dest+=Largeur_ecran; } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,0,0,Largeur,Hauteur); -#endif + UpdateRect(0,0,Largeur,Hauteur); } void Block_SDL (word Debut_X,word Debut_Y,word Largeur,word Hauteur,byte Couleur) @@ -74,7 +89,7 @@ void Block_SDL (word Debut_X,word Debut_Y,word Largeur,word Hauteur,byte Couleur rectangle.w=Largeur; rectangle.h=Hauteur; SDL_FillRect(Ecran_SDL,&rectangle,Couleur); -// SDL_UpdateRect(Ecran_SDL,Debut_X,Debut_Y,Largeur,Hauteur); +// UpdateRect(Debut_X,Debut_Y,Largeur,Hauteur); } void Pixel_Preview_Normal_SDL (word X,word Y,byte Couleur) @@ -166,9 +181,7 @@ void Display_brush_Color_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decala EDI = EDI + Largeur_ecran - Largeur; ESI = ESI + Largeur_brosse - Largeur; } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pos_X,Pos_Y,Largeur,Hauteur); -#endif + UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur); } void Display_brush_Mono_SDL (word Pos_X, word Pos_Y, @@ -200,9 +213,7 @@ void Display_brush_Mono_SDL (word Pos_X, word Pos_Y, Src+=Largeur_brosse-Largeur; Dest+=Largeur_ecran-Largeur; } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pos_X,Pos_Y,Largeur,Hauteur); -#endif + UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur); } void Clear_brush_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_image) @@ -221,9 +232,7 @@ void Clear_brush_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Src+=Largeur_image; Dest+=Largeur_ecran; } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pos_X,Pos_Y,Largeur,Hauteur); -#endif + UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur); } void Remap_screen_SDL (word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * Table_de_conversion) @@ -245,16 +254,14 @@ void Remap_screen_SDL (word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * Ta EDI = EDI + Largeur_ecran - Largeur; } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pos_X,Pos_Y,Largeur,Hauteur); -#endif + UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur); } void Afficher_une_ligne_ecran_SDL (word Pos_X,word Pos_Y,word Largeur,byte * Ligne) /* On affiche toute une ligne de pixels. Utilisé pour les textes. */ { memcpy(Ecran+Pos_X+Pos_Y*Largeur_ecran,Ligne,Largeur); - //SDL_UpdateRect(Ecran_SDL,Pos_X,Pos_Y,Largeur,1); + //UpdateRect(Pos_X,Pos_Y,Largeur,1); } void Afficher_une_ligne_transparente_mono_a_l_ecran_SDL( @@ -309,10 +316,8 @@ void Afficher_partie_de_l_ecran_zoomee_SDL( EDX++; if(EDX==Hauteur) { -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Principal_X_Zoom,0, + UpdateRect(Principal_X_Zoom,0, Largeur*Loupe_Facteur,Hauteur); -#endif return; } CX--; @@ -409,10 +414,8 @@ void Display_brush_Mono_zoom_SDL (word Pos_X, word Pos_Y, // On vérifie qu'on est pas à la ligne finale if(DX == Pos_Y_Fin) { -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL, Pos_X, Pos_Y, + UpdateRect( Pos_X, Pos_Y, Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); -#endif return; } BX --; @@ -446,10 +449,8 @@ void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Dec DX++; if(DX==Pos_Y_Fin) { -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Pos_X,Pos_Y, + UpdateRect(Pos_X,Pos_Y, Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y); -#endif return; } bx--; @@ -496,3 +497,30 @@ void Gere_Evenement_SDL(SDL_Event * event) } } +void Flush_update(void) +{ + #if (METHODE_UPDATE == METHODE_UPDATE_PLEINE_PAGE) + // Mise à jour de la totalité de l'écran + SDL_UpdateRect(Ecran_SDL, 0, 0, 0, 0); + #endif + +} + +void UpdateRect(short X, short Y, unsigned short Largeur, unsigned short Hauteur) +{ + #if (METHODE_UPDATE == METHODE_UPDATE_MULTI_RECTANGLE) + SDL_UpdateRect(Ecran_SDL, (X), (Y), (Largeur), (Hauteur)); + #endif +} + + +#if (METHODE_UPDATE == METHODE_UPDATE_MULTI_RECTANGLE) + +#endif +#if (METHODE_UPDATE == METHODE_UPDATE_PAR_CUMUL) + +#endif +#if (METHODE_UPDATE == METHODE_UPDATE_PLEINE_PAGE) + +#endif + diff --git a/sdlscreen.h b/sdlscreen.h index 533bdb7a..13b59f0f 100644 --- a/sdlscreen.h +++ b/sdlscreen.h @@ -51,4 +51,8 @@ SDL_Rect ** Liste_Modes_Videos_SDL; byte* Ecran; + void UpdateRect(short X, short Y, unsigned short Largeur, unsigned short Hauteur); + void Flush_update(void); + + #endif // SDLSCREEN_H_INCLUDED diff --git a/shade.c b/shade.c index 86ec14cf..f99014b6 100644 --- a/shade.c +++ b/shade.c @@ -26,6 +26,7 @@ #include "divers.h" #include "readline.h" #include "aide.h" +#include "sdlscreen.h" void Bouton_Shade_Mode(void) { @@ -131,9 +132,7 @@ void Shade_Blocs_degrades(void) Block(Fenetre_Pos_X+(Menu_Facteur_X*225),Fenetre_Pos_Y+(Menu_Facteur_Y*36), Menu_Facteur_X*62,Menu_Facteur_Y*46,CM_Clair); } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+(Menu_Facteur_X*224),Fenetre_Pos_Y+(Menu_Facteur_Y*35),Menu_Facteur_X*64,Menu_Facteur_Y*48); -#endif + UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X*224),Fenetre_Pos_Y+(Menu_Facteur_Y*35),Menu_Facteur_X*64,Menu_Facteur_Y*48); } @@ -177,9 +176,7 @@ void Tagger_shades(word Select_Debut,word Select_Fin) Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Clair); } } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+8*Menu_Facteur_X,Fenetre_Pos_Y+131*Menu_Facteur_Y,Menu_Facteur_X*64<<2,Menu_Facteur_Y*8<<3); -#endif + UpdateRect(Fenetre_Pos_X+8*Menu_Facteur_X,Fenetre_Pos_Y+131*Menu_Facteur_Y,Menu_Facteur_X*64<<2,Menu_Facteur_Y*8<<3); } @@ -253,9 +250,7 @@ void Afficher_tout_le_shade(word Select_Debut1,word Select_Fin1, Menu_Facteur_X<<2,Menu_Facteur_Y<<2, Shade_Liste[Shade_Actuel].Liste[Position]&0xFF); } -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X+7*Menu_Facteur_X,Fenetre_Pos_Y+126*Menu_Facteur_Y,Menu_Facteur_X*((64<<2)+2),Menu_Facteur_Y*((8<<2)+2)); -#endif + UpdateRect(Fenetre_Pos_X+7*Menu_Facteur_X,Fenetre_Pos_Y+126*Menu_Facteur_Y,Menu_Facteur_X*((64<<2)+2),Menu_Facteur_Y*((8<<2)+2)); Tagger_shades(Select_Debut2,Select_Fin2); Shade_Blocs_degrades(); Afficher_couleur_case_selectionnee(Select_Debut2,Select_Fin2); @@ -528,9 +523,7 @@ int Menu_Shade(void) memcpy(Buffer ,Shade_Liste[Shade_Actuel].Liste,512*sizeof(word)); memcpy(Buffer_Undo,Shade_Liste[Shade_Actuel].Liste,512*sizeof(word)); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*310,Menu_Facteur_Y*190); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*310,Menu_Facteur_Y*190); Afficher_curseur(); @@ -1059,9 +1052,7 @@ void Bouton_Quick_shade_Menu(void) Num2str(Quick_shade_Step,Chaine,3); Fenetre_Contenu_bouton_saisie(Fenetre_Liste_boutons_special,Chaine); -#ifndef __macosx__ - SDL_UpdateRect(Ecran_SDL,Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*142,Menu_Facteur_Y*56); -#endif + UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X*142,Menu_Facteur_Y*56); Afficher_curseur();