From f8c7c6730bad3f978ffc72cb92bd3b6f36547520 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Mon, 23 Mar 2009 02:33:21 +0000 Subject: [PATCH] translations git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@690 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- aide.c | 24 +- boutons.c | 234 +++++------ boutons.h | 2 +- brush.c | 326 ++++++++-------- divers.c | 36 +- divers.h | 6 +- erreurs.h | 2 +- gfx2.cfg | Bin 10062 -> 10062 bytes global.h | 4 +- graph.c | 460 +++++++++++----------- graph.h | 23 +- hotkeys.h | 2 +- init.c | 93 +++-- input.c | 8 +- io.c | 20 +- loadsave.c | 796 +++++++++++++++++++------------------- loadsave.h | 6 +- main.c | 4 +- moteur.c | 332 ++++++++-------- moteur.h | 36 +- op_c.c | 180 ++++----- op_c.h | 14 +- operatio.c | 40 +- pages.c | 18 +- pages.h | 2 +- palette.c | 214 +++++----- pxdouble.c | 84 ++-- pxdouble.h | 26 +- pxsimple.c | 84 ++-- pxsimple.h | 28 +- pxtall.c | 82 ++-- pxtall.h | 24 +- pxwide.c | 84 ++-- pxwide.h | 28 +- readini.c | 8 +- readline.c | 150 +++---- readline.h | 8 +- saveini.c | 4 +- sdlscreen.c | 2 +- shade.c | 68 ++-- special.c | 88 ++--- struct.h | 22 +- translat/translations.xls | Bin 272896 -> 274944 bytes windows.c | 344 ++++++++-------- windows.h | 28 +- 45 files changed, 2021 insertions(+), 2023 deletions(-) diff --git a/aide.c b/aide.c index 49b8493e..220049ed 100644 --- a/aide.c +++ b/aide.c @@ -65,28 +65,28 @@ word * Raccourci(word NumeroRaccourci) const char * Valeur_Raccourci_Clavier(word NumeroRaccourci) { static char Noms_raccourcis[80]; - word * Pointeur = Raccourci(NumeroRaccourci); - if (Pointeur == NULL) + word * pointer = Raccourci(NumeroRaccourci); + if (pointer == NULL) return "(Problem)"; else { - if (Pointeur[0] == 0 && Pointeur[1] == 0) + if (pointer[0] == 0 && pointer[1] == 0) return "None"; - if (Pointeur[0] != 0 && Pointeur[1] == 0) - return Nom_touche(Pointeur[0]); - if (Pointeur[0] == 0 && Pointeur[1] != 0) - return Nom_touche(Pointeur[1]); + if (pointer[0] != 0 && pointer[1] == 0) + return Nom_touche(pointer[0]); + if (pointer[0] == 0 && pointer[1] != 0) + return Nom_touche(pointer[1]); - strcpy(Noms_raccourcis, Nom_touche(Pointeur[0])); + strcpy(Noms_raccourcis, Nom_touche(pointer[0])); strcat(Noms_raccourcis, " or "); - strcat(Noms_raccourcis, Nom_touche(Pointeur[1])); + strcat(Noms_raccourcis, Nom_touche(pointer[1])); return Noms_raccourcis; } } -void Redefinir_controle(word *Raccourci, int Pos_X, int Pos_Y) +void Redefinir_controle(word *Raccourci, int x_pos, int y_pos) { Effacer_curseur(); - Print_dans_fenetre(Pos_X,Pos_Y,"*PRESS KEY OR BUTTON*",CM_Noir,CM_Clair); + Print_dans_fenetre(x_pos,y_pos,"*PRESS KEY OR BUTTON*",CM_Noir,CM_Clair); Afficher_curseur(); while (1) { @@ -128,7 +128,7 @@ void Fenetre_controle(int NumeroControle) } /* IndiceConfig=0; - while (ConfigTouche[IndiceConfig].Numero!=IndiceOrdo) + while (ConfigTouche[IndiceConfig].Number!=IndiceOrdo) { IndiceConfig++; if (IndiceConfig>=134) diff --git a/boutons.c b/boutons.c index 953deb81..c0253108 100644 --- a/boutons.c +++ b/boutons.c @@ -148,7 +148,7 @@ void Message_Memoire_insuffisante(void) void Bouton_Message_initial(void) { char Chaine[21]; - int Pos_X,Offs_Y,X,Y; + int x_pos,Offs_Y,X,Y; sprintf(Chaine,"GrafX %d.%.2d%s%s",VERSION1, VERSION2, ALPHA_BETA,POURCENTAGE_VERSION); Ouvrir_fenetre(260,172,Chaine); @@ -158,8 +158,8 @@ void Bouton_Message_initial(void) Fenetre_Pos_Y+(Menu_Facteur_Y*21), Menu_Facteur_X*237,Menu_Facteur_Y*60,CM_Noir); for (Y=23,Offs_Y=0; Y<79; Offs_Y+=231,Y++) - for (X=14,Pos_X=0; Pos_X<231; Pos_X++,X++) - Pixel_dans_fenetre(X,Y,Logo_GrafX2[Offs_Y+Pos_X]); + for (X=14,x_pos=0; x_pos<231; x_pos++,X++) + Pixel_dans_fenetre(X,Y,Logo_GrafX2[Offs_Y+x_pos]); Print_dans_fenetre(130-4*21,88,"Copyright (c) 2007 by",CM_Fonce,CM_Clair); Print_dans_fenetre(130-4*23,96,"the Grafx2 project team",CM_Noir,CM_Clair); @@ -1253,7 +1253,7 @@ void Bouton_Kill(void) //------------------------- Dimensions Image/Ecran --------------------------- -void Cocher_bouton_mode(short Pos_X, short Pos_Y, byte state) +void Cocher_bouton_mode(short x_pos, short y_pos, byte state) { byte Couleur; @@ -1264,10 +1264,10 @@ void Cocher_bouton_mode(short Pos_X, short Pos_Y, byte state) case 2 : Couleur=CM_Fonce; break; default: Couleur=CM_Noir; } - Block(Fenetre_Pos_X+Menu_Facteur_X*Pos_X,Fenetre_Pos_Y+Menu_Facteur_Y*Pos_Y, + Block(Fenetre_Pos_X+Menu_Facteur_X*x_pos,Fenetre_Pos_Y+Menu_Facteur_Y*y_pos, Menu_Facteur_X*9,Menu_Facteur_Y*3,Couleur); - UpdateRect(Fenetre_Pos_X+Menu_Facteur_X*Pos_X,Fenetre_Pos_Y+Menu_Facteur_Y*Pos_Y, + UpdateRect(Fenetre_Pos_X+Menu_Facteur_X*x_pos,Fenetre_Pos_Y+Menu_Facteur_Y*y_pos, Menu_Facteur_X*9,Menu_Facteur_Y*3); } @@ -1275,15 +1275,15 @@ void Cocher_bouton_mode(short Pos_X, short Pos_Y, byte state) void Afficher_liste_modes(short Debut_liste, short Position_curseur) { short Indice,Mode_courant; - short Pos_Y; + short y_pos; byte Couleur_texte,Couleur_fond; char Chaine[29]; char *Ratio; for (Mode_courant=Debut_liste,Indice=0; Indice<12 && Mode_courant < Nb_modes_video ; Indice++,Mode_courant++) { - Pos_Y=70+(Indice<<3); - Cocher_bouton_mode(19,Pos_Y+2,Mode_video[Mode_courant].Etat); + y_pos=70+(Indice<<3); + Cocher_bouton_mode(19,y_pos+2,Mode_video[Mode_courant].Etat); if (Position_curseur!=Indice) { @@ -1333,7 +1333,7 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur) strcat(Chaine,Ratio); - Print_dans_fenetre(38,Pos_Y,Chaine,Couleur_texte,Couleur_fond); + Print_dans_fenetre(38,y_pos,Chaine,Couleur_texte,Couleur_fond); } } @@ -1768,19 +1768,19 @@ void Bouton_Ellipse_pleine(void) // -- Gestion du menu des dégradés ------------------------------------------ -void Degrade_Dessiner_bouton_de_technique(short Pos_X,short Pos_Y,int Technique) +void Degrade_Dessiner_bouton_de_technique(short x_pos,short y_pos,int Technique) { short line; // On commence par afficher les 2 côtés qui constituent le dégradé de base: // Côté gauche (noir) - Block(Fenetre_Pos_X+((Pos_X+2)*Menu_Facteur_X), - Fenetre_Pos_Y+((Pos_Y+2)*Menu_Facteur_Y), + Block(Fenetre_Pos_X+((x_pos+2)*Menu_Facteur_X), + Fenetre_Pos_Y+((y_pos+2)*Menu_Facteur_Y), Menu_Facteur_X*6, Menu_Facteur_Y*10,CM_Noir); // Côté droit (blanc) - Block(Fenetre_Pos_X+((Pos_X+8)*Menu_Facteur_X), - Fenetre_Pos_Y+((Pos_Y+2)*Menu_Facteur_Y), + Block(Fenetre_Pos_X+((x_pos+8)*Menu_Facteur_X), + Fenetre_Pos_Y+((y_pos+2)*Menu_Facteur_Y), Menu_Facteur_X*5, Menu_Facteur_Y*10,CM_Blanc); @@ -1792,15 +1792,15 @@ void Degrade_Dessiner_bouton_de_technique(short Pos_X,short Pos_Y,int Technique) if (line&1) { // Lignes impaires - Pixel_dans_fenetre(Pos_X+ 5,Pos_Y+line,CM_Blanc); - Pixel_dans_fenetre(Pos_X+ 7,Pos_Y+line,CM_Blanc); - Pixel_dans_fenetre(Pos_X+ 8,Pos_Y+line,CM_Noir); + Pixel_dans_fenetre(x_pos+ 5,y_pos+line,CM_Blanc); + Pixel_dans_fenetre(x_pos+ 7,y_pos+line,CM_Blanc); + Pixel_dans_fenetre(x_pos+ 8,y_pos+line,CM_Noir); } else { // Lignes paires - Pixel_dans_fenetre(Pos_X+ 6,Pos_Y+line,CM_Blanc); - Pixel_dans_fenetre(Pos_X+ 9,Pos_Y+line,CM_Noir); + Pixel_dans_fenetre(x_pos+ 6,y_pos+line,CM_Blanc); + Pixel_dans_fenetre(x_pos+ 9,y_pos+line,CM_Noir); } break; case 2 : // Dégradé de trames étendues @@ -1809,19 +1809,19 @@ void Degrade_Dessiner_bouton_de_technique(short Pos_X,short Pos_Y,int Technique) if (line&1) { // Lignes impaires - Pixel_dans_fenetre(Pos_X+ 7,Pos_Y+line,CM_Blanc); - Pixel_dans_fenetre(Pos_X+ 8,Pos_Y+line,CM_Noir); - Pixel_dans_fenetre(Pos_X+10,Pos_Y+line,CM_Noir); + Pixel_dans_fenetre(x_pos+ 7,y_pos+line,CM_Blanc); + Pixel_dans_fenetre(x_pos+ 8,y_pos+line,CM_Noir); + Pixel_dans_fenetre(x_pos+10,y_pos+line,CM_Noir); } else { // Lignes paires - Pixel_dans_fenetre(Pos_X+ 4,Pos_Y+line,CM_Blanc); - Pixel_dans_fenetre(Pos_X+ 6,Pos_Y+line,CM_Blanc); + Pixel_dans_fenetre(x_pos+ 4,y_pos+line,CM_Blanc); + Pixel_dans_fenetre(x_pos+ 6,y_pos+line,CM_Blanc); } } - UpdateRect(Fenetre_Pos_X+((Pos_X+2)*Menu_Facteur_X),Fenetre_Pos_Y+((Pos_Y+2)*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+((x_pos+2)*Menu_Facteur_X),Fenetre_Pos_Y+((y_pos+2)*Menu_Facteur_Y), Menu_Facteur_X*10,Menu_Facteur_Y*10); } @@ -1852,8 +1852,8 @@ void Degrade_Charger_infos_du_tableau(int Indice) void Degrade_Dessiner_preview(short Debut_X,short Debut_Y,short width,short height,int Indice) { - short Pos_X; // Variables de balayage du block en bas de l'écran. - short Pos_Y; + short x_pos; // Variables de balayage du block en bas de l'écran. + short y_pos; short Fin_X; short Fin_Y; @@ -1867,9 +1867,9 @@ void Degrade_Dessiner_preview(short Debut_X,short Debut_Y,short width,short heig Fin_X=Debut_X+Degrade_Intervalle_total; Fin_Y=Debut_Y+(height*Menu_Facteur_Y); - for (Pos_Y=Debut_Y;Pos_YWidth, Menu_Facteur_Y*Fenetre_Liste_boutons_special->Height,CM_Clair); - for (Pos_Y=0; Pos_Y16)?16:Brosse_Largeur; Trame_Hauteur=(Brosse_Hauteur>16)?16:Brosse_Hauteur; - for (Pos_Y=0; Pos_Y>1); Brosse_Decalage_Y=(Brosse_Hauteur>>1); Changer_la_forme_du_pinceau(FORME_PINCEAU_BROSSE_COULEUR); @@ -5452,12 +5452,12 @@ void Bouton_Trame_Menu(void) case 13 : // Scroll vers le haut Effacer_curseur(); - for (Pos_X=0; Pos_X0; Pos_Y--) - Trame[Pos_X][Pos_Y]=Trame[Pos_X][Pos_Y-1]; - Trame[Pos_X][0]=Temp; + Temp=Trame[x_pos][Trame_Hauteur-1]; // Octet temporaire + for (y_pos=Trame_Hauteur-1; y_pos>0; y_pos--) + Trame[x_pos][y_pos]=Trame[x_pos][y_pos-1]; + Trame[x_pos][0]=Temp; } Dessiner_trame_zoomee(Orig_X,Orig_Y); Afficher_curseur(); @@ -5480,12 +5480,12 @@ void Bouton_Trame_Menu(void) case 15 : // Scroll vers la gauche Effacer_curseur(); - for (Pos_Y=0; Pos_Y0; Pos_X--) - Trame[Pos_X][Pos_Y]=Trame[Pos_X-1][Pos_Y]; - Trame[0][Pos_Y]=Temp; + Temp=Trame[Trame_Largeur-1][y_pos]; // Octet temporaire + for (x_pos=Trame_Largeur-1; x_pos>0; x_pos--) + Trame[x_pos][y_pos]=Trame[x_pos-1][y_pos]; + Trame[0][y_pos]=Temp; } Dessiner_trame_zoomee(Orig_X,Orig_Y); Afficher_curseur(); @@ -5592,11 +5592,11 @@ void Bouton_Ajuster(void) void Afficher_sprite_effet(short Numero_sprite, short Debut_X, short Debut_Y) { - short X,Y,Pos_X,Pos_Y; + short X,Y,x_pos,y_pos; - for (Y=0,Pos_Y=Debut_Y;Y pas de dessin + if (!(is_preview && Mouse_K)) // Si bouton enfoncé & preview > pas de dessin switch (Pinceau_Forme) { case FORME_PINCEAU_POINT : // !!! TOUJOURS EN PREVIEW !!! @@ -152,7 +152,7 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) Fin_Compteur_X=Debut_Compteur_X+width; Fin_Compteur_Y=Debut_Compteur_Y+height; - if (Preview) + if (is_preview) { if ( (width>0) && (height>0) ) Display_brush_Color( @@ -216,24 +216,24 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) } else { - for (Pos_Y = Debut_Y, Compteur_Y = Debut_Compteur_Y; + for (y_pos = Debut_Y, Compteur_Y = Debut_Compteur_Y; Compteur_Y < Fin_Compteur_Y; - Pos_Y++, Compteur_Y++ + y_pos++, Compteur_Y++ ) - for (Pos_X = Debut_X, Compteur_X = Debut_Compteur_X; + for (x_pos = Debut_X, Compteur_X = Debut_Compteur_X; Compteur_X < Fin_Compteur_X; - Pos_X++, Compteur_X++ + x_pos++, Compteur_X++ ) { Couleur_temporaire = Lit_pixel_dans_ecran_courant( - Pos_X,Pos_Y + x_pos,y_pos ); - Position = (Compteur_Y * Smear_Brosse_Largeur)+ Compteur_X; + position = (Compteur_Y * Smear_Brosse_Largeur)+ Compteur_X; if ( (Lit_pixel_dans_brosse(Compteur_X,Compteur_Y) != Back_color) && (Compteur_Y=Smear_Min_Y) && (Compteur_X>=Smear_Min_X) ) - Afficher_pixel(Pos_X,Pos_Y,Smear_Brosse[Position]); - Smear_Brosse[Position]=Couleur_temporaire; + Afficher_pixel(x_pos,y_pos,Smear_Brosse[position]); + Smear_Brosse[position]=Couleur_temporaire; } Mettre_Ecran_A_Jour(Debut_X,Debut_Y,width,height); @@ -247,19 +247,19 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) else { if (Shade_Table==Shade_Table_gauche) - for (Pos_Y=Debut_Y,Compteur_Y=Debut_Compteur_Y;Compteur_Y0) && (height>0) ) Display_brush_Mono(Debut_X-Principal_Decalage_X, @@ -335,16 +335,16 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) } else { - for (Pos_Y=Debut_Y,Compteur_Y=Debut_Compteur_Y;Compteur_Y=Smear_Min_Y) && (Compteur_X>=Smear_Min_X) ) - Afficher_pixel(Pos_X,Pos_Y,Smear_Brosse[Position]); - Smear_Brosse[Position]=Couleur_temporaire; + Afficher_pixel(x_pos,y_pos,Smear_Brosse[position]); + Smear_Brosse[position]=Couleur_temporaire; } Mettre_Ecran_A_Jour(Debut_X,Debut_Y,width,height); @@ -358,11 +358,11 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) } else { - for (Pos_Y=Debut_Y,Compteur_Y=Debut_Compteur_Y;Compteur_Y=Smear_Min_Y) && (Compteur_X>=Smear_Min_X) ) - Afficher_pixel(Pos_X,Pos_Y,Smear_Brosse[Position]); - Smear_Brosse[Position]=Couleur_temporaire; + Afficher_pixel(x_pos,y_pos,Smear_Brosse[position]); + Smear_Brosse[position]=Couleur_temporaire; } Mettre_Ecran_A_Jour(Debut_X, Debut_Y, width, height); } @@ -462,11 +462,11 @@ void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview) } else { - for (Pos_Y=Debut_Y,Compteur_Y=Debut_Compteur_Y;Compteur_Y0) - Pixel_dans_brosse(Pos_X-1,Pos_Y,Back_color); + if (x_pos>0) + Pixel_dans_brosse(x_pos-1,y_pos,Back_color); state=0; } } @@ -958,28 +958,28 @@ void Nibble_brush(void) { if (!state) { - Pixel_dans_brosse(Pos_X,Pos_Y,Back_color); + Pixel_dans_brosse(x_pos,y_pos,Back_color); state=1; } } } // Cas du dernier pixel à droite de la ligne - if (Temporaire[((Pos_Y+1)*width)+Pos_X+1]==Back_color) - Pixel_dans_brosse(Pos_X-1,Pos_Y,Back_color); + if (Temporaire[((y_pos+1)*width)+x_pos+1]==Back_color) + Pixel_dans_brosse(x_pos-1,y_pos,Back_color); } // 2ème balayage (vertical) - for (Pos_X=0; Pos_X0) - Pixel_dans_brosse(Pos_X,Pos_Y-1,Back_color); + if (y_pos>0) + Pixel_dans_brosse(x_pos,y_pos-1,Back_color); state=0; } } @@ -987,14 +987,14 @@ void Nibble_brush(void) { if (!state) { - Pixel_dans_brosse(Pos_X,Pos_Y,Back_color); + Pixel_dans_brosse(x_pos,y_pos,Back_color); state=1; } } } // Cas du dernier pixel en bas de la colonne - if (Temporaire[((Pos_Y+1)*width)+Pos_X+1]==Back_color) - Pixel_dans_brosse(Pos_X,Pos_Y-1,Back_color); + if (Temporaire[((y_pos+1)*width)+x_pos+1]==Back_color) + Pixel_dans_brosse(x_pos,y_pos-1,Back_color); } // On recentre la prise sur la brosse @@ -1023,8 +1023,8 @@ void Capturer_brosse_au_lasso(int Vertices, short * Points,short clear) short Fin_X=Limite_Gauche-1; short Fin_Y=Limite_Haut-1; short Temporaire; - short Pos_X; - short Pos_Y; + short x_pos; + short y_pos; word Nouvelle_Brosse_Largeur; word Nouvelle_Brosse_Hauteur; @@ -1032,16 +1032,16 @@ void Capturer_brosse_au_lasso(int Vertices, short * Points,short clear) // On recherche les bornes de la brosse: for (Temporaire=0; TemporaireFin_X) - Fin_X=Pos_X; - if (Pos_YFin_Y) - Fin_Y=Pos_Y; + x_pos=Points[Temporaire<<1]; + y_pos=Points[(Temporaire<<1)+1]; + if (x_posFin_X) + Fin_X=x_pos; + if (y_posFin_Y) + Fin_Y=y_pos; } // On clippe ces bornes à l'écran: @@ -1126,14 +1126,14 @@ void Capturer_brosse_au_lasso(int Vertices, short * Points,short clear) // On scanne la brosse pour remplacer tous les pixels affectés par le // polyfill par ceux de l'image: - for (Pos_Y=Debut_Y;Pos_Y<=Fin_Y;Pos_Y++) - for (Pos_X=Debut_X;Pos_X<=Fin_X;Pos_X++) - if (Lit_pixel_dans_brosse(Pos_X-Debut_X,Pos_Y-Debut_Y)!=Back_color) + for (y_pos=Debut_Y;y_pos<=Fin_Y;y_pos++) + for (x_pos=Debut_X;x_pos<=Fin_X;x_pos++) + if (Lit_pixel_dans_brosse(x_pos-Debut_X,y_pos-Debut_Y)!=Back_color) { - Pixel_dans_brosse(Pos_X-Debut_X,Pos_Y-Debut_Y,Lit_pixel_dans_ecran_courant(Pos_X,Pos_Y)); + Pixel_dans_brosse(x_pos-Debut_X,y_pos-Debut_Y,Lit_pixel_dans_ecran_courant(x_pos,y_pos)); // On regarde s'il faut effacer quelque chose: if (clear) - Pixel_dans_ecran_courant(Pos_X,Pos_Y,Back_color); + Pixel_dans_ecran_courant(x_pos,y_pos,Back_color); } // On centre la prise sur la brosse @@ -1148,7 +1148,7 @@ void Capturer_brosse_au_lasso(int Vertices, short * Points,short clear) void Etirer_brosse(short X1, short Y1, short X2, short Y2) { - int Offset,line,Colonne; + int offset,line,Colonne; byte * New_Brosse; int New_Brosse_Largeur; // Width de la nouvelle brosse @@ -1179,7 +1179,7 @@ void Etirer_brosse(short X1, short Y1, short X2, short Y2) Delta_X_dans_brosse=(Brosse_Largeur<<16)/(X2-X1+Dx); Delta_Y_dans_brosse=(Brosse_Hauteur<<16)/(Y2-Y1+Dy); - // Calcul de la valeur initiale de Pos_X pour chaque ligne: + // Calcul de la valeur initiale de x_pos pour chaque ligne: if (Dx>=0) Pos_X_initial = 0; // Pas d'inversion en X de la brosse else @@ -1189,9 +1189,9 @@ void Etirer_brosse(short X1, short Y1, short X2, short Y2) if ((New_Brosse=((byte *)malloc(New_Brosse_Largeur*New_Brosse_Hauteur)))) { - Offset=0; + offset=0; - // Calcul de la valeur initiale de Pos_Y: + // Calcul de la valeur initiale de y_pos: if (Dy>=0) Pos_Y_dans_brosse=0; // Pas d'inversion en Y de la brosse else @@ -1207,11 +1207,11 @@ void Etirer_brosse(short X1, short Y1, short X2, short Y2) for (Colonne=0;Colonne>16,Pos_Y_dans_brosse>>16); + New_Brosse[offset]=Lit_pixel_dans_brosse(Pos_X_dans_brosse>>16,Pos_Y_dans_brosse>>16); // On passe à la colonne de brosse suivante: Pos_X_dans_brosse+=Delta_X_dans_brosse; // On passe au pixel suivant de la nouvelle brosse: - Offset++; + offset++; } // On passe à la ligne de brosse suivante: @@ -1347,7 +1347,7 @@ float * ScanY_X[2]; void Interpoler_texture(int Debut_X,int Debut_Y,int Xt1,int Yt1, int Fin_X ,int Fin_Y ,int Xt2,int Yt2,int height) { - int Pos_X,Pos_Y; + int x_pos,y_pos; int Incr_X,Incr_Y; int i,Cumul; int Delta_X,Delta_Y; @@ -1358,8 +1358,8 @@ void Interpoler_texture(int Debut_X,int Debut_Y,int Xt1,int Yt1, float Xt,Yt; - Pos_X=Debut_X; - Pos_Y=Debut_Y; + x_pos=Debut_X; + y_pos=Debut_Y; if (Debut_X=Delta_X) { Cumul-=Delta_X; - Pos_Y+=Incr_Y; + y_pos+=Incr_Y; } - if ((Pos_Y>=0) && (Pos_Y=0) && (y_pos=ScanY_X[0][Pos_Y]) + if (x_pos>=ScanY_X[0][y_pos]) { - if ((ScanY_X[1][Pos_Y]==INDEFINI) // Droit non défini - || (Pos_X>ScanY_X[1][Pos_Y])) + if ((ScanY_X[1][y_pos]==INDEFINI) // Droit non défini + || (x_pos>ScanY_X[1][y_pos])) { - ScanY_X[1][Pos_Y]=Pos_X; - ScanY_Xt[1][Pos_Y]=Xt; - ScanY_Yt[1][Pos_Y]=Yt; + ScanY_X[1][y_pos]=x_pos; + ScanY_Xt[1][y_pos]=Xt; + ScanY_Yt[1][y_pos]=Yt; } } else { - if (ScanY_X[1][Pos_Y]==INDEFINI) // Droit non défini + if (ScanY_X[1][y_pos]==INDEFINI) // Droit non défini { - ScanY_X[1][Pos_Y]=ScanY_X[0][Pos_Y]; - ScanY_Xt[1][Pos_Y]=ScanY_Xt[0][Pos_Y]; - ScanY_Yt[1][Pos_Y]=ScanY_Yt[0][Pos_Y]; - ScanY_X[0][Pos_Y]=Pos_X; - ScanY_Xt[0][Pos_Y]=Xt; - ScanY_Yt[0][Pos_Y]=Yt; + ScanY_X[1][y_pos]=ScanY_X[0][y_pos]; + ScanY_Xt[1][y_pos]=ScanY_Xt[0][y_pos]; + ScanY_Yt[1][y_pos]=ScanY_Yt[0][y_pos]; + ScanY_X[0][y_pos]=x_pos; + ScanY_Xt[0][y_pos]=Xt; + ScanY_Yt[0][y_pos]=Yt; } else { - ScanY_X[0][Pos_Y]=Pos_X; - ScanY_Xt[0][Pos_Y]=Xt; - ScanY_Yt[0][Pos_Y]=Yt; + ScanY_X[0][y_pos]=x_pos; + ScanY_Xt[0][y_pos]=Xt; + ScanY_Yt[0][y_pos]=Yt; } } } } - Pos_X+=Incr_X; + x_pos+=Incr_X; Cumul+=Delta_Y; } } @@ -1448,52 +1448,52 @@ void Interpoler_texture(int Debut_X,int Debut_Y,int Xt1,int Yt1, if (Cumul>=Delta_Y) { Cumul-=Delta_Y; - Pos_X+=Incr_X; + x_pos+=Incr_X; } - if ((Pos_Y>=0) && (Pos_Y=0) && (y_pos=ScanY_X[0][Pos_Y]) + if (x_pos>=ScanY_X[0][y_pos]) { - if ((ScanY_X[1][Pos_Y]==INDEFINI) // Droit non défini - || (Pos_X>ScanY_X[1][Pos_Y])) + if ((ScanY_X[1][y_pos]==INDEFINI) // Droit non défini + || (x_pos>ScanY_X[1][y_pos])) { - ScanY_X[1][Pos_Y]=Pos_X; - ScanY_Xt[1][Pos_Y]=Xt; - ScanY_Yt[1][Pos_Y]=Yt; + ScanY_X[1][y_pos]=x_pos; + ScanY_Xt[1][y_pos]=Xt; + ScanY_Yt[1][y_pos]=Yt; } } else { - if (ScanY_X[1][Pos_Y]==INDEFINI) // Droit non défini + if (ScanY_X[1][y_pos]==INDEFINI) // Droit non défini { - ScanY_X[1][Pos_Y]=ScanY_X[0][Pos_Y]; - ScanY_Xt[1][Pos_Y]=ScanY_Xt[0][Pos_Y]; - ScanY_Yt[1][Pos_Y]=ScanY_Yt[0][Pos_Y]; - ScanY_X[0][Pos_Y]=Pos_X; - ScanY_Xt[0][Pos_Y]=Xt; - ScanY_Yt[0][Pos_Y]=Yt; + ScanY_X[1][y_pos]=ScanY_X[0][y_pos]; + ScanY_Xt[1][y_pos]=ScanY_Xt[0][y_pos]; + ScanY_Yt[1][y_pos]=ScanY_Yt[0][y_pos]; + ScanY_X[0][y_pos]=x_pos; + ScanY_Xt[0][y_pos]=Xt; + ScanY_Yt[0][y_pos]=Yt; } else { - ScanY_X[0][Pos_Y]=Pos_X; - ScanY_Xt[0][Pos_Y]=Xt; - ScanY_Yt[0][Pos_Y]=Yt; + ScanY_X[0][y_pos]=x_pos; + ScanY_Xt[0][y_pos]=Xt; + ScanY_Yt[0][y_pos]=Yt; } } } } - Pos_Y+=Incr_Y; + y_pos+=Incr_Y; Cumul+=Delta_X; } } diff --git a/divers.c b/divers.c index 9503a49c..dccc8f74 100644 --- a/divers.c +++ b/divers.c @@ -71,15 +71,15 @@ word Palette_Compter_nb_couleurs_utilisees(dword* Tableau) return Nombre_Couleurs; } -void Set_palette(T_Palette Palette) +void Set_palette(T_Palette palette) { register int i; SDL_Color PaletteSDL[256]; for(i=0;i<256;i++) { - PaletteSDL[i].r=(Palette[i].R=Palette_Scale_Component(Palette[i].R)); - PaletteSDL[i].g=(Palette[i].V=Palette_Scale_Component(Palette[i].V)); - PaletteSDL[i].b=(Palette[i].B=Palette_Scale_Component(Palette[i].B)); + PaletteSDL[i].r=(palette[i].R=Palette_Scale_Component(palette[i].R)); + PaletteSDL[i].g=(palette[i].G=Palette_Scale_Component(palette[i].G)); + PaletteSDL[i].b=(palette[i].B=Palette_Scale_Component(palette[i].B)); } SDL_SetPalette(Ecran_SDL, SDL_PHYSPAL | SDL_LOGPAL, PaletteSDL,0,256); } @@ -366,25 +366,25 @@ byte Lit_pixel_dans_ecran_backup (word X,word Y) return *(Ecran_backup + X + Principal_Largeur_image * Y); } -void Palette_256_to_64(T_Palette Palette) +void Palette_256_to_64(T_Palette palette) { int i; for(i=0;i<256;i++) { - Palette[i].R = Palette[i].R >> 2; - Palette[i].V = Palette[i].V >> 2; - Palette[i].B = Palette[i].B >> 2; + palette[i].R = palette[i].R >> 2; + palette[i].G = palette[i].G >> 2; + palette[i].B = palette[i].B >> 2; } } -void Palette_64_to_256(T_Palette Palette) +void Palette_64_to_256(T_Palette palette) { int i; for(i=0;i<256;i++) { - Palette[i].R = (Palette[i].R << 2)|(Palette[i].R >> 4); - Palette[i].V = (Palette[i].V << 2)|(Palette[i].V >> 4); - Palette[i].B = (Palette[i].B << 2)|(Palette[i].B >> 4); + palette[i].R = (palette[i].R << 2)|(palette[i].R >> 4); + palette[i].G = (palette[i].G << 2)|(palette[i].G >> 4); + palette[i].B = (palette[i].B << 2)|(palette[i].B >> 4); } } @@ -400,8 +400,8 @@ byte Effet_Colorize_interpole (word X,word Y,byte Couleur) // palette des teintes) et dans EDI, 3*Couleur. byte Bleu_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].B; byte Bleu=Principal_Palette[Couleur].B; - byte Vert_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].V; - byte Vert=Principal_Palette[Couleur].V; + byte Vert_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].G; + byte Vert=Principal_Palette[Couleur].G; byte Rouge_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].R; byte Rouge=Principal_Palette[Couleur].R; @@ -421,10 +421,10 @@ byte Effet_Colorize_interpole (word X,word Y,byte Couleur) byte Effet_Colorize_additif (word X,word Y,byte Couleur) { byte Bleu_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].B; - byte Vert_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].V; + byte Vert_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].G; byte Rouge_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].R; byte Bleu=Principal_Palette[Couleur].B; - byte Vert=Principal_Palette[Couleur].V; + byte Vert=Principal_Palette[Couleur].G; byte Rouge=Principal_Palette[Couleur].R; return Meilleure_couleur( @@ -436,10 +436,10 @@ byte Effet_Colorize_additif (word X,word Y,byte Couleur) byte Effet_Colorize_soustractif(word X,word Y,byte Couleur) { byte Bleu_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].B; - byte Vert_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].V; + byte Vert_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].G; byte Rouge_dessous=Principal_Palette[*(FX_Feedback_Ecran + Y * Principal_Largeur_image + X)].R; byte Bleu=Principal_Palette[Couleur].B; - byte Vert=Principal_Palette[Couleur].V; + byte Vert=Principal_Palette[Couleur].G; byte Rouge=Principal_Palette[Couleur].R; return Meilleure_couleur( diff --git a/divers.h b/divers.h index 726a5450..85f22697 100644 --- a/divers.h +++ b/divers.h @@ -29,9 +29,9 @@ void Set_mouse_position(void); void Attendre_fin_de_click(void); void Sensibilite_souris(word X,word Y); void Set_color(byte Couleur, byte Rouge, byte Vert, byte Bleu); -void Set_palette(T_Palette Palette); -void Palette_256_to_64(T_Palette Palette); -void Palette_64_to_256(T_Palette Palette); +void Set_palette(T_Palette palette); +void Palette_256_to_64(T_Palette palette); +void Palette_64_to_256(T_Palette palette); void Effacer_image_courante(byte Couleur); void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir); void Wait_VBL(void); diff --git a/erreurs.h b/erreurs.h index 647a7ba8..23dc9960 100644 --- a/erreurs.h +++ b/erreurs.h @@ -27,6 +27,6 @@ #define UNTESTED printf("%s %d %s à tester !\n",__FILE__,__LINE__,__func__); -void Erreur_fonction(int error_code, const char *Nom_fichier, int Numero_ligne, const char *Nom_fonction); +void Erreur_fonction(int error_code, const char *filename, int Numero_ligne, const char *Nom_fonction); #define Erreur(n) Erreur_fonction(n, __FILE__,__LINE__,__func__) diff --git a/gfx2.cfg b/gfx2.cfg index 92e11929bb9d0520de047b468c26683c05d42fb3..e1e448e8ff3991f3b8a5da3c93a85bd7fda28ad8 100644 GIT binary patch delta 16 VcmX@-cg}Bvn>q&*0}}%X001rM17ZLG delta 16 VcmX@-cg}Bvn>q&v0|x^L001sL18x8S diff --git a/global.h b/global.h index f64af9b8..20dc8bd4 100644 --- a/global.h +++ b/global.h @@ -205,7 +205,7 @@ GFX2_GLOBAL short Ancien_Principal_Decalage_X; GFX2_GLOBAL short Ancien_Principal_Decalage_Y; GFX2_GLOBAL char Principal_Repertoire_fichier[1024]; // |_ Nom complet = -GFX2_GLOBAL char Principal_Nom_fichier[256]; // | Repertoire_fichier+"\"+Nom_fichier +GFX2_GLOBAL char Principal_Nom_fichier[256]; // | Repertoire_fichier+"\"+Filename GFX2_GLOBAL byte Principal_Format_fichier; // Format auquel il faut lire et écrire le fichier GFX2_GLOBAL byte Principal_Format; // Format du fileselect GFX2_GLOBAL short Principal_File_list_Position; // Début de la partie affichée dans la liste de fichiers @@ -231,7 +231,7 @@ GFX2_GLOBAL short Ancien_Brouillon_Decalage_X; GFX2_GLOBAL short Ancien_Brouillon_Decalage_Y; GFX2_GLOBAL char Brouillon_Repertoire_fichier[TAILLE_CHEMIN_FICHIER]; // |_ Nom complet = -GFX2_GLOBAL char Brouillon_Nom_fichier[TAILLE_CHEMIN_FICHIER]; // | Repertoire_fichier+"\"+Nom_fichier +GFX2_GLOBAL char Brouillon_Nom_fichier[TAILLE_CHEMIN_FICHIER]; // | Repertoire_fichier+"\"+Filename GFX2_GLOBAL byte Brouillon_Format_fichier; // Format auquel il faut lire et écrire le fichier GFX2_GLOBAL byte Brouillon_Format; // Format du fileselect GFX2_GLOBAL short Brouillon_File_list_Position; // Début de la partie affichée dans la liste de fichiers diff --git a/graph.c b/graph.c index be8721b9..224acd48 100644 --- a/graph.c +++ b/graph.c @@ -453,8 +453,8 @@ void Redimentionner_image(word Largeur_choisie,word Hauteur_choisie) void Remap_picture(void) { - short Pos_X; // Variable de balayage de la brosse - short Pos_Y; // Variable de balayage de la brosse + short x_pos; // Variable de balayage de la brosse + short y_pos; // Variable de balayage de la brosse byte Utilisee[256]; // Tableau de booléens "La couleur est utilisée" int Couleur; @@ -463,9 +463,9 @@ void Remap_picture(void) Utilisee[Couleur]=0; // On calcule la table d'utilisation des couleurs - for (Pos_Y=0;Pos_YLimite_Haut)) - for (Pos_X=Debut_X;Pos_X*Limite_atteinte_Droite) *Limite_atteinte_Droite=Fin_X; // On remplit le segment de Debut_X à Fin_X-1. - for (Pos_X=Debut_X;Pos_X*Limite_atteinte_Droite) *Limite_atteinte_Droite=Fin_X; // On remplit le segment de Debut_X à Fin_X-1. - for (Pos_X=Debut_X;Pos_X=Limite_Gauche) && - (Pos_X<=Limite_Droite) && - (Pos_Y>=Limite_Haut) && - (Pos_Y<=Limite_Bas) ) - Afficher_pixel(Pos_X,Pos_Y,Couleur); + if ( (x_pos>=Limite_Gauche) && + (x_pos<=Limite_Droite) && + (y_pos>=Limite_Haut) && + (y_pos<=Limite_Bas) ) + Afficher_pixel(x_pos,y_pos,Couleur); } // Affichage d'un point pour une preview - void Pixel_figure_Preview(word Pos_X,word Pos_Y,byte Couleur) + void Pixel_figure_Preview(word x_pos,word y_pos,byte Couleur) { - if ( (Pos_X>=Limite_Gauche) && - (Pos_X<=Limite_Droite) && - (Pos_Y>=Limite_Haut) && - (Pos_Y<=Limite_Bas) ) - Pixel_Preview(Pos_X,Pos_Y,Couleur); + if ( (x_pos>=Limite_Gauche) && + (x_pos<=Limite_Droite) && + (y_pos>=Limite_Haut) && + (y_pos<=Limite_Bas) ) + Pixel_Preview(x_pos,y_pos,Couleur); } // Affichage d'un point pour une preview, avec sa propre couleur - void Pixel_figure_Preview_auto(word Pos_X,word Pos_Y) + void Pixel_figure_Preview_auto(word x_pos,word y_pos) { - if ( (Pos_X>=Limite_Gauche) && - (Pos_X<=Limite_Droite) && - (Pos_Y>=Limite_Haut) && - (Pos_Y<=Limite_Bas) ) - Pixel_Preview(Pos_X,Pos_Y,Lit_pixel_dans_ecran_courant(Pos_X,Pos_Y)); + if ( (x_pos>=Limite_Gauche) && + (x_pos<=Limite_Droite) && + (y_pos>=Limite_Haut) && + (y_pos<=Limite_Bas) ) + Pixel_Preview(x_pos,y_pos,Lit_pixel_dans_ecran_courant(x_pos,y_pos)); } // Affichage d'un point pour une preview en xor - void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur) + void Pixel_figure_Preview_xor(word x_pos,word y_pos,__attribute__((unused)) byte Couleur) { - if ( (Pos_X>=Limite_Gauche) && - (Pos_X<=Limite_Droite) && - (Pos_Y>=Limite_Haut) && - (Pos_Y<=Limite_Bas) ) - Pixel_Preview(Pos_X,Pos_Y,~Lit_pixel(Pos_X-Principal_Decalage_X, - Pos_Y-Principal_Decalage_Y)); + if ( (x_pos>=Limite_Gauche) && + (x_pos<=Limite_Droite) && + (y_pos>=Limite_Haut) && + (y_pos<=Limite_Bas) ) + Pixel_Preview(x_pos,y_pos,~Lit_pixel(x_pos-Principal_Decalage_X, + y_pos-Principal_Decalage_Y)); } // Affichage d'un point pour une preview en xor additif // (Il lit la couleur depuis la page backup) - void Pixel_figure_Preview_xorback(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur) + void Pixel_figure_Preview_xorback(word x_pos,word y_pos,__attribute__((unused)) byte Couleur) { - if ( (Pos_X>=Limite_Gauche) && - (Pos_X<=Limite_Droite) && - (Pos_Y>=Limite_Haut) && - (Pos_Y<=Limite_Bas) ) - Pixel_Preview(Pos_X,Pos_Y,~Ecran_backup[Pos_X+Pos_Y*Principal_Largeur_image]); + if ( (x_pos>=Limite_Gauche) && + (x_pos<=Limite_Droite) && + (y_pos>=Limite_Haut) && + (y_pos<=Limite_Bas) ) + Pixel_Preview(x_pos,y_pos,~Ecran_backup[x_pos+y_pos*Principal_Largeur_image]); } // Effacement d'un point de preview - void Pixel_figure_Effacer_preview(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur) + void Pixel_figure_Effacer_preview(word x_pos,word y_pos,__attribute__((unused)) byte Couleur) { - if ( (Pos_X>=Limite_Gauche) && - (Pos_X<=Limite_Droite) && - (Pos_Y>=Limite_Haut) && - (Pos_Y<=Limite_Bas) ) - Pixel_Preview(Pos_X,Pos_Y,Lit_pixel_dans_ecran_courant(Pos_X,Pos_Y)); + if ( (x_pos>=Limite_Gauche) && + (x_pos<=Limite_Droite) && + (y_pos>=Limite_Haut) && + (y_pos<=Limite_Bas) ) + Pixel_Preview(x_pos,y_pos,Lit_pixel_dans_ecran_courant(x_pos,y_pos)); } // Affichage d'un point dans la brosse - void Pixel_figure_Dans_brosse(word Pos_X,word Pos_Y,byte Couleur) + void Pixel_figure_Dans_brosse(word x_pos,word y_pos,byte Couleur) { - Pos_X-=Brosse_Decalage_X; - Pos_Y-=Brosse_Decalage_Y; - if ( (Pos_X>1; for (i=1; i=Delta_Y) { Cumul-=Delta_Y; - Pos_X+=Incr_X; + x_pos+=Incr_X; } - Pixel_figure(Pos_X,Pos_Y,Couleur); + Pixel_figure(x_pos,y_pos,Couleur); } } else @@ -1298,14 +1298,14 @@ void Tracer_ligne_General(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y, b Cumul=Delta_X>>1; for (i=1; i=Delta_X) { Cumul-=Delta_X; - Pos_Y+=Incr_Y; + y_pos+=Incr_Y; } - Pixel_figure(Pos_X,Pos_Y,Couleur); + Pixel_figure(x_pos,y_pos,Couleur); } } @@ -1381,8 +1381,8 @@ void Effacer_ligne_Preview(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y) void Tracer_rectangle_vide(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,byte Couleur) { short Tempo; - short Pos_X; - short Pos_Y; + short x_pos; + short y_pos; // On vérifie que les bornes soient dans le bon sens: @@ -1401,17 +1401,17 @@ void Tracer_rectangle_vide(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y,b // On trace le rectangle: - for (Pos_X=Debut_X;Pos_X<=Fin_X;Pos_X++) - Afficher_pinceau(Pos_X,Debut_Y,Couleur,0); + for (x_pos=Debut_X;x_pos<=Fin_X;x_pos++) + Afficher_pinceau(x_pos,Debut_Y,Couleur,0); - for (Pos_Y=Debut_Y+1;Pos_Y>1; long Rayon_au_carre=(long)Rayon*Rayon; short Indice,Count; @@ -1563,16 +1563,16 @@ void Aerographe(short Bouton_clicke) { for (Count=1; Count<=Spray_Mono_flow; Count++) { - Pos_X=(rand()%Spray_Size)-Rayon; - Pos_Y=(rand()%Spray_Size)-Rayon; - if ( (Pos_X*Pos_X)+(Pos_Y*Pos_Y) <= Rayon_au_carre ) + x_pos=(rand()%Spray_Size)-Rayon; + y_pos=(rand()%Spray_Size)-Rayon; + if ( (x_pos*x_pos)+(y_pos*y_pos) <= Rayon_au_carre ) { - Pos_X+=Pinceau_X; - Pos_Y+=Pinceau_Y; + x_pos+=Pinceau_X; + y_pos+=Pinceau_Y; if (Bouton_clicke==1) - Afficher_pinceau(Pos_X,Pos_Y,Fore_color,0); + Afficher_pinceau(x_pos,y_pos,Fore_color,0); else - Afficher_pinceau(Pos_X,Pos_Y,Back_color,0); + Afficher_pinceau(x_pos,y_pos,Back_color,0); } } } @@ -1586,16 +1586,16 @@ void Aerographe(short Bouton_clicke) { for (Count=1; Count<=Spray_Multi_flow[Indice_couleur]; Count++) { - Pos_X=(rand()%Spray_Size)-Rayon; - Pos_Y=(rand()%Spray_Size)-Rayon; - if ( (Pos_X*Pos_X)+(Pos_Y*Pos_Y) <= Rayon_au_carre ) + x_pos=(rand()%Spray_Size)-Rayon; + y_pos=(rand()%Spray_Size)-Rayon; + if ( (x_pos*x_pos)+(y_pos*y_pos) <= Rayon_au_carre ) { - Pos_X+=Pinceau_X; - Pos_Y+=Pinceau_Y; + x_pos+=Pinceau_X; + y_pos+=Pinceau_Y; if (Bouton_clicke==A_GAUCHE) - Afficher_pinceau(Pos_X,Pos_Y,Indice_couleur,0); + Afficher_pinceau(x_pos,y_pos,Indice_couleur,0); else - Afficher_pinceau(Pos_X,Pos_Y,Back_color,0); + Afficher_pinceau(x_pos,y_pos,Back_color,0); } } if (Sens) @@ -1617,38 +1617,38 @@ void Aerographe(short Bouton_clicke) // -- Gestion d'un dégradé de base (le plus moche) -- -void Degrade_de_base(long Indice,short Pos_X,short Pos_Y) +void Degrade_de_base(long Indice,short x_pos,short y_pos) { - long Position; + long position; // On fait un premier calcul partiel - Position=(Indice*Degrade_Intervalle_bornes); + position=(Indice*Degrade_Intervalle_bornes); // On gère un déplacement au hasard - Position+=(Degrade_Intervalle_total*(rand()%Degrade_Melange_aleatoire)) >>6; - Position-=(Degrade_Intervalle_total*Degrade_Melange_aleatoire) >>7; + position+=(Degrade_Intervalle_total*(rand()%Degrade_Melange_aleatoire)) >>6; + position-=(Degrade_Intervalle_total*Degrade_Melange_aleatoire) >>7; - Position/=Degrade_Intervalle_total; + position/=Degrade_Intervalle_total; // On va vérifier que nos petites idioties n'ont pas éjecté la valeur hors // des valeurs autorisées par le dégradé défini par l'utilisateur. - if (Position<0) - Position=0; - else if (Position>=Degrade_Intervalle_bornes) - Position=Degrade_Intervalle_bornes-1; + if (position<0) + position=0; + else if (position>=Degrade_Intervalle_bornes) + position=Degrade_Intervalle_bornes-1; // On ramène ensuite la position dans le dégradé vers un numéro de couleur if (Degrade_Inverse) - Traiter_pixel_de_degrade(Pos_X,Pos_Y,Degrade_Borne_Superieure-Position); + Traiter_pixel_de_degrade(x_pos,y_pos,Degrade_Borne_Superieure-position); else - Traiter_pixel_de_degrade(Pos_X,Pos_Y,Degrade_Borne_Inferieure+Position); + Traiter_pixel_de_degrade(x_pos,y_pos,Degrade_Borne_Inferieure+position); } // -- Gestion d'un dégradé par trames simples -- -void Degrade_de_trames_simples(long Indice,short Pos_X,short Pos_Y) +void Degrade_de_trames_simples(long Indice,short x_pos,short y_pos) { long Position_dans_degrade; long Position_dans_segment; @@ -1688,7 +1688,7 @@ void Degrade_de_trames_simples(long Indice,short Pos_X,short Pos_Y) switch (Position_dans_segment) { case 0 : // On est sur la gauche du segment - if (((Pos_X+Pos_Y)&1)==0) + if (((x_pos+y_pos)&1)==0) Position_dans_degrade--; break; @@ -1696,7 +1696,7 @@ void Degrade_de_trames_simples(long Indice,short Pos_X,short Pos_Y) // suffisament au centre du segment pour ne pas avoir à subir la trame case 3 : // On est sur la droite du segment - if (((Pos_X+Pos_Y)&1)!=0) // Note: on doit faire le test inverse au cas gauche pour synchroniser les 2 côtés de la trame. + if (((x_pos+y_pos)&1)!=0) // Note: on doit faire le test inverse au cas gauche pour synchroniser les 2 côtés de la trame. Position_dans_degrade++; } @@ -1714,13 +1714,13 @@ void Degrade_de_trames_simples(long Indice,short Pos_X,short Pos_Y) else Position_dans_degrade=Degrade_Borne_Inferieure+Position_dans_degrade; - Traiter_pixel_de_degrade(Pos_X,Pos_Y,Position_dans_degrade); + Traiter_pixel_de_degrade(x_pos,y_pos,Position_dans_degrade); } // -- Gestion d'un dégradé par trames étendues -- -void Degrade_de_trames_etendues(long Indice,short Pos_X,short Pos_Y) +void Degrade_de_trames_etendues(long Indice,short x_pos,short y_pos) { long Position_dans_degrade; long Position_dans_segment; @@ -1760,13 +1760,13 @@ void Degrade_de_trames_etendues(long Indice,short Pos_X,short Pos_Y) switch (Position_dans_segment) { case 0 : // On est sur l'extrême gauche du segment - if (((Pos_X+Pos_Y)&1)==0) + if (((x_pos+y_pos)&1)==0) Position_dans_degrade--; break; case 1 : // On est sur la gauche du segment case 2 : // On est sur la gauche du segment - if (((Pos_X & 1)==0) && ((Pos_Y & 1)==0)) + if (((x_pos & 1)==0) && ((y_pos & 1)==0)) Position_dans_degrade--; break; @@ -1775,12 +1775,12 @@ void Degrade_de_trames_etendues(long Indice,short Pos_X,short Pos_Y) case 5 : // On est sur la droite du segment case 6 : // On est sur la droite du segment - if (((Pos_X & 1)==0) && ((Pos_Y & 1)!=0)) + if (((x_pos & 1)==0) && ((y_pos & 1)!=0)) Position_dans_degrade++; break; case 7 : // On est sur l'extreme droite du segment - if (((Pos_X+Pos_Y)&1)!=0) // Note: on doit faire le test inverse au cas gauche pour synchroniser les 2 côtés de la trame. + if (((x_pos+y_pos)&1)!=0) // Note: on doit faire le test inverse au cas gauche pour synchroniser les 2 côtés de la trame. Position_dans_degrade++; } @@ -1798,7 +1798,7 @@ void Degrade_de_trames_etendues(long Indice,short Pos_X,short Pos_Y) else Position_dans_degrade=Degrade_Borne_Inferieure+Position_dans_degrade; - Traiter_pixel_de_degrade(Pos_X,Pos_Y,Position_dans_degrade); + Traiter_pixel_de_degrade(x_pos,y_pos,Position_dans_degrade); } @@ -1809,8 +1809,8 @@ void Tracer_cercle_degrade(short Centre_X,short Centre_Y,short Rayon,short Eclai { long Debut_X; long Debut_Y; - long Pos_X; - long Pos_Y; + long x_pos; + long y_pos; long Fin_X; long Fin_Y; long Distance_X; // Distance (au carré) sur les X du point en cours au centre d'éclairage @@ -1842,16 +1842,16 @@ void Tracer_cercle_degrade(short Centre_X,short Centre_Y,short Rayon,short Eclai Degrade_Intervalle_total=1; // Affichage du cercle - for (Pos_Y=Debut_Y,Cercle_Curseur_Y=(long)Debut_Y-Centre_Y;Pos_Y<=Fin_Y;Pos_Y++,Cercle_Curseur_Y++) + for (y_pos=Debut_Y,Cercle_Curseur_Y=(long)Debut_Y-Centre_Y;y_pos<=Fin_Y;y_pos++,Cercle_Curseur_Y++) { - Distance_Y =(Pos_Y-Eclairage_Y); + Distance_Y =(y_pos-Eclairage_Y); Distance_Y*=Distance_Y; - for (Pos_X=Debut_X,Cercle_Curseur_X=(long)Debut_X-Centre_X;Pos_X<=Fin_X;Pos_X++,Cercle_Curseur_X++) + for (x_pos=Debut_X,Cercle_Curseur_X=(long)Debut_X-Centre_X;x_pos<=Fin_X;x_pos++,Cercle_Curseur_X++) if (Pixel_dans_cercle()) { - Distance_X =(Pos_X-Eclairage_X); + Distance_X =(x_pos-Eclairage_X); Distance_X*=Distance_X; - Traiter_degrade(Distance_X+Distance_Y,Pos_X,Pos_Y); + Traiter_degrade(Distance_X+Distance_Y,x_pos,y_pos); } } @@ -1865,8 +1865,8 @@ void Tracer_ellipse_degradee(short Centre_X,short Centre_Y,short Rayon_horizonta { long Debut_X; long Debut_Y; - long Pos_X; - long Pos_Y; + long x_pos; + long y_pos; long Fin_X; long Fin_Y; long Distance_X; // Distance (au carré) sur les X du point en cours au centre d'éclairage @@ -1908,16 +1908,16 @@ void Tracer_ellipse_degradee(short Centre_X,short Centre_Y,short Rayon_horizonta Fin_X=Limite_Droite; // Affichage de l'ellipse - for (Pos_Y=Debut_Y,Ellipse_Curseur_Y=Debut_Y-Centre_Y;Pos_Y<=Fin_Y;Pos_Y++,Ellipse_Curseur_Y++) + for (y_pos=Debut_Y,Ellipse_Curseur_Y=Debut_Y-Centre_Y;y_pos<=Fin_Y;y_pos++,Ellipse_Curseur_Y++) { - Distance_Y =(Pos_Y-Eclairage_Y); + Distance_Y =(y_pos-Eclairage_Y); Distance_Y*=Distance_Y; - for (Pos_X=Debut_X,Ellipse_Curseur_X=Debut_X-Centre_X;Pos_X<=Fin_X;Pos_X++,Ellipse_Curseur_X++) + for (x_pos=Debut_X,Ellipse_Curseur_X=Debut_X-Centre_X;x_pos<=Fin_X;x_pos++,Ellipse_Curseur_X++) if (Pixel_dans_ellipse()) { - Distance_X =(Pos_X-Eclairage_X); + Distance_X =(x_pos-Eclairage_X); Distance_X*=Distance_X; - Traiter_degrade(Distance_X+Distance_Y,Pos_X,Pos_Y); + Traiter_degrade(Distance_X+Distance_Y,x_pos,y_pos); } } @@ -1928,21 +1928,21 @@ void Tracer_ellipse_degradee(short Centre_X,short Centre_Y,short Rayon_horizonta // Tracé d'un rectangle (RAX RAY - RBX RBY) dégradé selon le vecteur (VAX VAY - VBX - VBY) void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX,short VAY, short VBX, short VBY) { - short Pos_Y, Pos_X; + short y_pos, x_pos; // On commence par s'assurer que le rectangle est à l'endroit if(RBX < RAX) { - Pos_X = RBX; + x_pos = RBX; RBX = RAX; - RAX = Pos_X; + RAX = x_pos; } if(RBY < RAY) { - Pos_Y = RBY; + y_pos = RBY; RBY = RAY; - RAY = Pos_Y; + RAY = y_pos; } // Correction des bornes d'après les limites @@ -1960,9 +1960,9 @@ void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX, // Le vecteur est vertical, donc on évite la partie en dessous qui foirerait avec une division par 0... if (VBY == VAY) return; // L'utilisateur fait n'importe quoi Degrade_Intervalle_total = abs(VBY - VAY); - for(Pos_Y=RAY;Pos_Y<=RBY;Pos_Y++) - for(Pos_X=RAX;Pos_X<=RBX;Pos_X++) - Traiter_degrade(abs(VBY - Pos_Y),Pos_X,Pos_Y); + for(y_pos=RAY;y_pos<=RBY;y_pos++) + for(x_pos=RAX;x_pos<=RBX;x_pos++) + Traiter_degrade(abs(VBY - y_pos),x_pos,y_pos); } else @@ -1975,14 +1975,14 @@ void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX, a = (float)(VBY - VAY)/(float)(VBX - VAX); b = VAY - a*VAX; - for (Pos_Y=RAY;Pos_Y<=RBY;Pos_Y++) - for (Pos_X = RAX;Pos_X<=RBX;Pos_X++) + for (y_pos=RAY;y_pos<=RBY;y_pos++) + for (x_pos = RAX;x_pos<=RBX;x_pos++) { // On calcule ou on en est dans le dégradé - Distance_X = pow((Pos_Y - VAY),2)+pow((Pos_X - VAX),2); - Distance_Y = pow((-a * Pos_X + Pos_Y - b),2)/(a*a+1); + Distance_X = pow((y_pos - VAY),2)+pow((x_pos - VAX),2); + Distance_Y = pow((-a * x_pos + y_pos - b),2)/(a*a+1); - Traiter_degrade((int)sqrt(Distance_X - Distance_Y),Pos_X,Pos_Y); + Traiter_degrade((int)sqrt(Distance_X - Distance_Y),x_pos,y_pos); } } Mettre_Ecran_A_Jour(RAX,RAY,RBX,RBY); @@ -2115,7 +2115,7 @@ void Polyfill_General(int Vertices, short * Points, int color) short top = 0x7FFF; short bottom = 0; short *i1, *i2; - short Pos_X,Fin_X; + short x_pos,Fin_X; POLYGON_EDGE *edge, *next_edge, *initial_edge; POLYGON_EDGE *active_edges = NULL; POLYGON_EDGE *inactive_edges = NULL; @@ -2167,14 +2167,14 @@ void Polyfill_General(int Vertices, short * Points, int color) edge = active_edges; while ((edge) && (edge->next)) { - Pos_X=/*Round*/(edge->x); + x_pos=/*Round*/(edge->x); Fin_X=/*Round*/(edge->next->x+edge->next->w); - if (Pos_XLimite_Droite) Fin_X=Limite_Droite; - for (; Pos_X<=Fin_X; Pos_X++) - Pixel_figure(Pos_X,c,color); + for (; x_pos<=Fin_X; x_pos++) + Pixel_figure(x_pos,c,color); edge = edge->next->next; } } @@ -2275,10 +2275,10 @@ void Remplacer(byte Nouvelle_couleur) /********************************** SHADES ************************************/ // Transformer une liste de shade en deux tables de conversion -void Liste2tables(word * list,short Pas,byte mode,byte * Table_inc,byte * Table_dec) +void Liste2tables(word * list,short step,byte mode,byte * Table_inc,byte * Table_dec) { int Indice; - int Premier; + int first; int last; int Couleur; int Temp; @@ -2299,10 +2299,10 @@ void Liste2tables(word * list,short Pas,byte mode,byte * Table_inc,byte * Table_ Indice++; // On note la position de la première case de la séquence - Premier=Indice; + first=Indice; // On recherche la position de la dernière case de la séquence - for (last=Premier;list[last+1]<256;last++); + for (last=first;list[last+1]<256;last++); // Pour toutes les cases non vides (et non inhibées) qui suivent switch (mode) @@ -2311,27 +2311,27 @@ void Liste2tables(word * list,short Pas,byte mode,byte * Table_inc,byte * Table_ for (;(Indice<512) && (list[Indice]<256);Indice++) { // On met à jour les tables de conversion Couleur=list[Indice]; - Table_inc[Couleur]=list[(Indice+Pas<=last)?Indice+Pas:last]; - Table_dec[Couleur]=list[(Indice-Pas>=Premier)?Indice-Pas:Premier]; + Table_inc[Couleur]=list[(Indice+step<=last)?Indice+step:last]; + Table_dec[Couleur]=list[(Indice-step>=first)?Indice-step:first]; } break; case MODE_SHADE_BOUCLE : - Temp=1+last-Premier; + Temp=1+last-first; for (;(Indice<512) && (list[Indice]<256);Indice++) { // On met à jour les tables de conversion Couleur=list[Indice]; - Table_inc[Couleur]=list[Premier+((Pas+Indice-Premier)%Temp)]; - Table_dec[Couleur]=list[Premier+(((Temp-Pas)+Indice-Premier)%Temp)]; + Table_inc[Couleur]=list[first+((step+Indice-first)%Temp)]; + Table_dec[Couleur]=list[first+(((Temp-step)+Indice-first)%Temp)]; } break; default : // MODE_SHADE_NOSAT for (;(Indice<512) && (list[Indice]<256);Indice++) { // On met à jour les tables de conversion Couleur=list[Indice]; - if (Indice+Pas<=last) - Table_inc[Couleur]=list[Indice+Pas]; - if (Indice-Pas>=Premier) - Table_dec[Couleur]=list[Indice-Pas]; + if (Indice+step<=last) + Table_inc[Couleur]=list[Indice+step]; + if (Indice-step>=first) + Table_dec[Couleur]=list[Indice-step]; } } } @@ -2448,7 +2448,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X,Y); Poids_total=Smooth_Matrice[1][1]; r=Poids_total*Principal_Palette[c].R; - g=Poids_total*Principal_Palette[c].V; + g=Poids_total*Principal_Palette[c].G; b=Poids_total*Principal_Palette[c].B; if (X) @@ -2456,7 +2456,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X-1,Y); Poids_total+=(Poids=Smooth_Matrice[0][1]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; if (Y) @@ -2464,7 +2464,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X-1,Y-1); Poids_total+=(Poids=Smooth_Matrice[0][0]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; if (Y2) @@ -2472,7 +2472,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X-1,Y+1); Poids_total+=(Poids=Smooth_Matrice[0][2]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; } } @@ -2483,7 +2483,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X+1,Y); Poids_total+=(Poids=Smooth_Matrice[2][1]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; if (Y) @@ -2491,7 +2491,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X+1,Y-1); Poids_total+=(Poids=Smooth_Matrice[2][0]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; if (Y2) @@ -2499,7 +2499,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X+1,Y+1); Poids_total+=(Poids=Smooth_Matrice[2][2]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; } } @@ -2510,7 +2510,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X,Y-1); Poids_total+=(Poids=Smooth_Matrice[1][0]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; } @@ -2519,7 +2519,7 @@ byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) c=Lit_pixel_dans_ecran_feedback(X,Y+1); Poids_total+=(Poids=Smooth_Matrice[1][2]); r+=Poids*Principal_Palette[c].R; - g+=Poids*Principal_Palette[c].V; + g+=Poids*Principal_Palette[c].G; b+=Poids*Principal_Palette[c].B; } diff --git a/graph.h b/graph.h index da54e1ee..ab3362de 100644 --- a/graph.h +++ b/graph.h @@ -19,7 +19,7 @@ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -void Liste2tables(word * list, short Pas, byte mode, byte * Table_inc, +void Liste2tables(word * list, short step, byte mode, byte * Table_inc, byte * Table_dec ); @@ -39,7 +39,7 @@ void Afficher_foreback(void); void Afficher_pixel(word X,word Y,byte Couleur); -void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview); +void Afficher_pinceau(short X,short Y,byte Couleur,byte is_preview); void Effacer_pinceau(short X,short Y); void Redimentionner_image(word Largeur_choisie,word Hauteur_choisie); @@ -47,11 +47,11 @@ void Redimentionner_image(word Largeur_choisie,word Hauteur_choisie); void Remplir(byte Couleur_de_remplissage); void Remplacer(byte Nouvelle_couleur); -void Pixel_figure_Preview (word Pos_X,word Pos_Y,byte Couleur); -void Pixel_figure_Preview_auto(word Pos_X,word Pos_Y); -void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,byte Couleur); -void Pixel_figure_Preview_xorback(word Pos_X,word Pos_Y,byte Couleur); -void Pixel_figure_Dans_brosse(word Pos_X,word Pos_Y,byte Couleur); +void Pixel_figure_Preview (word x_pos,word y_pos,byte Couleur); +void Pixel_figure_Preview_auto(word x_pos,word y_pos); +void Pixel_figure_Preview_xor(word x_pos,word y_pos,byte Couleur); +void Pixel_figure_Preview_xorback(word x_pos,word y_pos,byte Couleur); +void Pixel_figure_Dans_brosse(word x_pos,word y_pos,byte Couleur); void Tracer_cercle_vide_Definitif(short Centre_X,short Centre_Y,short Rayon,byte Couleur); void Tracer_cercle_vide_Preview (short Centre_X,short Centre_Y,short Rayon,byte Couleur); @@ -80,10 +80,10 @@ void Effacer_courbe_Preview (short X1, short Y1, short X2, short Y2, short X3, s void Aerographe(short Bouton_clicke); -void Degrade_de_base (long Indice,short Pos_X,short Pos_Y); -void Degrade_de_trames_simples (long Indice,short Pos_X,short Pos_Y); -void Degrade_de_trames_etendues(long Indice,short Pos_X,short Pos_Y); -void Degrade_aleatoire (long Indice,short Pos_X,short Pos_Y); +void Degrade_de_base (long Indice,short x_pos,short y_pos); +void Degrade_de_trames_simples (long Indice,short x_pos,short y_pos); +void Degrade_de_trames_etendues(long Indice,short x_pos,short y_pos); +void Degrade_aleatoire (long Indice,short x_pos,short y_pos); void Tracer_cercle_degrade (short Centre_X,short Centre_Y,short Rayon,short Eclairage_X,short Eclairage_Y); void Tracer_ellipse_degradee(short Centre_X,short Centre_Y,short Rayon_horizontal,short Rayon_vertical,short Eclairage_X,short Eclairage_Y); @@ -97,7 +97,6 @@ void Download_infos_page_principal(S_Page * Page); void Download_infos_page_brouillon(S_Page * Page); void Download_infos_backup(S_Liste_de_pages * list); void Detruire_les_listes_de_backups_en_fin_de_programme(void); -void Nouveau_nombre_de_backups(int Nouveau); int Backup_avec_nouvelles_dimensions(int Upload,int width,int height); int Backuper_et_redimensionner_brouillon(int width,int height); void Undo(void); diff --git a/hotkeys.h b/hotkeys.h index a200ae76..118c63b5 100644 --- a/hotkeys.h +++ b/hotkeys.h @@ -26,7 +26,7 @@ typedef struct { - word Numero; + word Number; char Label[36]; char Explic1[37]; char Explic2[37]; diff --git a/init.c b/init.c index c295b4ed..842eaad1 100644 --- a/init.c +++ b/init.c @@ -230,7 +230,7 @@ void Charger_DAT(void) for (i=0; i<256; i++) { Palette_defaut[i].R=SDLPal->colors[i].r; - Palette_defaut[i].V=SDLPal->colors[i].g; + Palette_defaut[i].G=SDLPal->colors[i].g; Palette_defaut[i].B=SDLPal->colors[i].b; } @@ -745,7 +745,7 @@ void Rien_du_tout(void) // Initialiseur d'un bouton: -void Initialiser_bouton(byte Numero, +void Initialiser_bouton(byte btn_number, word x_offset , word y_offset, word width , word height, byte shape, @@ -753,16 +753,16 @@ void Initialiser_bouton(byte Numero, fonction_action Desenclencher, byte family) { - Bouton[Numero].Decalage_X =x_offset; - Bouton[Numero].Decalage_Y =y_offset; - Bouton[Numero].Width =width-1; - Bouton[Numero].Height =height-1; - Bouton[Numero].Enfonce =0; - Bouton[Numero].Shape =shape; - Bouton[Numero].Gauche =Gauche; - Bouton[Numero].Droite =Droite; - Bouton[Numero].Desenclencher =Desenclencher; - Bouton[Numero].Famille =family; + Bouton[btn_number].Decalage_X =x_offset; + Bouton[btn_number].Decalage_Y =y_offset; + Bouton[btn_number].Width =width-1; + Bouton[btn_number].Height =height-1; + Bouton[btn_number].Enfonce =0; + Bouton[btn_number].Shape =shape; + Bouton[btn_number].Gauche =Gauche; + Bouton[btn_number].Droite =Droite; + Bouton[btn_number].Desenclencher =Desenclencher; + Bouton[btn_number].Famille =family; } @@ -1118,16 +1118,16 @@ void Initialiser_operation(byte Numero_operation, void Initialisation_des_operations(void) { - byte Numero; // Numéro de l'option en cours d'auto-initialisation + byte number; // Numéro de l'option en cours d'auto-initialisation byte Bouton; // Bouton souris en cours d'auto-initialisation byte Taille; // Taille de la pile en cours d'auto-initialisation // Auto-initialisation des opérations (vers des actions inoffensives) - for (Numero=0;Numero>8) { case 0 : @@ -2002,7 +2001,7 @@ int Sauver_CFG(void) CFG_Infos_touche.Touche2=Bouton[Ordonnancement[Indice]&0xFF].Raccourci_droite[1]; break; } - if (!write_word_le(Handle, CFG_Infos_touche.Numero) || + if (!write_word_le(Handle, CFG_Infos_touche.Number) || !write_word_le(Handle, CFG_Infos_touche.Touche) || !write_word_le(Handle, CFG_Infos_touche.Touche2) ) goto Erreur_sauvegarde_config; @@ -2015,10 +2014,10 @@ int Sauver_CFG(void) Modes_a_sauver++; // Sauvegarde de l'état de chaque mode vidéo - Chunk.Numero=CHUNK_MODES_VIDEO; + Chunk.Number=CHUNK_MODES_VIDEO; Chunk.Taille=Modes_a_sauver * sizeof(CFG_Mode_video); - if (!write_byte(Handle, Chunk.Numero) || + if (!write_byte(Handle, Chunk.Number) || !write_word_le(Handle, Chunk.Taille) ) goto Erreur_sauvegarde_config; for (Indice=1; IndiceDirectional_last_move+Directional_delay) + if (time_now>Directional_last_move+Directional_delay) { // Speed parameters, acceleration etc. are here if (Directional_delay==-1) @@ -678,7 +678,7 @@ int Get_input(void) Directional_delay=Directional_delay*8/10; else if (Directional_step<16*4) Directional_step++; - Directional_last_move = Now; + Directional_last_move = time_now; // Directional controller UP if ((Directional_up||Directional_up_left||Directional_up_right) && diff --git a/io.c b/io.c index e230e1d7..2a4a72fd 100644 --- a/io.c +++ b/io.c @@ -171,35 +171,35 @@ int write_dword_be(FILE *file, dword dw) // d:\Data\C\GFX2\grafx2/grafx2.exe char * Position_dernier_slash(const char * Chaine) { - const char * Position = NULL; + const char * position = NULL; for (; *Chaine != '\0'; Chaine++) if (*Chaine == SEPARATEUR_CHEMIN[0] #ifdef __WIN32__ || *Chaine == '/' #endif ) - Position = Chaine; - return (char *)Position; + position = Chaine; + return (char *)position; } // Récupère la partie "nom de file seul" d'un chemin void Extraire_nom_fichier(char *dest, const char *Source) { - const char * Position = Position_dernier_slash(Source); + const char * position = Position_dernier_slash(Source); - if (Position) - strcpy(dest,Position+1); + if (position) + strcpy(dest,position+1); else strcpy(dest,Source); } // Récupère la partie "répertoire+/" d'un chemin. void Extraire_chemin(char *dest, const char *Source) { - char * Position; + char * position; strcpy(dest,Source); - Position = Position_dernier_slash(dest); - if (Position) - *(Position+1) = '\0'; + position = Position_dernier_slash(dest); + if (position) + *(position+1) = '\0'; else strcat(dest, SEPARATEUR_CHEMIN); } diff --git a/loadsave.c b/loadsave.c index 69c07ffa..c7eed706 100644 --- a/loadsave.c +++ b/loadsave.c @@ -146,20 +146,20 @@ int FileLength(FILE * file) } // Chargement des pixels dans l'écran principal -void Pixel_Chargement_dans_ecran_courant(word Pos_X,word Pos_Y,byte Couleur) +void Pixel_Chargement_dans_ecran_courant(word x_pos,word y_pos,byte Couleur) { - //if ((Pos_X>=0) && (Pos_Y>=0)) //Toujours vrai ? - if ((Pos_X=0) && (y_pos>=0)) //Toujours vrai ? + if ((x_pos=0) && (Pos_Y>=0)) - if ((Pos_X=0) && (y_pos>=0)) + if ((x_pos=0) && (Pos_Y>=0)) - if ((Pos_X=0) && (y_pos>=0)) + if ((x_pos> 5) << 5) | ((g >> 5) << 2) | ((b >> 6)); - Pixel(Preview_Pos_X+(Pos_X/Preview_Facteur_X), - Preview_Pos_Y+(Pos_Y/Preview_Facteur_Y), + Pixel(Preview_Pos_X+(x_pos/Preview_Facteur_X), + Preview_Pos_Y+(y_pos/Preview_Facteur_Y), Couleur); } } // Création d'une palette fake -void Palette_fake_24b(T_Palette Palette) +void Palette_fake_24b(T_Palette palette) { int Couleur; // Génération de la palette for (Couleur=0;Couleur<256;Couleur++) { - Palette[Couleur].R=((Couleur & 0xE0)>>5)<<5; - Palette[Couleur].V=((Couleur & 0x1C)>>2)<<5; - Palette[Couleur].B=((Couleur & 0x03)>>0)<<6; + palette[Couleur].R=((Couleur & 0xE0)>>5)<<5; + palette[Couleur].G=((Couleur & 0x1C)>>2)<<5; + palette[Couleur].B=((Couleur & 0x03)>>0)<<6; } } @@ -485,7 +485,7 @@ void Dessiner_preview_palette(void) // Calcul du nom complet du fichier void Nom_fichier_complet(char * Nom_du_fichier, byte Sauve_Colorix) { - byte Pos; + byte last_char; strcpy(Nom_du_fichier,Principal_Repertoire_fichier); @@ -496,25 +496,25 @@ void Nom_fichier_complet(char * Nom_du_fichier, byte Sauve_Colorix) // Si on est en train de sauvegarder une image Colorix, on calcule son ext. if (Sauve_Colorix) { - Pos=strlen(Principal_Nom_fichier)-1; - if (Principal_Nom_fichier[Pos]=='?') + last_char=strlen(Principal_Nom_fichier)-1; + if (Principal_Nom_fichier[last_char]=='?') { if (Principal_Largeur_image<=320) - Principal_Nom_fichier[Pos]='I'; + Principal_Nom_fichier[last_char]='I'; else { if (Principal_Largeur_image<=360) - Principal_Nom_fichier[Pos]='Q'; + Principal_Nom_fichier[last_char]='Q'; else { if (Principal_Largeur_image<=640) - Principal_Nom_fichier[Pos]='F'; + Principal_Nom_fichier[last_char]='F'; else { if (Principal_Largeur_image<=800) - Principal_Nom_fichier[Pos]='N'; + Principal_Nom_fichier[last_char]='N'; else - Principal_Nom_fichier[Pos]='O'; + Principal_Nom_fichier[last_char]='O'; } } } @@ -529,10 +529,10 @@ void Nom_fichier_complet(char * Nom_du_fichier, byte Sauve_Colorix) // Gestion des lectures et écritures // ///////////////////////////////////////////////////////////////////////////// -void Lire_octet(FILE * file, byte *Octet) +void Lire_octet(FILE * file, byte *b) { // FIXME : Remplacer les appelants par read_bytes(), et gérer les retours d'erreur. - read_byte(file, Octet); + read_byte(file, b); } // -------------------------------------------------------------------------- @@ -546,9 +546,9 @@ void Init_ecriture(void) Index_ecriture=0; } -void Ecrire_octet(FILE *file, byte Octet) +void Ecrire_octet(FILE *file, byte b) { - Tampon_ecriture[Index_ecriture++]=Octet; + Tampon_ecriture[Index_ecriture++]=b; if (Index_ecriture>=64000) { if (! write_bytes(file,Tampon_ecriture,64000)) @@ -880,7 +880,7 @@ void Load_IMG(void) char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier byte * Buffer; FILE *file; - word Pos_X,Pos_Y; + word x_pos,y_pos; long Largeur_lue; long Taille_du_fichier; T_Header_IMG IMG_Header; @@ -917,12 +917,12 @@ void Load_IMG(void) Principal_Hauteur_image=IMG_Header.Height; Largeur_lue=IMG_Header.Width; - for (Pos_Y=0;(Pos_YTAILLE_COMMENTAIRE) + if (temp_byte>TAILLE_COMMENTAIRE) { - Couleur=Octet; // On se sert de Couleur comme - Octet=TAILLE_COMMENTAIRE; // variable temporaire + Couleur=temp_byte; // On se sert de Couleur comme + temp_byte=TAILLE_COMMENTAIRE; // variable temporaire Couleur-=TAILLE_COMMENTAIRE; } else Couleur=0; - if (read_bytes(file,Principal_Commentaire,Octet)) + if (read_bytes(file,Principal_Commentaire,temp_byte)) { - Indice+=Octet; - Principal_Commentaire[Octet]='\0'; + Indice+=temp_byte; + Principal_Commentaire[temp_byte]='\0'; if (Couleur) if (fseek(file,Couleur,SEEK_CUR)) Erreur_fichier=2; @@ -1128,9 +1128,9 @@ void Load_PKM(void) break; case 1 : // Dimensions de l'écran d'origine - if (read_byte(file,&Octet)) + if (read_byte(file,&temp_byte)) { - if (Octet==4) + if (temp_byte==4) { Indice+=4; if ( ! read_word_le(file,(word *) &Ecran_original_X) @@ -1145,9 +1145,9 @@ void Load_PKM(void) break; case 2 : // Couleur de transparence - if (read_byte(file,&Octet)) + if (read_byte(file,&temp_byte)) { - if (Octet==1) + if (temp_byte==1) { Indice++; if (! read_byte(file,&Back_color)) @@ -1161,10 +1161,10 @@ void Load_PKM(void) break; default: - if (read_byte(file,&Octet)) + if (read_byte(file,&temp_byte)) { - Indice+=Octet; - if (fseek(file,Octet,SEEK_CUR)) + Indice+=temp_byte; + if (fseek(file,temp_byte,SEEK_CUR)) Erreur_fichier=2; } else @@ -1202,28 +1202,28 @@ void Load_PKM(void) // Boucle de décompression: while ( (Compteur_de_pixels=0)?Temp:0; + Temp=Principal_Palette[j].G-16; + Principal_Palette[Couleur].G=(Temp>=0)?Temp:0; } if ((i-7)&4) { @@ -1578,8 +1578,8 @@ void Test_LBM(void) { Temp=Principal_Palette[j].R+8; Principal_Palette[i].R=(Temp<63)?Temp:63; - Temp=Principal_Palette[j].V+8; - Principal_Palette[i].V=(Temp<63)?Temp:63; + Temp=Principal_Palette[j].G+8; + Principal_Palette[i].G=(Temp<63)?Temp:63; Temp=Principal_Palette[j].B+8; Principal_Palette[i].B=(Temp<63)?Temp:63; } @@ -1601,8 +1601,8 @@ void Test_LBM(void) Principal_Palette[Couleur].R=(Temp<63)?Temp:63; break; case 2 : - Temp=Principal_Palette[j].V+16; - Principal_Palette[Couleur].V=(Temp<63)?Temp:63; + Temp=Principal_Palette[j].G+16; + Principal_Palette[Couleur].G=(Temp<63)?Temp:63; break; default: Temp=Principal_Palette[j].B+16; @@ -1617,7 +1617,7 @@ void Test_LBM(void) { j=i+32; Principal_Palette[j].R=Principal_Palette[i].R>>1; - Principal_Palette[j].V=Principal_Palette[i].V>>1; + Principal_Palette[j].G=Principal_Palette[i].G>>1; Principal_Palette[j].B=Principal_Palette[i].B>>1; } } @@ -1649,18 +1649,18 @@ void Test_LBM(void) // Les images ILBM sont stockés en bitplanes donc on doit trifouiller les bits pour // en faire du chunky -byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne, byte HBPm1) +byte Couleur_ILBM_line(word x_pos, word Vraie_taille_ligne, byte HBPm1) { - // Renvoie la couleur du pixel (ILBM) en Pos_X. + // Renvoie la couleur du pixel (ILBM) en x_pos. // CL sera le rang auquel on extrait les bits de la couleur - byte cl = 7 - (Pos_X & 7); + byte cl = 7 - (x_pos & 7); int ax,bh,dx; byte bl=0; for(dx=HBPm1;dx>=0;dx--) { //CIL_Loop - ax = (Vraie_taille_ligne * dx + Pos_X) >> 3; + ax = (Vraie_taille_ligne * dx + x_pos) >> 3; bh = (LBM_Buffer[ax] >> cl) & 1; bl = (bl << 1) + bh; @@ -1670,30 +1670,30 @@ byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne, byte HBPm1) } // ----------------------- Afficher une ligne ILBM ------------------------ - void Draw_ILBM_line(short Pos_Y, short Vraie_taille_ligne) + void Draw_ILBM_line(short y_pos, short Vraie_taille_ligne) { byte Couleur; byte Rouge,Vert,Bleu; byte Temp; - short Pos_X; + short x_pos; if (Image_HAM<=1) // ILBM { - for (Pos_X=0; Pos_X 127 alors il faut répéter 256-'Octet' fois la couleur de l'octet suivant - // Si Octet <= 127 alors il faut afficher directement les 'Octet' octets suivants - if (Octet>127) + Lire_octet(LBM_Fichier, &temp_byte); + // Si temp_byte > 127 alors il faut répéter 256-'temp_byte' fois la couleur de l'octet suivant + // Si temp_byte <= 127 alors il faut afficher directement les 'temp_byte' octets suivants + if (temp_byte>127) { Lire_octet(LBM_Fichier, &Couleur); - B256=(short)(256-Octet); + B256=(short)(256-temp_byte); for (counter=0; counter<=B256; counter++) - if (Pos_X127) + Lire_octet(LBM_Fichier, &temp_byte); + if (temp_byte>127) { Lire_octet(LBM_Fichier, &Couleur); - B256=256-Octet; + B256=256-temp_byte; for (counter=0; counter<=B256; counter++) - Pixel_de_chargement(Pos_X++,Pos_Y,Couleur); + Pixel_de_chargement(x_pos++,y_pos,Couleur); } else - for (counter=0; counter<=Octet; counter++) + for (counter=0; counter<=temp_byte; counter++) { byte Lu=0; Lire_octet(LBM_Fichier, &Lu); - Pixel_de_chargement(Pos_X++,Pos_Y,Lu); + Pixel_de_chargement(x_pos++,y_pos,Lu); } } } @@ -2097,9 +2097,9 @@ void Save_LBM(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; T_Header_LBM header; - word Pos_X; - word Pos_Y; - byte Octet; + word x_pos; + word y_pos; + byte temp_byte; word Vraie_largeur; struct stat Informations_Fichier; @@ -2160,10 +2160,10 @@ void Save_LBM(void) LBM_Taille_de_file=0; - for (Pos_Y=0; ((Pos_Y>3; Buffer=(byte *)malloc(Taille_ligne); - for (Pos_Y=Principal_Hauteur_image-1; ((Pos_Y>=0) && (!Erreur_fichier)); Pos_Y--) + for (y_pos=Principal_Hauteur_image-1; ((y_pos>=0) && (!Erreur_fichier)); y_pos--) { if (read_bytes(file,Buffer,Taille_ligne)) - for (Pos_X=0; Pos_X>1] & 0xF); + if (x_pos & 1) + Pixel_de_chargement(x_pos,y_pos,Buffer[x_pos>>1] & 0xF); else - Pixel_de_chargement(Pos_X,Pos_Y,Buffer[Pos_X>>1] >> 4 ); + Pixel_de_chargement(x_pos,y_pos,Buffer[x_pos>>1] >> 4 ); break; case 1 : - if ( Buffer[Pos_X>>3] & (0x80>>(Pos_X&7)) ) - Pixel_de_chargement(Pos_X,Pos_Y,1); + if ( Buffer[x_pos>>3] & (0x80>>(x_pos&7)) ) + Pixel_de_chargement(x_pos,y_pos,1); else - Pixel_de_chargement(Pos_X,Pos_Y,0); + Pixel_de_chargement(x_pos,y_pos,0); } else Erreur_fichier=2; @@ -2411,8 +2411,8 @@ void Load_BMP(void) break; case 1 : // Compression RLE 8 bits - Pos_X=0; - Pos_Y=Principal_Hauteur_image-1; + x_pos=0; + y_pos=Principal_Hauteur_image-1; /*Init_lecture();*/ Lire_octet(file, &a); @@ -2421,31 +2421,31 @@ void Load_BMP(void) { if (a) // Encoded mode for (Indice=1; Indice<=a; Indice++) - Pixel_de_chargement(Pos_X++,Pos_Y,b); + Pixel_de_chargement(x_pos++,y_pos,b); else // Absolute mode switch (b) { case 0 : // End of line - Pos_X=0; - Pos_Y--; + x_pos=0; + y_pos--; break; case 1 : // End of bitmap break; case 2 : // Delta Lire_octet(file, &a); Lire_octet(file, &b); - Pos_X+=a; - Pos_Y-=b; + x_pos+=a; + y_pos-=b; break; default: // Nouvelle série while (b) { Lire_octet(file, &a); Lire_octet(file, &c); - Pixel_de_chargement(Pos_X++,Pos_Y,a); + Pixel_de_chargement(x_pos++,y_pos,a); if (--c) { - Pixel_de_chargement(Pos_X++,Pos_Y,c); + Pixel_de_chargement(x_pos++,y_pos,c); b--; } } @@ -2457,8 +2457,8 @@ void Load_BMP(void) break; case 2 : // Compression RLE 4 bits - Pos_X=0; - Pos_Y=Principal_Hauteur_image-1; + x_pos=0; + y_pos=Principal_Hauteur_image-1; /*Init_lecture();*/ Lire_octet(file, &a); @@ -2469,36 +2469,36 @@ void Load_BMP(void) for (Indice=1; Indice<=a; Indice++) { if (Indice & 1) - Pixel_de_chargement(Pos_X,Pos_Y,b>>4); + Pixel_de_chargement(x_pos,y_pos,b>>4); else - Pixel_de_chargement(Pos_X,Pos_Y,b&0xF); - Pos_X++; + Pixel_de_chargement(x_pos,y_pos,b&0xF); + x_pos++; } else // Absolute mode switch (b) { case 0 : //End of line - Pos_X=0; - Pos_Y--; + x_pos=0; + y_pos--; break; case 1 : // End of bitmap break; case 2 : // Delta Lire_octet(file, &a); Lire_octet(file, &b); - Pos_X+=a; - Pos_Y-=b; + x_pos+=a; + y_pos-=b; break; default: // Nouvelle série (B 1/2 pixels bruts) - for (Indice=1; ((Indice<=b) && (!Erreur_fichier)); Indice++,Pos_X++) + for (Indice=1; ((Indice<=b) && (!Erreur_fichier)); Indice++,x_pos++) { if (Indice&1) { Lire_octet(file, &c); - Pixel_de_chargement(Pos_X,Pos_Y,c>>4); + Pixel_de_chargement(x_pos,y_pos,c>>4); } else - Pixel_de_chargement(Pos_X,Pos_Y,c&0xF); + Pixel_de_chargement(x_pos,y_pos,c&0xF); } // On lit l'octet rendant le nombre d'octets pair, si // nécessaire. Encore un truc de crétin "made in MS". @@ -2534,16 +2534,16 @@ void Load_BMP(void) if (Erreur_fichier==0) { Taille_ligne=Principal_Largeur_image*3; - Pos_X=(Taille_ligne % 4); // Pos_X sert de variable temporaire - if (Pos_X>0) - Taille_ligne+=(4-Pos_X); + x_pos=(Taille_ligne % 4); // x_pos sert de variable temporaire + if (x_pos>0) + Taille_ligne+=(4-x_pos); Buffer=(byte *)malloc(Taille_ligne); - for (Pos_Y=Principal_Hauteur_image-1; ((Pos_Y>=0) && (!Erreur_fichier)); Pos_Y--) + for (y_pos=Principal_Hauteur_image-1; ((y_pos>=0) && (!Erreur_fichier)); y_pos--) { if (read_bytes(file,Buffer,Taille_ligne)) - for (Pos_X=0,Indice=0; Pos_X=0) && (!Erreur_fichier)); Pos_Y--) - for (Pos_X=0; Pos_X=0) && (!Erreur_fichier)); y_pos--) + for (x_pos=0; x_pos>((Reduction_moins_1-(Pos_X%Reduction))*depth)) & byte_mask; - Pixel_de_chargement(Pos_X,Pos_Y,Couleur); + Couleur=(LBM_Buffer[x_pos/Reduction]>>((Reduction_moins_1-(x_pos%Reduction))*depth)) & byte_mask; + Pixel_de_chargement(x_pos,y_pos,Couleur); } } @@ -3619,16 +3619,16 @@ void Load_PCX(void) short Taille_ligne; short Vraie_taille_ligne; // width de l'image corrigée short Largeur_lue; - short Pos_X; - short Pos_Y; - byte Octet1; - byte Octet2; + short x_pos; + short y_pos; + byte byte1; + byte byte2; byte Indice; dword Nb_couleurs; long Taille_du_fichier; byte Palette_CGA[9]={ 84,252,252, 252, 84,252, 252,252,252}; - long Position; + long position; long Taille_image; byte * Buffer; struct stat Informations_Fichier; @@ -3686,13 +3686,13 @@ void Load_PCX(void) else { Principal_Palette[1].R=0; - Principal_Palette[1].V=0; + Principal_Palette[1].G=0; Principal_Palette[1].B=0; - Octet1=PCX_Header.Palette_16c[3]>>5; + byte1=PCX_Header.Palette_16c[3]>>5; if (Nb_couleurs==4) { // Pal. CGA "alakon" (du Turc Allahkoum qui signifie "à la con" :)) memcpy(Principal_Palette+1,Palette_CGA,9); - if (!(Octet1&2)) + if (!(byte1&2)) { Principal_Palette[1].B=84; Principal_Palette[2].B=84; @@ -3702,7 +3702,7 @@ void Load_PCX(void) else { Principal_Palette[1].R=252; - Principal_Palette[1].V=252; + Principal_Palette[1].G=252; Principal_Palette[1].B=252; } } @@ -3713,14 +3713,14 @@ void Load_PCX(void) { fseek(file,Taille_du_fichier-((256*3)+1),SEEK_SET); // On regarde s'il y a une palette après les données de l'image - if (read_byte(file,&Octet1)) - if (Octet1==12) // Lire la palette si c'est une image en 256 couleurs + if (read_byte(file,&byte1)) + if (byte1==12) // Lire la palette si c'est une image en 256 couleurs { int index; // On lit la palette 256c que ces crétins ont foutue à la fin du fichier for(index=0;index<256;index++) if ( ! read_byte(file,&Principal_Palette[index].R) - || ! read_byte(file,&Principal_Palette[index].V) + || ! read_byte(file,&Principal_Palette[index].G) || ! read_byte(file,&Principal_Palette[index].B) ) { Erreur_fichier=2; @@ -3754,55 +3754,55 @@ void Load_PCX(void) if (PCX_Header.Depth==8) // 256 couleurs (1 plan) { - for (Position=0; ((Position=Taille_ligne) + Buffer[position++]=byte2; + if (position>=Taille_ligne) { - for (Pos_X=0; Pos_X=Taille_ligne) + Buffer[position++]=byte1; + if (position>=Taille_ligne) { - for (Pos_X=0; Pos_X1) || (Last_pixel>=0xC0) ) @@ -4148,8 +4148,8 @@ void Load_CEL(void) FILE *file; T_CEL_Header1 Header1; T_CEL_Header2 Header2; - short Pos_X; - short Pos_Y; + short x_pos; + short y_pos; byte Dernier_octet=0; long Taille_du_fichier; struct stat Informations_Fichier; @@ -4176,15 +4176,15 @@ void Load_CEL(void) { // Chargement de l'image /*Init_lecture();*/ - for (Pos_Y=0;((Pos_Y> 4)); + Pixel_de_chargement(x_pos,y_pos,(Dernier_octet >> 4)); } else - Pixel_de_chargement(Pos_X,Pos_Y,(Dernier_octet & 15)); + Pixel_de_chargement(x_pos,y_pos,(Dernier_octet & 15)); /*Close_lecture();*/ } } @@ -4210,34 +4210,34 @@ void Load_CEL(void) if (!Erreur_fichier) { // Effacement du décalage - for (Pos_Y=0;Pos_Y> 4)); + Pixel_de_chargement(x_pos+Header2.Decalage_X,y_pos+Header2.Decalage_Y,(Dernier_octet >> 4)); } else - Pixel_de_chargement(Pos_X+Header2.Decalage_X,Pos_Y+Header2.Decalage_Y,(Dernier_octet & 15)); + Pixel_de_chargement(x_pos+Header2.Decalage_X,y_pos+Header2.Decalage_Y,(Dernier_octet & 15)); break; case 8: - for (Pos_Y=0;((Pos_Y16 sont utilisées dans l'image - for (Pos_X=16;((Pos_X<256) && (!Utilisation[Pos_X]));Pos_X++); + for (x_pos=16;((x_pos<256) && (!Utilisation[x_pos]));x_pos++); - if (Pos_X==256) + if (x_pos==256) { // Cas d'une image 16 couleurs (écriture à l'ancien format) @@ -4296,18 +4296,18 @@ void Save_CEL(void) { // Sauvegarde de l'image Init_ecriture(); - for (Pos_Y=0;((Pos_Y>4)!=0) + if ((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Byte2>>4)!=0) Erreur_fichier=1; } else @@ -4442,7 +4442,7 @@ void Load_KCF(void) FILE *file; T_KCF_Header Buffer; T_CEL_Header2 Header2; - byte Octet[3]; + byte bytes[3]; int Indice_palette; int Indice_couleur; int Indice; @@ -4470,15 +4470,15 @@ void Load_KCF(void) for (Indice_couleur=0;Indice_couleur<16;Indice_couleur++) { Indice=16+(Indice_palette*16)+Indice_couleur; - Principal_Palette[Indice].R=((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Octet1 >> 4) << 4); - Principal_Palette[Indice].B=((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Octet1 & 15) << 4); - Principal_Palette[Indice].V=((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Octet2 & 15) << 4); + Principal_Palette[Indice].R=((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Byte1 >> 4) << 4); + Principal_Palette[Indice].B=((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Byte1 & 15) << 4); + Principal_Palette[Indice].G=((Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Byte2 & 15) << 4); } for (Indice=0;Indice<16;Indice++) { Principal_Palette[Indice].R=Principal_Palette[Indice+16].R; - Principal_Palette[Indice].V=Principal_Palette[Indice+16].V; + Principal_Palette[Indice].G=Principal_Palette[Indice+16].G; Principal_Palette[Indice].B=Principal_Palette[Indice+16].B; } @@ -4508,17 +4508,17 @@ void Load_KCF(void) switch(Header2.Nbbits) { case 12: // RRRR BBBB | 0000 VVVV - read_bytes(file,Octet,2); - Principal_Palette[Indice].R=(Octet[0] >> 4) << 4; - Principal_Palette[Indice].B=(Octet[0] & 15) << 4; - Principal_Palette[Indice].V=(Octet[1] & 15) << 4; + read_bytes(file,bytes,2); + Principal_Palette[Indice].R=(bytes[0] >> 4) << 4; + Principal_Palette[Indice].B=(bytes[0] & 15) << 4; + Principal_Palette[Indice].G=(bytes[1] & 15) << 4; break; case 24: // RRRR RRRR | VVVV VVVV | BBBB BBBB - read_bytes(file,Octet,3); - Principal_Palette[Indice].R=Octet[0]; - Principal_Palette[Indice].V=Octet[1]; - Principal_Palette[Indice].B=Octet[2]; + read_bytes(file,bytes,3); + Principal_Palette[Indice].R=bytes[0]; + Principal_Palette[Indice].G=bytes[1]; + Principal_Palette[Indice].B=bytes[2]; } Indice++; @@ -4529,7 +4529,7 @@ void Load_KCF(void) for (Indice=0;Indice<16;Indice++) { Principal_Palette[Indice].R=Principal_Palette[Indice+16].R; - Principal_Palette[Indice].V=Principal_Palette[Indice+16].V; + Principal_Palette[Indice].G=Principal_Palette[Indice+16].G; Principal_Palette[Indice].B=Principal_Palette[Indice+16].B; } @@ -4556,7 +4556,7 @@ void Save_KCF(void) FILE *file; T_KCF_Header Buffer; T_CEL_Header2 Header2; - byte Octet[3]; + byte bytes[3]; int Indice_palette; int Indice_couleur; int Indice; @@ -4582,8 +4582,8 @@ void Save_KCF(void) for (Indice_couleur=0;Indice_couleur<16;Indice_couleur++) { Indice=16+(Indice_palette*16)+Indice_couleur; - Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Octet1=((Principal_Palette[Indice].R>>4)<<4) | (Principal_Palette[Indice].B>>4); - Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Octet2=Principal_Palette[Indice].V>>4; + Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Byte1=((Principal_Palette[Indice].R>>4)<<4) | (Principal_Palette[Indice].B>>4); + Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Byte2=Principal_Palette[Indice].G>>4; } if (! write_bytes(file,&Buffer,sizeof(T_KCF_Header))) @@ -4609,10 +4609,10 @@ void Save_KCF(void) for (Indice=0;(Indice<256) && (!Erreur_fichier);Indice++) { - Octet[0]=Principal_Palette[Indice].R; - Octet[1]=Principal_Palette[Indice].V; - Octet[2]=Principal_Palette[Indice].B; - if (! write_bytes(file,Octet,3)) + bytes[0]=Principal_Palette[Indice].R; + bytes[1]=Principal_Palette[Indice].G; + bytes[2]=Principal_Palette[Indice].B; + if (! write_bytes(file,bytes,3)) Erreur_fichier=1; } } @@ -4678,7 +4678,7 @@ void Load_SCx(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier FILE *file; - word Pos_X,Pos_Y; + word x_pos,y_pos; long Taille,Vraie_taille; long Taille_du_fichier; T_SCx_Header SCx_Header; @@ -4719,11 +4719,11 @@ void Load_SCx(void) { // 256 couleurs (raw) LBM_Buffer=(byte *)malloc(Principal_Largeur_image); - for (Pos_Y=0;(Pos_Y> 3)) << 4; - Pal[ip++]=(((w & 0x7000) >> 11) | ((w & 0x8000) >> 15)) << 4; - Pal[ip++]=(((w & 0x0700) >> 7) | ((w & 0x0800) >> 11)) << 4; + palette[ip++]=(((w & 0x0007) << 1) | ((w & 0x0008) >> 3)) << 4; + palette[ip++]=(((w & 0x7000) >> 11) | ((w & 0x8000) >> 15)) << 4; + palette[ip++]=(((w & 0x0700) >> 7) | ((w & 0x0800) >> 11)) << 4; } } //// CODAGE de la PALETTE //// -void PI1_Coder_palette(byte * Pal,byte * Dst) +void PI1_Coder_palette(byte * palette,byte * Dst) { int i; // Numéro de la couleur traitée int ip; // Indice dans la palette @@ -4926,9 +4926,9 @@ void PI1_Coder_palette(byte * Pal,byte * Dst) for (i=0;i<16;i++) { // Traitement des couleurs rouge, verte et bleue: - w =(((word)(Pal[ip]>>2) & 0x38) >> 3) | (((word)(Pal[ip]>>2) & 0x04) << 1); ip++; - w|=(((word)(Pal[ip]>>2) & 0x38) << 9) | (((word)(Pal[ip]>>2) & 0x04) << 13); ip++; - w|=(((word)(Pal[ip]>>2) & 0x38) << 5) | (((word)(Pal[ip]>>2) & 0x04) << 9); ip++; + w =(((word)(palette[ip]>>2) & 0x38) >> 3) | (((word)(palette[ip]>>2) & 0x04) << 1); ip++; + w|=(((word)(palette[ip]>>2) & 0x38) << 9) | (((word)(palette[ip]>>2) & 0x04) << 13); ip++; + w|=(((word)(palette[ip]>>2) & 0x38) << 5) | (((word)(palette[ip]>>2) & 0x04) << 9); ip++; Dst[(i*2)+0]=w & 0x00FF; Dst[(i*2)+1]=(w>>8); @@ -4974,7 +4974,7 @@ void Load_PI1(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier FILE *file; - word Pos_X,Pos_Y; + word x_pos,y_pos; byte * buffer; byte * ptr; byte pixels[320]; @@ -5007,15 +5007,15 @@ void Load_PI1(void) // Chargement/décompression de l'image ptr=buffer+34; - for (Pos_Y=0;Pos_Y<200;Pos_Y++) + for (y_pos=0;y_pos<200;y_pos++) { - for (Pos_X=0;Pos_X<(320>>4);Pos_X++) + for (x_pos=0;x_pos<(320>>4);x_pos++) { - PI1_8b_to_16p(ptr,pixels+(Pos_X<<4)); + PI1_8b_to_16p(ptr,pixels+(x_pos<<4)); ptr+=8; } - for (Pos_X=0;Pos_X<320;Pos_X++) - Pixel_de_chargement(Pos_X,Pos_Y,pixels[Pos_X]); + for (x_pos=0;x_pos<320;x_pos++) + Pixel_de_chargement(x_pos,y_pos,pixels[x_pos]); } } } @@ -5037,7 +5037,7 @@ void Save_PI1(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier FILE *file; - short Pos_X,Pos_Y; + short x_pos,y_pos; byte * buffer; byte * ptr; byte pixels[320]; @@ -5057,19 +5057,19 @@ void Save_PI1(void) PI1_Coder_palette((byte *)Principal_Palette,buffer+2); // Codage de l'image ptr=buffer+34; - for (Pos_Y=0;Pos_Y<200;Pos_Y++) + for (y_pos=0;y_pos<200;y_pos++) { // Codage de la ligne memset(pixels,0,320); - if (Pos_Y>4);Pos_X++) + for (x_pos=0;x_pos<(320>>4);x_pos++) { - PI1_16p_to_8b(pixels+(Pos_X<<4),ptr); + PI1_16p_to_8b(pixels+(x_pos<<4),ptr); ptr+=8; } } @@ -5305,7 +5305,7 @@ void Load_PC1(void) char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier FILE *file; int Taille; - word Pos_X,Pos_Y; + word x_pos,y_pos; byte * buffercomp; byte * bufferdecomp; byte * ptr; @@ -5344,14 +5344,14 @@ void Load_PC1(void) // Décodage de l'image ptr=bufferdecomp; - for (Pos_Y=0;Pos_Y<200;Pos_Y++) + for (y_pos=0;y_pos<200;y_pos++) { // Décodage de la scanline PC1_4pb_to_1lp(ptr,ptr+40,ptr+80,ptr+120,pixels); ptr+=160; // Chargement de la ligne - for (Pos_X=0;Pos_X<320;Pos_X++) - Pixel_de_chargement(Pos_X,Pos_Y,pixels[Pos_X]); + for (x_pos=0;x_pos<320;x_pos++) + Pixel_de_chargement(x_pos,y_pos,pixels[x_pos]); } } } @@ -5379,7 +5379,7 @@ void Save_PC1(void) char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier FILE *file; int Taille; - short Pos_X,Pos_Y; + short x_pos,y_pos; byte * buffercomp; byte * bufferdecomp; byte * ptr; @@ -5401,14 +5401,14 @@ void Save_PC1(void) PI1_Coder_palette((byte *)Principal_Palette,buffercomp+2); // Codage de l'image ptr=bufferdecomp; - for (Pos_Y=0;Pos_Y<200;Pos_Y++) + for (y_pos=0;y_pos<200;y_pos++) { // Codage de la ligne memset(pixels,0,320); - if (Pos_Y=Bouton[Numero].Decalage_X) && - (Pos_Y>=Bouton[Numero].Decalage_Y) && - (Pos_X<=Bouton[Numero].Decalage_X+Bouton[Numero].Width) && - (Pos_Y<=Bouton[Numero].Decalage_Y+Bouton[Numero].Height)) - return Numero; + if ((x_pos>=Bouton[btn_number].Decalage_X) && + (y_pos>=Bouton[btn_number].Decalage_Y) && + (x_pos<=Bouton[btn_number].Decalage_X+Bouton[btn_number].Width) && + (y_pos<=Bouton[btn_number].Decalage_Y+Bouton[btn_number].Height)) + return btn_number; break; case FORME_BOUTON_TRIANGLE_HAUT_GAUCHE: - if ((Pos_X>=Bouton[Numero].Decalage_X) && - (Pos_Y>=Bouton[Numero].Decalage_Y) && - (Pos_X+Pos_Y-(short)Bouton[Numero].Decalage_Y-(short)Bouton[Numero].Decalage_X<=Bouton[Numero].Width)) - return Numero; + if ((x_pos>=Bouton[btn_number].Decalage_X) && + (y_pos>=Bouton[btn_number].Decalage_Y) && + (x_pos+y_pos-(short)Bouton[btn_number].Decalage_Y-(short)Bouton[btn_number].Decalage_X<=Bouton[btn_number].Width)) + return btn_number; break; case FORME_BOUTON_TRIANGLE_BAS_DROITE: - if ((Pos_X<=Bouton[Numero].Decalage_X+Bouton[Numero].Width) && - (Pos_Y<=Bouton[Numero].Decalage_Y+Bouton[Numero].Height) && - (Pos_X+Pos_Y-(short)Bouton[Numero].Decalage_Y-(short)Bouton[Numero].Decalage_X>=Bouton[Numero].Width)) - return Numero; + if ((x_pos<=Bouton[btn_number].Decalage_X+Bouton[btn_number].Width) && + (y_pos<=Bouton[btn_number].Decalage_Y+Bouton[btn_number].Height) && + (x_pos+y_pos-(short)Bouton[btn_number].Decalage_Y-(short)Bouton[btn_number].Decalage_X>=Bouton[btn_number].Width)) + return btn_number; break; } } @@ -213,7 +213,7 @@ int Numero_bouton_sous_souris(void) } -void Tracer_cadre_de_bouton_du_menu(byte Numero,byte pressed) +void Tracer_cadre_de_bouton_du_menu(byte btn_number,byte pressed) { byte Couleur_Haut_gauche; byte Couleur_Bas_droite; @@ -222,13 +222,13 @@ void Tracer_cadre_de_bouton_du_menu(byte Numero,byte pressed) word Debut_Y; word Fin_X; word Fin_Y; - word Pos_X; - word Pos_Y; + word x_pos; + word y_pos; - Debut_X=Bouton[Numero].Decalage_X; - Debut_Y=Bouton[Numero].Decalage_Y; - Fin_X =Debut_X+Bouton[Numero].Width; - Fin_Y =Debut_Y+Bouton[Numero].Height; + Debut_X=Bouton[btn_number].Decalage_X; + Debut_Y=Bouton[btn_number].Decalage_Y; + Fin_X =Debut_X+Bouton[btn_number].Width; + Fin_Y =Debut_Y+Bouton[btn_number].Height; if (!pressed) { @@ -243,7 +243,7 @@ void Tracer_cadre_de_bouton_du_menu(byte Numero,byte pressed) Couleur_Diagonale=CM_Fonce; } - switch(Bouton[Numero].Shape) + switch(Bouton[btn_number].Shape) { case FORME_BOUTON_SANS_CADRE : break; @@ -255,25 +255,25 @@ void Tracer_cadre_de_bouton_du_menu(byte Numero,byte pressed) Pixel_dans_menu(Debut_X,Fin_Y,Couleur_Diagonale); BLOCK_MENU[Fin_Y][Debut_X]=Couleur_Diagonale; // On colorie la partie haute - for (Pos_X=Debut_X;Pos_X<=Fin_X-1;Pos_X++) + for (x_pos=Debut_X;x_pos<=Fin_X-1;x_pos++) { - Pixel_dans_menu(Pos_X,Debut_Y,Couleur_Haut_gauche); - BLOCK_MENU[Debut_Y][Pos_X]=Couleur_Haut_gauche; + Pixel_dans_menu(x_pos,Debut_Y,Couleur_Haut_gauche); + BLOCK_MENU[Debut_Y][x_pos]=Couleur_Haut_gauche; } - for (Pos_Y=Debut_Y+1;Pos_Y<=Fin_Y-1;Pos_Y++) + for (y_pos=Debut_Y+1;y_pos<=Fin_Y-1;y_pos++) { // On colorie la partie gauche - Pixel_dans_menu(Debut_X,Pos_Y,Couleur_Haut_gauche); - BLOCK_MENU[Pos_Y][Debut_X]=Couleur_Haut_gauche; + Pixel_dans_menu(Debut_X,y_pos,Couleur_Haut_gauche); + BLOCK_MENU[y_pos][Debut_X]=Couleur_Haut_gauche; // On colorie la partie droite - Pixel_dans_menu(Fin_X,Pos_Y,Couleur_Bas_droite); - BLOCK_MENU[Pos_Y][Fin_X]=Couleur_Bas_droite; + Pixel_dans_menu(Fin_X,y_pos,Couleur_Bas_droite); + BLOCK_MENU[y_pos][Fin_X]=Couleur_Bas_droite; } // On colorie la partie basse - for (Pos_X=Debut_X+1;Pos_X<=Fin_X;Pos_X++) + for (x_pos=Debut_X+1;x_pos<=Fin_X;x_pos++) { - Pixel_dans_menu(Pos_X,Fin_Y,Couleur_Bas_droite); - BLOCK_MENU[Fin_Y][Pos_X]=Couleur_Bas_droite; + Pixel_dans_menu(x_pos,Fin_Y,Couleur_Bas_droite); + BLOCK_MENU[Fin_Y][x_pos]=Couleur_Bas_droite; } break; case FORME_BOUTON_TRIANGLE_HAUT_GAUCHE: @@ -284,18 +284,18 @@ void Tracer_cadre_de_bouton_du_menu(byte Numero,byte pressed) Pixel_dans_menu(Debut_X,Fin_Y,Couleur_Diagonale); BLOCK_MENU[Fin_Y][Debut_X]=Couleur_Diagonale; // On colorie le coin haut gauche - for (Pos_X=0;Pos_X>1 ); - Pos_texte_Y=Pos_Y+((height-7)>>1); + Pos_texte_X=x_pos+( (width-(strlen(Titre)<<3)+1) >>1 ); + Pos_texte_Y=y_pos+((height-7)>>1); Print_dans_fenetre(Pos_texte_X,Pos_texte_Y,Titre,Couleur_titre,CM_Clair); if (Lettre_soulignee) @@ -1265,29 +1265,29 @@ void Fenetre_Dessiner_bouton_normal(word Pos_X,word Pos_Y,word width,word height // -- Bouton normal enfoncé dans la fenêtre -- -void Fenetre_Enfoncer_bouton_normal(word Pos_X,word Pos_Y,word width,word height) +void Fenetre_Enfoncer_bouton_normal(word x_pos,word y_pos,word width,word height) { - Fenetre_Afficher_cadre_general(Pos_X,Pos_Y,width,height,CM_Fonce,CM_Noir,CM_Fonce,CM_Fonce,CM_Noir); - UpdateRect(Fenetre_Pos_X+Pos_X*Menu_Facteur_X, Fenetre_Pos_Y+Pos_Y*Menu_Facteur_Y, width*Menu_Facteur_X, height*Menu_Facteur_Y); + Fenetre_Afficher_cadre_general(x_pos,y_pos,width,height,CM_Fonce,CM_Noir,CM_Fonce,CM_Fonce,CM_Noir); + UpdateRect(Fenetre_Pos_X+x_pos*Menu_Facteur_X, Fenetre_Pos_Y+y_pos*Menu_Facteur_Y, width*Menu_Facteur_X, height*Menu_Facteur_Y); } // -- Bouton normal désenfoncé dans la fenêtre -- -void Fenetre_Desenfoncer_bouton_normal(word Pos_X,word Pos_Y,word width,word height) +void Fenetre_Desenfoncer_bouton_normal(word x_pos,word y_pos,word width,word height) { - Fenetre_Afficher_cadre_bombe(Pos_X,Pos_Y,width,height); - UpdateRect(Fenetre_Pos_X+Pos_X*Menu_Facteur_X, Fenetre_Pos_Y+Pos_Y*Menu_Facteur_Y, width*Menu_Facteur_X, height*Menu_Facteur_Y); + Fenetre_Afficher_cadre_bombe(x_pos,y_pos,width,height); + UpdateRect(Fenetre_Pos_X+x_pos*Menu_Facteur_X, Fenetre_Pos_Y+y_pos*Menu_Facteur_Y, width*Menu_Facteur_X, height*Menu_Facteur_Y); } //--------------- Dessiner un bouton palette dans une fenêtre ---------------- -void Fenetre_Dessiner_bouton_palette(word Pos_X,word Pos_Y) +void Fenetre_Dessiner_bouton_palette(word x_pos,word y_pos) { word Couleur; for (Couleur=0; Couleur<=255; Couleur++) - Block( Fenetre_Pos_X+((((Couleur >> 4)*10)+Pos_X+6)*Menu_Facteur_X),Fenetre_Pos_Y+((((Couleur & 15)*5)+Pos_Y+3)*Menu_Facteur_Y),Menu_Facteur_X*5,Menu_Facteur_Y*5,Couleur); + Block( Fenetre_Pos_X+((((Couleur >> 4)*10)+x_pos+6)*Menu_Facteur_X),Fenetre_Pos_Y+((((Couleur & 15)*5)+y_pos+3)*Menu_Facteur_Y),Menu_Facteur_X*5,Menu_Facteur_Y*5,Couleur); - Fenetre_Afficher_cadre(Pos_X,Pos_Y,164,86); + Fenetre_Afficher_cadre(x_pos,y_pos,164,86); } @@ -1297,13 +1297,13 @@ void Fenetre_Effacer_tags(void) { word Origine_X; word Origine_Y; - word Pos_X; + word x_pos; word Pos_fenetre_X; //word Pos_fenetre_Y; Origine_X=Fenetre_Pos_X+(Fenetre_Liste_boutons_palette->Pos_X+3)*Menu_Facteur_X; Origine_Y=Fenetre_Pos_Y+(Fenetre_Liste_boutons_palette->Pos_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)) + for (x_pos=0,Pos_fenetre_X=Origine_X;x_pos<16;x_pos++,Pos_fenetre_X+=(Menu_Facteur_X*10)) Block(Pos_fenetre_X,Origine_Y,Menu_Facteur_X*3,Menu_Facteur_Y*80,CM_Clair); UpdateRect(Origine_X,Origine_Y,ToWinL(160),ToWinH(80)); } @@ -1314,8 +1314,8 @@ void Tagger_intervalle_palette(byte start,byte end) { word Origine_X; word Origine_Y; - //word Pos_X; - word Pos_Y; + //word x_pos; + word y_pos; //word Pos_fenetre_X; word Pos_fenetre_Y; word Indice; @@ -1334,9 +1334,9 @@ void Tagger_intervalle_palette(byte start,byte end) // On affiche le 1er TAG Origine_X=(Fenetre_Liste_boutons_palette->Pos_X+3)+(start>>4)*10; Origine_Y=(Fenetre_Liste_boutons_palette->Pos_Y+3)+(start&15)* 5; - for (Pos_Y=0,Pos_fenetre_Y=Origine_Y ;Pos_Y<5;Pos_Y++,Pos_fenetre_Y++) + for (y_pos=0,Pos_fenetre_Y=Origine_Y ;y_pos<5;y_pos++,Pos_fenetre_Y++) Pixel_dans_fenetre(Origine_X ,Pos_fenetre_Y,CM_Noir); - for (Pos_Y=0,Pos_fenetre_Y=Origine_Y+1;Pos_Y<3;Pos_Y++,Pos_fenetre_Y++) + for (y_pos=0,Pos_fenetre_Y=Origine_Y+1;y_pos<3;y_pos++,Pos_fenetre_Y++) Pixel_dans_fenetre(Origine_X+1,Pos_fenetre_Y,CM_Noir); Pixel_dans_fenetre(Origine_X+2,Origine_Y+2,CM_Noir); @@ -1348,9 +1348,9 @@ void Tagger_intervalle_palette(byte start,byte end) // On affiche le 2ème TAG Origine_X=(Fenetre_Liste_boutons_palette->Pos_X+3)+(end>>4)*10; Origine_Y=(Fenetre_Liste_boutons_palette->Pos_Y+3)+(end&15)* 5; - for (Pos_Y=0,Pos_fenetre_Y=Origine_Y; Pos_Y<5; Pos_Y++,Pos_fenetre_Y++) + for (y_pos=0,Pos_fenetre_Y=Origine_Y; y_pos<5; y_pos++,Pos_fenetre_Y++) Pixel_dans_fenetre(Origine_X ,Pos_fenetre_Y,CM_Noir); - for (Pos_Y=0,Pos_fenetre_Y=Origine_Y; Pos_Y<4; Pos_Y++,Pos_fenetre_Y++) + for (y_pos=0,Pos_fenetre_Y=Origine_Y; y_pos<4; y_pos++,Pos_fenetre_Y++) Pixel_dans_fenetre(Origine_X+1,Pos_fenetre_Y,CM_Noir); Pixel_dans_fenetre(Origine_X+2,Origine_Y+2,CM_Noir); @@ -1426,9 +1426,9 @@ void Fenetre_Dessiner_bouton_scroller(T_Bouton_scroller * button) //--------------- Dessiner une zone de saisie dans une fenêtre --------------- -void Fenetre_Dessiner_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres) +void Fenetre_Dessiner_bouton_saisie(word x_pos,word y_pos,word Largeur_en_caracteres) { - Fenetre_Afficher_cadre_creux(Pos_X,Pos_Y,(Largeur_en_caracteres<<3)+3,11); + Fenetre_Afficher_cadre_creux(x_pos,y_pos,(Largeur_en_caracteres<<3)+3,11); } @@ -1450,7 +1450,7 @@ void Fenetre_Effacer_bouton_saisie(T_Bouton_special * button) //------ Rajout d'un bouton à la liste de ceux présents dans la fenêtre ------ -T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, +T_Bouton_normal * Fenetre_Definir_bouton_normal(word x_pos, word y_pos, word width, word height, char * Titre, byte Lettre_soulignee, byte clickable, word Raccourci) @@ -1462,9 +1462,9 @@ T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, if (clickable) { Temp=(T_Bouton_normal *)malloc(sizeof(T_Bouton_normal)); - Temp->Numero =Nb_boutons_fenetre; - Temp->Pos_X =Pos_X; - Temp->Pos_Y =Pos_Y; + Temp->Number =Nb_boutons_fenetre; + Temp->Pos_X =x_pos; + Temp->Pos_Y =y_pos; Temp->Width =width; Temp->Height =height; Temp->Raccourci=Raccourci; @@ -1474,12 +1474,12 @@ T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, Fenetre_Liste_boutons_normal=Temp; } - Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,width,height,Titre,Lettre_soulignee,clickable); + Fenetre_Dessiner_bouton_normal(x_pos,y_pos,width,height,Titre,Lettre_soulignee,clickable); return Temp; } //------ Rajout d'un bouton à la liste de ceux présents dans la fenêtre ------ -T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, +T_Bouton_normal * Fenetre_Definir_bouton_repetable(word x_pos, word y_pos, word width, word height, char * Titre, byte Lettre_soulignee, byte clickable, word Raccourci) @@ -1491,9 +1491,9 @@ T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, if (clickable) { Temp=(T_Bouton_normal *)malloc(sizeof(T_Bouton_normal)); - Temp->Numero =Nb_boutons_fenetre; - Temp->Pos_X =Pos_X; - Temp->Pos_Y =Pos_Y; + Temp->Number =Nb_boutons_fenetre; + Temp->Pos_X =x_pos; + Temp->Pos_Y =y_pos; Temp->Width =width; Temp->Height =height; Temp->Raccourci=Raccourci; @@ -1503,28 +1503,28 @@ T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, Fenetre_Liste_boutons_normal=Temp; } - Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,width,height,Titre,Lettre_soulignee,clickable); + Fenetre_Dessiner_bouton_normal(x_pos,y_pos,width,height,Titre,Lettre_soulignee,clickable); return Temp; } -T_Bouton_palette * Fenetre_Definir_bouton_palette(word Pos_X, word Pos_Y) +T_Bouton_palette * Fenetre_Definir_bouton_palette(word x_pos, word y_pos) { T_Bouton_palette * Temp; Temp=(T_Bouton_palette *)malloc(sizeof(T_Bouton_palette)); - Temp->Numero =++Nb_boutons_fenetre; - Temp->Pos_X =Pos_X; - Temp->Pos_Y =Pos_Y; + Temp->Number =++Nb_boutons_fenetre; + Temp->Pos_X =x_pos; + Temp->Pos_Y =y_pos; Temp->Next=Fenetre_Liste_boutons_palette; Fenetre_Liste_boutons_palette=Temp; - Fenetre_Dessiner_bouton_palette(Pos_X,Pos_Y); + Fenetre_Dessiner_bouton_palette(x_pos,y_pos); return Temp; } -T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word Pos_X, word Pos_Y, +T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word x_pos, word y_pos, word height, word nb_elements, word nb_elements_visible, @@ -1533,9 +1533,9 @@ T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word Pos_X, word Pos_Y, T_Bouton_scroller * Temp; Temp=(T_Bouton_scroller *)malloc(sizeof(T_Bouton_scroller)); - Temp->Numero =++Nb_boutons_fenetre; - Temp->Pos_X =Pos_X; - Temp->Pos_Y =Pos_Y; + Temp->Number =++Nb_boutons_fenetre; + Temp->Pos_X =x_pos; + Temp->Pos_Y =y_pos; Temp->Height =height; Temp->Nb_elements =nb_elements; Temp->Nb_visibles =nb_elements_visible; @@ -1550,14 +1550,14 @@ T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word Pos_X, word Pos_Y, } -T_Bouton_special * Fenetre_Definir_bouton_special(word Pos_X,word Pos_Y,word width,word height) +T_Bouton_special * Fenetre_Definir_bouton_special(word x_pos,word y_pos,word width,word height) { T_Bouton_special * Temp; Temp=(T_Bouton_special *)malloc(sizeof(T_Bouton_special)); - Temp->Numero =++Nb_boutons_fenetre; - Temp->Pos_X =Pos_X; - Temp->Pos_Y =Pos_Y; + Temp->Number =++Nb_boutons_fenetre; + Temp->Pos_X =x_pos; + Temp->Pos_Y =y_pos; Temp->Width =width; Temp->Height =height; @@ -1567,22 +1567,22 @@ T_Bouton_special * Fenetre_Definir_bouton_special(word Pos_X,word Pos_Y,word wid } -T_Bouton_special * Fenetre_Definir_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres) +T_Bouton_special * Fenetre_Definir_bouton_saisie(word x_pos,word y_pos,word Largeur_en_caracteres) { T_Bouton_special *Temp; - Temp=Fenetre_Definir_bouton_special(Pos_X,Pos_Y,(Largeur_en_caracteres<<3)+3,11); - Fenetre_Dessiner_bouton_saisie(Pos_X,Pos_Y,Largeur_en_caracteres); + Temp=Fenetre_Definir_bouton_special(x_pos,y_pos,(Largeur_en_caracteres<<3)+3,11); + Fenetre_Dessiner_bouton_saisie(x_pos,y_pos,Largeur_en_caracteres); return Temp; } -T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word width,word height,word dropdown_width,char *label,byte display_choice,byte display_centered,byte display_arrow,byte active_button) +T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word x_pos,word y_pos,word width,word height,word dropdown_width,char *label,byte display_choice,byte display_centered,byte display_arrow,byte active_button) { T_Bouton_dropdown *Temp; Temp=(T_Bouton_dropdown *)malloc(sizeof(T_Bouton_dropdown)); - Temp->Numero =++Nb_boutons_fenetre; - Temp->Pos_X =Pos_X; - Temp->Pos_Y =Pos_Y; + Temp->Number =++Nb_boutons_fenetre; + Temp->Pos_X =x_pos; + Temp->Pos_Y =y_pos; Temp->Width =width; Temp->Height =height; Temp->Affiche_choix =display_choice; @@ -1594,7 +1594,7 @@ T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word w Temp->Next=Fenetre_Liste_boutons_dropdown; Fenetre_Liste_boutons_dropdown=Temp; - Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,width,height,"",-1,1); + Fenetre_Dessiner_bouton_normal(x_pos,y_pos,width,height,"",-1,1); if (label && label[0]) Print_dans_fenetre(Temp->Pos_X+2,Temp->Pos_Y+(Temp->Height-7)/2,label,CM_Noir,CM_Clair); if (display_arrow) @@ -1606,13 +1606,13 @@ T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word w // Ajoute un choix à une dropdown. Le libellé est seulement référencé, // il doit pointer sur une zone qui doit être encore valide à la fermeture // de la fenêtre (comprise). -void Fenetre_Dropdown_choix(T_Bouton_dropdown * dropdown, word Numero, const char *label) +void Fenetre_Dropdown_choix(T_Bouton_dropdown * dropdown, word btn_number, const char *label) { T_Dropdown_choix *Temp; T_Dropdown_choix *last; Temp=(T_Dropdown_choix *)malloc(sizeof(T_Dropdown_choix)); - Temp->Numero =Numero; + Temp->Number =btn_number; Temp->Label=label; Temp->Next=NULL; @@ -1644,7 +1644,7 @@ void Fenetre_Dropdown_vider_choix(T_Bouton_dropdown * dropdown) //----------------------- Ouverture d'un pop-up ----------------------- -void Ouvrir_popup(word Pos_X, word Pos_Y, word width,word height) +void Ouvrir_popup(word x_pos, word y_pos, word width,word height) // Lors de l'appel à cette procédure, la souris doit être affichée. // En sortie de cette procedure, la souris est effacée. @@ -1658,8 +1658,8 @@ void Ouvrir_popup(word Pos_X, word Pos_Y, word width,word height) Fenetre_Largeur=width; Fenetre_Hauteur=height; - Fenetre_Pos_X=Pos_X; - Fenetre_Pos_Y=Pos_Y; + Fenetre_Pos_X=x_pos; + Fenetre_Pos_Y=y_pos; // Sauvegarde de ce que la fenêtre remplace Sauve_fond(&(Fond_fenetre[Fenetre-1]), Fenetre_Pos_X, Fenetre_Pos_Y, width, height); @@ -1784,15 +1784,15 @@ void Fermer_popup(void) // -- Indique si on a cliqué dans une zone définie par deux points extremes -- byte Fenetre_click_dans_zone(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y) { - short Pos_X,Pos_Y; + short x_pos,y_pos; - Pos_X=((short)Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X; - Pos_Y=((short)Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y; + x_pos=((short)Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X; + y_pos=((short)Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y; - return ((Pos_X>=Debut_X) && - (Pos_Y>=Debut_Y) && - (Pos_X<=Fin_X) && - (Pos_Y<=Fin_Y)); + return ((x_pos>=Debut_X) && + (y_pos>=Debut_Y) && + (x_pos<=Fin_X) && + (y_pos<=Fin_Y)); } @@ -1920,7 +1920,7 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * click) strcat(Chaine," ("); sprintf(Chaine+strlen(Chaine),"%d",Principal_Palette[a].R); strcat(Chaine,","); - sprintf(Chaine+strlen(Chaine),"%d",Principal_Palette[a].V); + sprintf(Chaine+strlen(Chaine),"%d",Principal_Palette[a].G); strcat(Chaine,","); sprintf(Chaine+strlen(Chaine),"%d",Principal_Palette[a].B); strcat(Chaine,")"); @@ -2220,13 +2220,13 @@ short Fenetre_Dropdown_click(T_Bouton_dropdown *Bouton) { for(Choix=Bouton->Premier_choix; Indice_selectionne; Choix=Choix->Next,Indice_selectionne--) ; - Fenetre_Attribut2=Choix->Numero; + Fenetre_Attribut2=Choix->Number; if (Bouton->Affiche_choix) { // Mettre à jour automatiquement le libellé de la dropdown Print_dans_fenetre(Bouton->Pos_X+2,Bouton->Pos_Y+(Bouton->Height-7)/2,Choix->Label,CM_Noir,CM_Clair); } - return Bouton->Numero; + return Bouton->Number; } Fenetre_Attribut2=-1; return 0; @@ -2235,29 +2235,29 @@ short Fenetre_Dropdown_click(T_Bouton_dropdown *Bouton) // --- Fonction de clic sur un bouton a peu près ordinaire: // Attend que l'on relache le bouton, et renvoie le numero du bouton si on // est resté dessus, 0 si on a annulé en sortant du bouton. -short Fenetre_bouton_normal_click(word Pos_X, word Pos_Y, word width, word height, short Numero) +short Fenetre_bouton_normal_click(word x_pos, word y_pos, word width, word height, short btn_number) { while(1) { Effacer_curseur(); - Fenetre_Enfoncer_bouton_normal(Pos_X,Pos_Y,width,height); + Fenetre_Enfoncer_bouton_normal(x_pos,y_pos,width,height); Afficher_curseur(); - while (Fenetre_click_dans_zone(Pos_X,Pos_Y,Pos_X+width-1,Pos_Y+height-1)) + while (Fenetre_click_dans_zone(x_pos,y_pos,x_pos+width-1,y_pos+height-1)) { if(!Get_input()) Wait_VBL(); if (!Mouse_K) { Effacer_curseur(); - Fenetre_Desenfoncer_bouton_normal(Pos_X,Pos_Y,width,height); + Fenetre_Desenfoncer_bouton_normal(x_pos,y_pos,width,height); Afficher_curseur(); - return Numero; + return btn_number; } } Effacer_curseur(); - Fenetre_Desenfoncer_bouton_normal(Pos_X,Pos_Y,width,height); + Fenetre_Desenfoncer_bouton_normal(x_pos,y_pos,width,height); Afficher_curseur(); - while (!(Fenetre_click_dans_zone(Pos_X,Pos_Y,Pos_X+width-1,Pos_Y+height-1))) + while (!(Fenetre_click_dans_zone(x_pos,y_pos,x_pos+width-1,y_pos+height-1))) { if(!Get_input()) Wait_VBL(); @@ -2294,9 +2294,9 @@ short Fenetre_Numero_bouton_clicke(void) Effacer_curseur(); Fenetre_Desenfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Width,Temp1->Height); Afficher_curseur(); - return Temp1->Numero; + return Temp1->Number; } - return Fenetre_bouton_normal_click(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Width,Temp1->Height,Temp1->Numero); + return Fenetre_bouton_normal_click(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Width,Temp1->Height,Temp1->Number); } } @@ -2308,7 +2308,7 @@ short Fenetre_Numero_bouton_clicke(void) // On stocke dans Attribut2 le numero de couleur cliqué Fenetre_Attribut2 = (((Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X)-(Temp2->Pos_X+2)) / 10 * 16 + (((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-(Temp2->Pos_Y+3)) / 5; - return Temp2->Numero; + return Temp2->Number; } } @@ -2413,7 +2413,7 @@ short Fenetre_Numero_bouton_clicke(void) // des 3 parties importantes de la jauge Fenetre_Attribut1=0; - return (Fenetre_Attribut1)? Temp3->Numero : 0; + return (Fenetre_Attribut1)? Temp3->Number : 0; } } @@ -2421,7 +2421,7 @@ short Fenetre_Numero_bouton_clicke(void) for (Temp4=Fenetre_Liste_boutons_special; Temp4; Temp4=Temp4->Next) { if (Fenetre_click_dans_zone(Temp4->Pos_X,Temp4->Pos_Y,Temp4->Pos_X+Temp4->Width-1,Temp4->Pos_Y+Temp4->Height-1)) - return Temp4->Numero; + return Temp4->Number; } // Test du click sur une dropdown @@ -2434,7 +2434,7 @@ short Fenetre_Numero_bouton_clicke(void) else { Fenetre_Attribut2=-1; - return Fenetre_bouton_normal_click(Temp5->Pos_X,Temp5->Pos_Y,Temp5->Width,Temp5->Height,Temp5->Numero); + return Fenetre_bouton_normal_click(Temp5->Pos_X,Temp5->Pos_Y,Temp5->Width,Temp5->Height,Temp5->Number); } } } @@ -2468,7 +2468,7 @@ short Fenetre_Numero_bouton_touche(void) Fenetre_Desenfoncer_bouton_normal(Temp->Pos_X,Temp->Pos_Y,Temp->Width,Temp->Height); Afficher_curseur(); - return Temp->Numero; + return Temp->Number; } Temp=Temp->Next; } @@ -2482,7 +2482,7 @@ short Fenetre_Numero_bouton_touche(void) while (Temp!=NULL) { if (Temp->Raccourci==(Touche&0x0FFF)) - return Temp->Numero; + return Temp->Number; Temp=Temp->Next; } } diff --git a/moteur.h b/moteur.h index 4768007a..a1768c15 100644 --- a/moteur.h +++ b/moteur.h @@ -20,22 +20,22 @@ */ void Gestion_principale (void); -void Tracer_cadre_de_bouton_du_menu(byte Numero,byte Enfonce); -void Desenclencher_bouton (int Numero); -void Enclencher_bouton (int Numero,byte click); +void Tracer_cadre_de_bouton_du_menu(byte btn_number,byte Enfonce); +void Desenclencher_bouton (int btn_number); +void Enclencher_bouton (int btn_number,byte click); void Annuler_les_effets (void); void Restaurer_les_effets (void); void Ouvrir_fenetre (word width,word height, char * Titre); void Fermer_fenetre (void); -void Ouvrir_popup (word Pos_X, word Pos_Y, word width, word height); +void Ouvrir_popup (word x_pos, word y_pos, word width, word height); void Fermer_popup (void); -void Fenetre_Dessiner_bouton_normal(word Pos_X,word Pos_Y,word width,word height, +void Fenetre_Dessiner_bouton_normal(word x_pos,word y_pos,word width,word height, char * Titre,byte Lettre_soulignee,byte clickable); -void Fenetre_Enfoncer_bouton_normal(word Pos_X,word Pos_Y,word width,word height); -void Fenetre_Desenfoncer_bouton_normal(word Pos_X,word Pos_Y,word width,word height); -void Fenetre_Dessiner_bouton_palette(word Pos_X,word Pos_Y); +void Fenetre_Enfoncer_bouton_normal(word x_pos,word y_pos,word width,word height); +void Fenetre_Desenfoncer_bouton_normal(word x_pos,word y_pos,word width,word height); +void Fenetre_Dessiner_bouton_palette(word x_pos,word y_pos); void Calculer_hauteur_curseur_jauge(T_Bouton_scroller * button); void Fenetre_Dessiner_jauge(T_Bouton_scroller * button); @@ -43,30 +43,30 @@ void Fenetre_Dessiner_bouton_scroller(T_Bouton_scroller * button); void Fenetre_Contenu_bouton_saisie(T_Bouton_special * button, char * content); void Fenetre_Effacer_bouton_saisie(T_Bouton_special * button); -void Fenetre_Dessiner_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres); +void Fenetre_Dessiner_bouton_saisie(word x_pos,word y_pos,word Largeur_en_caracteres); -T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, +T_Bouton_normal * Fenetre_Definir_bouton_normal(word x_pos, word y_pos, word width, word height, char * Titre,byte Lettre_soulignee, byte clickable, word Raccourci); -T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, +T_Bouton_normal * Fenetre_Definir_bouton_repetable(word x_pos, word y_pos, word width, word height, char * Titre,byte Lettre_soulignee, byte clickable, word Raccourci); -T_Bouton_palette * Fenetre_Definir_bouton_palette(word Pos_X, word Pos_Y); +T_Bouton_palette * Fenetre_Definir_bouton_palette(word x_pos, word y_pos); void Fenetre_Effacer_tags(void); void Tagger_intervalle_palette(byte start,byte end); -T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word Pos_X, word Pos_Y, +T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word x_pos, word y_pos, word height, word nb_elements, word nb_elements_visible, word Position_initiale); -T_Bouton_special * Fenetre_Definir_bouton_special(word Pos_X,word Pos_Y,word width,word height); -T_Bouton_special * Fenetre_Definir_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres); -T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word width,word height,word dropdown_width,char *label,byte display_choice,byte display_centered,byte display_arrow,byte active_button); -void Fenetre_Dropdown_choix(T_Bouton_dropdown * dropdown, word Numero, const char *label); +T_Bouton_special * Fenetre_Definir_bouton_special(word x_pos,word y_pos,word width,word height); +T_Bouton_special * Fenetre_Definir_bouton_saisie(word x_pos,word y_pos,word Largeur_en_caracteres); +T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word x_pos,word y_pos,word width,word height,word dropdown_width,char *label,byte display_choice,byte display_centered,byte display_arrow,byte active_button); +void Fenetre_Dropdown_choix(T_Bouton_dropdown * dropdown, word btn_number, const char *label); void Fenetre_Dropdown_vider_choix(T_Bouton_dropdown * dropdown); byte Fenetre_click_dans_zone(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y); short Attendre_click_dans_palette(T_Bouton_palette * button); @@ -76,4 +76,4 @@ short Fenetre_Bouton_clicke(void); int Numero_bouton_sous_souris(void); short Fenetre_Numero_bouton_clicke(void); void Remappe_fond_fenetres(byte * Table_de_conversion, int Min_Y, int Max_Y); -void Pixel_fond(int Pos_X, int Pos_Y, byte Couleur); +void Pixel_fond(int x_pos, int y_pos, byte Couleur); diff --git a/op_c.c b/op_c.c index fdd61c9d..376787d3 100644 --- a/op_c.c +++ b/op_c.c @@ -214,26 +214,26 @@ void TC_Delete(Table_conversion * t) free(t); } -byte TC_Get(Table_conversion * t,int r,int v,int b) +byte TC_Get(Table_conversion * t,int r,int g,int b) { int index; // On réduit le nombre de bits par couleur r=(r>>t->red_r); - v=(v>>t->red_v); + g=(g>>t->red_v); b=(b>>t->red_b); // On recherche la couleur la plus proche dans la table de conversion - index=(r<dec_r) | (v<dec_v) | (b<dec_b); + index=(r<dec_r) | (g<dec_v) | (b<dec_b); return t->table[index]; } -void TC_Set(Table_conversion * t,int r,int v,int b,byte i) +void TC_Set(Table_conversion * t,int r,int g,int b,byte i) { int index; - index=(r<dec_r) | (v<dec_v) | (b<dec_b); + index=(r<dec_r) | (g<dec_v) | (b<dec_b); t->table[index]=i; } @@ -298,33 +298,33 @@ void TO_Delete(Table_occurence * t) free(t); } -int TO_Get(Table_occurence * t,int r,int v,int b) +int TO_Get(Table_occurence * t,int r,int g,int b) { int index; - index=(r<dec_r) | (v<dec_v) | (b<dec_b); + index=(r<dec_r) | (g<dec_v) | (b<dec_b); return t->table[index]; } -void TO_Set(Table_occurence * t,int r,int v,int b,int i) +void TO_Set(Table_occurence * t,int r,int g,int b,int i) { int index; r=(r>>t->red_r); - v=(v>>t->red_v); + g=(g>>t->red_v); b=(b>>t->red_b); - index=(r<dec_r) | (v<dec_v) | (b<dec_b); + index=(r<dec_r) | (g<dec_v) | (b<dec_b); t->table[index]=i; } -void TO_Inc(Table_occurence * t,int r,int v,int b) +void TO_Inc(Table_occurence * t,int r,int g,int b) { int index; r=(r>>t->red_r); - v=(v>>t->red_v); + g=(g>>t->red_v); b=(b>>t->red_b); - index=(r<dec_r) | (v<dec_v) | (b<dec_b); + index=(r<dec_r) | (g<dec_v) | (b<dec_b); t->table[index]++; } @@ -334,7 +334,7 @@ void TO_Compter_occurences(Table_occurence * t,Bitmap24B image,int Taille) int index; for (index=Taille,ptr=image;index>0;index--,ptr++) - TO_Inc(t,ptr->R,ptr->V,ptr->B); + TO_Inc(t,ptr->R,ptr->G,ptr->B); } int TO_Compter_couleurs(Table_occurence * t) @@ -361,7 +361,7 @@ int TO_Compter_couleurs(Table_occurence * t) void Cluster_Analyser(Cluster * c,Table_occurence * to) { int rmin,rmax,vmin,vmax,bmin,bmax; - int r,v,b; + int r,g,b; // On cherche les mins et les maxs de chaque composante sur la couverture @@ -374,16 +374,16 @@ void Cluster_Analyser(Cluster * c,Table_occurence * to) c->occurences=0; /* for (r=c->rmin<<16;r<=c->rmax<<16;r+=1<<16) - for (v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for (g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) for (b=c->bmin;b<=c->bmax;b++) { - nbocc=to->table[r + v + b]; // TO_Get + nbocc=to->table[r + g + b]; // TO_Get if (nbocc) { if (rrmax) rmax=r; - if (vvmax) vmax=v; + if (gvmax) vmax=g; if (bbmax) bmax=b; c->occurences+=nbocc; @@ -396,10 +396,10 @@ void Cluster_Analyser(Cluster * c,Table_occurence * to) // précédente puisqu'on connait une borne supplémentaire for(r=c->rmin<<16;r<=c->rmax<<16;r+=1<<16) - for(v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for(g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) for(b=c->bmin;b<=c->bmax;b++) { - if(to->table[r + v + b]) // TO_Get + if(to->table[r + g + b]) // TO_Get { rmin=r; goto RMAX; @@ -407,43 +407,43 @@ void Cluster_Analyser(Cluster * c,Table_occurence * to) } RMAX: for(r=c->rmax<<16;r>=rmin;r-=1<<16) - for(v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for(g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) for(b=c->bmin;b<=c->bmax;b++) { - if(to->table[r + v + b]) // TO_Get + if(to->table[r + g + b]) // TO_Get { rmax=r; goto VMIN; } } VMIN: - for(v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for(g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) for(r=rmin;r<=rmax;r+=1<<16) for(b=c->bmin;b<=c->bmax;b++) { - if(to->table[r + v + b]) // TO_Get + if(to->table[r + g + b]) // TO_Get { - vmin=v; + vmin=g; goto VMAX; } } VMAX: - for(v=c->vmax<<8;v>=vmin;v-=1<<8) + for(g=c->vmax<<8;g>=vmin;g-=1<<8) for(r=rmin;r<=rmax;r+=1<<16) for(b=c->bmin;b<=c->bmax;b++) { - if(to->table[r + v + b]) // TO_Get + if(to->table[r + g + b]) // TO_Get { - vmax=v; + vmax=g; goto BMIN; } } BMIN: for(b=c->bmin;b<=c->bmax;b++) for(r=rmin;r<=rmax;r+=1<<16) - for(v=vmin;v<=vmax;v+=1<<8) + for(g=vmin;g<=vmax;g+=1<<8) { - if(to->table[r + v + b]) // TO_Get + if(to->table[r + g + b]) // TO_Get { bmin=b; goto BMAX; @@ -452,9 +452,9 @@ BMIN: BMAX: for(b=c->bmax;b>=bmin;b--) for(r=rmin;r<=rmax;r+=1<<16) - for(v=vmin;v<=vmax;v+=1<<8) + for(g=vmin;g<=vmax;g+=1<<8) { - if(to->table[r + v + b]) // TO_Get + if(to->table[r + g + b]) // TO_Get { bmax=b; goto ENDCRUSH; @@ -463,10 +463,10 @@ BMAX: ENDCRUSH: // Il faut quand même parcourir la partie utile du cluster, pour savoir combien il y a d'occurences for(r=rmin;r<=rmax;r+=1<<16) - for(v=vmin;v<=vmax;v+=1<<8) + for(g=vmin;g<=vmax;g+=1<<8) for(b=bmin;b<=bmax;b++) { - c->occurences+=to->table[r + v + b]; // TO_Get + c->occurences+=to->table[r + g + b]; // TO_Get } c->rmin=rmin>>16; c->rmax=rmax>>16; @@ -475,34 +475,34 @@ ENDCRUSH: // On regarde la composante qui a la variation la plus grande r=(c->rmax-c->rmin)*299; - v=(c->vmax-c->vmin)*587; + g=(c->vmax-c->vmin)*587; b=(c->bmax-c->bmin)*114; - if (v>=r) + if (g>=r) { - // V>=R - if (v>=b) + // G>=R + if (g>=b) { - // V>=R et V>=B + // G>=R et G>=B c->plus_large=1; } else { - // V>=R et V=R et Gplus_large=2; } } else { - // R>V + // R>G if (r>=b) { - // R>V et R>=B + // R>G et R>=B c->plus_large=0; } else { - // R>V et RG et Rplus_large=2; } } @@ -512,7 +512,7 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure { int limit; int cumul; - int r,v,b; + int r,g,b; limit=(c->occurences)/2; cumul=0; @@ -520,11 +520,11 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure { for (r=c->rmin<<16;r<=c->rmax<<16;r+=1<<16) { - for (v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for (g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) { for (b=c->bmin;b<=c->bmax;b++) { - cumul+=to->table[r + v + b]; + cumul+=to->table[r + g + b]; if (cumul>=limit) break; } @@ -536,7 +536,7 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure } r>>=16; - v>>=8; + g>>=8; if (r==c->rmin) r++; @@ -559,13 +559,13 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure if (Teinte==1) { - for (v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for (g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) { for (r=c->rmin<<16;r<=c->rmax<<16;r+=1<<16) { for (b=c->bmin;b<=c->bmax;b++) { - cumul+=to->table[r + v + b]; + cumul+=to->table[r + g + b]; if (cumul>=limit) break; } @@ -576,22 +576,22 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure break; } - r>>=16; v>>=8; + r>>=16; g>>=8; - if (v==c->vmin) - v++; - // V est la valeur de d‚but du 2nd cluster + if (g==c->vmin) + g++; + // G est la valeur de d‚but du 2nd cluster c1->Rmin=c->Rmin; c1->Rmax=c->Rmax; c1->rmin=c->rmin; c1->rmax=c->rmax; - c1->Vmin=c->Vmin; c1->Vmax=v-1; - c1->vmin=c->vmin; c1->vmax=v-1; + c1->Vmin=c->Vmin; c1->Vmax=g-1; + c1->vmin=c->vmin; c1->vmax=g-1; c1->Bmin=c->Bmin; c1->Bmax=c->Bmax; c1->bmin=c->bmin; c1->bmax=c->bmax; c2->Rmin=c->Rmin; c2->Rmax=c->Rmax; c2->rmin=c->rmin; c2->rmax=c->rmax; - c2->Vmin=v; c2->Vmax=c->Vmax; - c2->vmin=v; c2->vmax=c->vmax; + c2->Vmin=g; c2->Vmax=c->Vmax; + c2->vmin=g; c2->vmax=c->vmax; c2->Bmin=c->Bmin; c2->Bmax=c->Bmax; c2->bmin=c->bmin; c2->bmax=c->bmax; } @@ -600,11 +600,11 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure for (b=c->bmin;b<=c->bmax;b++) { - for (v=c->vmin<<8;v<=c->vmax<<8;v+=1<<8) + for (g=c->vmin<<8;g<=c->vmax<<8;g+=1<<8) { for (r=c->rmin<<16;r<=c->rmax<<16;r+=1<<16) { - cumul+=to->table[r + v + b]; + cumul+=to->table[r + g + b]; if (cumul>=limit) break; } @@ -615,7 +615,7 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure break; } - r>>=16; v>>=8; + r>>=16; g>>=8; if (b==c->bmin) b++; @@ -639,29 +639,29 @@ void Cluster_Split(Cluster * c,Cluster * c1,Cluster * c2,int Teinte,Table_occure void Cluster_Calculer_teinte(Cluster * c,Table_occurence * to) { int cumulR,cumulV,cumulB; - int r,v,b; + int r,g,b; int nbocc; byte s=0; cumulR=cumulV=cumulB=0; for (r=c->rmin;r<=c->rmax;r++) - for (v=c->vmin;v<=c->vmax;v++) + for (g=c->vmin;g<=c->vmax;g++) for (b=c->bmin;b<=c->bmax;b++) { - nbocc=TO_Get(to,r,v,b); + nbocc=TO_Get(to,r,g,b); if (nbocc) { cumulR+=r*nbocc; - cumulV+=v*nbocc; + cumulV+=g*nbocc; cumulB+=b*nbocc; } } c->r=(cumulR<red_r)/c->occurences; - c->v=(cumulV<red_v)/c->occurences; + c->g=(cumulV<red_v)/c->occurences; c->b=(cumulB<red_b)/c->occurences; - RGBtoHSL(c->r,c->v,c->b,&c->h,&s,&c->l); + RGBtoHSL(c->r,c->g,c->b,&c->h,&s,&c->l); } @@ -780,9 +780,9 @@ void CS_Set(ClusterSet * cs,Cluster * c) } // Détermination de la meilleure palette en utilisant l'algo Median Cut : -// 1) On considère l'espace (R,V,B) comme 1 boîte -// 2) On cherche les extrêmes de la boîte en (R,V,B) -// 3) On trie les pixels de l'image selon l'axe le plus long parmi (R,V,B) +// 1) On considère l'espace (R,G,B) comme 1 boîte +// 2) On cherche les extrêmes de la boîte en (R,G,B) +// 3) On trie les pixels de l'image selon l'axe le plus long parmi (R,G,B) // 4) On coupe la boîte en deux au milieu, et on compacte pour que chaque bord corresponde bien à un pixel extreme // 5) On recommence à couper selon le plus grand axe toutes boîtes confondues // 6) On s'arrête quand on a le nombre de couleurs voulu @@ -893,18 +893,18 @@ void CS_Trier_par_luminance(ClusterSet * cs) void CS_Generer_TC_et_Palette(ClusterSet * cs,Table_conversion * tc,Composantes * palette) { int index; - int r,v,b; + int r,g,b; for (index=0;indexnb;index++) { palette[index].R=cs->clusters[index].r; - palette[index].V=cs->clusters[index].v; + palette[index].G=cs->clusters[index].g; palette[index].B=cs->clusters[index].b; for (r=cs->clusters[index].Rmin;r<=cs->clusters[index].Rmax;r++) - for (v=cs->clusters[index].Vmin;v<=cs->clusters[index].Vmax;v++) + for (g=cs->clusters[index].Vmin;g<=cs->clusters[index].Vmax;g++) for (b=cs->clusters[index].Bmin;b<=cs->clusters[index].Bmax;b++) - TC_Set(tc,r,v,b,index); + TC_Set(tc,r,g,b,index); } } @@ -1012,7 +1012,7 @@ void DS_Generer(DegradeSet * ds,ClusterSet * cs) -Table_conversion * Optimiser_palette(Bitmap24B image,int Taille,Composantes * palette,int r,int v,int b) +Table_conversion * Optimiser_palette(Bitmap24B image,int Taille,Composantes * palette,int r,int g,int b) { Table_occurence * to; Table_conversion * tc; @@ -1022,10 +1022,10 @@ Table_conversion * Optimiser_palette(Bitmap24B image,int Taille,Composantes * pa // Création des éléments nécessaires au calcul de palette optimisée: to=0; tc=0; cs=0; ds=0; - to=TO_New(r,v,b); + to=TO_New(r,g,b); if (to!=0) { - tc=TC_New(r,v,b); + tc=TC_New(r,g,b); if (tc!=0) { @@ -1095,7 +1095,7 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i Bitmap24B Suivant; Bitmap24B S_plus1; Bitmap256 d; - int Pos_X,Pos_Y; + int x_pos,y_pos; int Rouge,Vert,Bleu; float ERouge,EVert,EBleu; @@ -1108,21 +1108,21 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i d =Dest; // On parcours chaque pixel: - for (Pos_Y=0;Pos_YR; - Vert =Courant->V; + Vert =Courant->G; Bleu =Courant->B; // Cherche la couleur correspondant dans la palette et la range dans l'image de destination *d=TC_Get(tc,Rouge,Vert,Bleu); // Puis on calcule pour chaque composante l'erreur dûe à l'approximation Rouge-=palette[*d].R; - Vert -=palette[*d].V; + Vert -=palette[*d].G; Bleu -=palette[*d].B; // Et dans chaque pixel voisin on propage l'erreur @@ -1130,23 +1130,23 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i ERouge=(Rouge*7)/16.0; EVert =(Vert *7)/16.0; EBleu =(Bleu *7)/16.0; - if (Pos_X+1R=Valeur_modifiee(C_plus1->R,ERouge); - C_plus1->V=Valeur_modifiee(C_plus1->V,EVert ); + C_plus1->G=Valeur_modifiee(C_plus1->G,EVert ); C_plus1->B=Valeur_modifiee(C_plus1->B,EBleu ); } // En bas à gauche: - if (Pos_Y+10) + if (x_pos>0) { S_moins1->R=Valeur_modifiee(S_moins1->R,ERouge); - S_moins1->V=Valeur_modifiee(S_moins1->V,EVert ); + S_moins1->G=Valeur_modifiee(S_moins1->G,EVert ); S_moins1->B=Valeur_modifiee(S_moins1->B,EBleu ); } // En bas: @@ -1154,16 +1154,16 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i EVert =(Vert*5 /16.0); EBleu =(Bleu*5 /16.0); Suivant->R=Valeur_modifiee(Suivant->R,ERouge); - Suivant->V=Valeur_modifiee(Suivant->V,EVert ); + Suivant->G=Valeur_modifiee(Suivant->G,EVert ); Suivant->B=Valeur_modifiee(Suivant->B,EBleu ); // En bas à droite: - if (Pos_X+1R=Valeur_modifiee(S_plus1->R,ERouge); - S_plus1->V=Valeur_modifiee(S_plus1->V,EVert ); + S_plus1->G=Valeur_modifiee(S_plus1->G,EVert ); S_plus1->B=Valeur_modifiee(S_plus1->B,EBleu ); } } diff --git a/op_c.h b/op_c.h index d941bd19..46ac2b98 100644 --- a/op_c.h +++ b/op_c.h @@ -97,7 +97,7 @@ typedef struct byte bmin,bmax; byte plus_large; // Composante ayant la plus grande variation (0=Rouge,1=Vert,2=Bleu) - byte r,v,b; // Couleur synthétisant l'ensemble + byte r,g,b; // Couleur synthétisant l'ensemble byte h; // Chrominance byte l; // Luminosité } Cluster; @@ -144,10 +144,10 @@ typedef struct Table_conversion * TC_New(int nbb_r,int nbb_g,int nbb_b); void TC_Delete(Table_conversion * t); -byte TC_Get(Table_conversion * t,int r,int v,int b); -void TC_Set(Table_conversion * t,int r,int v,int b,byte i); +byte TC_Get(Table_conversion * t,int r,int g,int b); +void TC_Set(Table_conversion * t,int r,int g,int b,byte i); -void RGBtoHSL(int r, int v,int b, byte* h, byte*s, byte* l); +void RGBtoHSL(int r, int g,int b, byte* h, byte*s, byte* l); void HSLtoRGB(byte h, byte s, byte l, byte* r, byte* g, byte* b); @@ -158,9 +158,9 @@ void HSLtoRGB(byte h, byte s, byte l, byte* r, byte* g, byte* b); void TO_Init(Table_occurence * t); Table_occurence * TO_New(int nbb_r,int nbb_g,int nbb_b); void TO_Delete(Table_occurence * t); -int TO_Get(Table_occurence * t,int r,int v,int b); -void TO_Set(Table_occurence * t,int r,int v,int b,int i); -void TO_Inc(Table_occurence * t,int r,int v,int b); +int TO_Get(Table_occurence * t,int r,int g,int b); +void TO_Set(Table_occurence * t,int r,int g,int b,int i); +void TO_Inc(Table_occurence * t,int r,int g,int b); void TO_Compter_occurences(Table_occurence * t,Bitmap24B image,int Taille); diff --git a/operatio.c b/operatio.c index 75e1e74f..3e21e855 100644 --- a/operatio.c +++ b/operatio.c @@ -1521,48 +1521,48 @@ void Pipette_0_1(void) /////////////////////////////////////////////////// OPERATION_COURBE_4_POINTS -void Courbe_Tracer_croix(short Pos_X, short Pos_Y) +void Courbe_Tracer_croix(short x_pos, short y_pos) { short Debut_X,Fin_X; short Debut_Y,Fin_Y; short i,Temp; //byte Temp2; - if (Pos_X>=Limite_Gauche+3) + if (x_pos>=Limite_Gauche+3) Debut_X=0; else - Debut_X=3-(Pos_X-Limite_Gauche); + Debut_X=3-(x_pos-Limite_Gauche); - if (Pos_Y>=Limite_Haut+3) + if (y_pos>=Limite_Haut+3) Debut_Y=0; else - Debut_Y=3-(Pos_Y-Limite_Haut); + Debut_Y=3-(y_pos-Limite_Haut); - if (Pos_X<=Limite_visible_Droite-3) + if (x_pos<=Limite_visible_Droite-3) Fin_X=6; else - Fin_X=3+(Limite_visible_Droite-Pos_X); + Fin_X=3+(Limite_visible_Droite-x_pos); - if (Pos_Y<=Limite_visible_Bas-3) + if (y_pos<=Limite_visible_Bas-3) Fin_Y=6; else - Fin_Y=3+(Limite_visible_Bas-Pos_Y); + Fin_Y=3+(Limite_visible_Bas-y_pos); if (Debut_X<=Fin_X && Debut_Y<=Fin_Y) { for (i=Debut_X; i<=Fin_X; i++) { - Temp=Pos_X+i-3; - Pixel_Preview(Temp,Pos_Y,~Lit_pixel(Temp -Principal_Decalage_X, - Pos_Y-Principal_Decalage_Y)); + Temp=x_pos+i-3; + Pixel_Preview(Temp,y_pos,~Lit_pixel(Temp -Principal_Decalage_X, + y_pos-Principal_Decalage_Y)); } for (i=Debut_Y; i<=Fin_Y; i++) { - Temp=Pos_Y+i-3; - Pixel_Preview(Pos_X,Temp,~Lit_pixel(Pos_X-Principal_Decalage_X, + Temp=y_pos+i-3; + Pixel_Preview(x_pos,Temp,~Lit_pixel(x_pos-Principal_Decalage_X, Temp -Principal_Decalage_Y)); } - Mettre_Ecran_A_Jour(Pos_X+Debut_X-3,Pos_Y+Debut_Y-3,Fin_X-Debut_X+1,Fin_Y-Debut_Y+1); + Mettre_Ecran_A_Jour(x_pos+Debut_X-3,y_pos+Debut_Y-3,Fin_X-Debut_X+1,Fin_Y-Debut_Y+1); } } @@ -3715,18 +3715,18 @@ void Scroll_12_4(void) { short Centre_X; short Centre_Y; - short Pos_X; - short Pos_Y; + short x_pos; + short y_pos; short x_offset; short y_offset; //char Chaine[5]; - Operation_POP(&Pos_Y); - Operation_POP(&Pos_X); + Operation_POP(&y_pos); + Operation_POP(&x_pos); Operation_POP(&Centre_Y); Operation_POP(&Centre_X); - if ( (Pinceau_X!=Pos_X) || (Pinceau_Y!=Pos_Y) ) + if ( (Pinceau_X!=x_pos) || (Pinceau_Y!=y_pos) ) { // L'utilisateur a bougé, il faut scroller l'image diff --git a/pages.c b/pages.c index 119062d6..d8db9802 100644 --- a/pages.c +++ b/pages.c @@ -49,7 +49,7 @@ void Initialiser_S_Page(S_Page * Page) memset(Page->Palette,0,sizeof(T_Palette)); Page->Commentaire[0]='\0'; Page->Repertoire_fichier[0]='\0'; - Page->Nom_fichier[0]='\0'; + Page->Filename[0]='\0'; Page->Format_fichier=FORMAT_PAR_DEFAUT; /* Page->Decalage_X=0; @@ -86,7 +86,7 @@ void Download_infos_page_principal(S_Page * Page) memcpy(Principal_Palette,Page->Palette,sizeof(T_Palette)); strcpy(Principal_Commentaire,Page->Commentaire); strcpy(Principal_Repertoire_fichier,Page->Repertoire_fichier); - strcpy(Principal_Nom_fichier,Page->Nom_fichier); + strcpy(Principal_Nom_fichier,Page->Filename); Principal_Format_fichier=Page->Format_fichier; /* Principal_Decalage_X=Page->Decalage_X; @@ -140,7 +140,7 @@ void Upload_infos_page_principal(S_Page * Page) memcpy(Page->Palette,Principal_Palette,sizeof(T_Palette)); strcpy(Page->Commentaire,Principal_Commentaire); strcpy(Page->Repertoire_fichier,Principal_Repertoire_fichier); - strcpy(Page->Nom_fichier,Principal_Nom_fichier); + strcpy(Page->Filename,Principal_Nom_fichier); Page->Format_fichier=Principal_Format_fichier; /* Page->Decalage_X=Principal_Decalage_X; @@ -170,7 +170,7 @@ void Download_infos_page_brouillon(S_Page * Page) memcpy(Brouillon_Palette,Page->Palette,sizeof(T_Palette)); strcpy(Brouillon_Commentaire,Page->Commentaire); strcpy(Brouillon_Repertoire_fichier,Page->Repertoire_fichier); - strcpy(Brouillon_Nom_fichier,Page->Nom_fichier); + strcpy(Brouillon_Nom_fichier,Page->Filename); Brouillon_Format_fichier=Page->Format_fichier; /* Brouillon_Decalage_X=Page->Decalage_X; @@ -200,7 +200,7 @@ void Upload_infos_page_brouillon(S_Page * Page) memcpy(Page->Palette,Brouillon_Palette,sizeof(T_Palette)); strcpy(Page->Commentaire,Brouillon_Commentaire); strcpy(Page->Repertoire_fichier,Brouillon_Repertoire_fichier); - strcpy(Page->Nom_fichier,Brouillon_Nom_fichier); + strcpy(Page->Filename,Brouillon_Nom_fichier); Page->Format_fichier=Brouillon_Format_fichier; /* Page->Decalage_X=Brouillon_Decalage_X; @@ -749,14 +749,14 @@ void Detruire_les_listes_de_backups_en_fin_de_programme(void) free(Brouillon_Backups); } -void Nouveau_nombre_de_backups(int Nouveau) +void Nouveau_nombre_de_backups(int nb_backups) { - Changer_nombre_de_pages_d_une_liste(Principal_Backups,Nouveau+1); - Changer_nombre_de_pages_d_une_liste(Brouillon_Backups,Nouveau+1); + Changer_nombre_de_pages_d_une_liste(Principal_Backups,nb_backups+1); + Changer_nombre_de_pages_d_une_liste(Brouillon_Backups,nb_backups+1); // Le +1 vient du fait que dans chaque liste, en 1ère position on retrouve // les infos de la page courante sur le brouillon et la page principale. - // (Nouveau = Nombre de backups, sans compter les pages courantes) + // (nb_backups = Nombre de backups, sans compter les pages courantes) } int Backup_avec_nouvelles_dimensions(int Upload,int width,int height) diff --git a/pages.h b/pages.h index 8cb33484..6e8b510a 100644 --- a/pages.h +++ b/pages.h @@ -68,7 +68,7 @@ void Detruire_la_page_courante_d_une_liste(S_Liste_de_pages * list); int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int width,int height); void Detruire_les_listes_de_backups_en_fin_de_programme(void); -void Nouveau_nombre_de_backups(int Nouveau); +void Nouveau_nombre_de_backups(int nb_backups); int Backup_avec_nouvelles_dimensions(int Upload,int width,int height); int Backuper_et_redimensionner_brouillon(int width,int height); void Backup(void); diff --git a/palette.c b/palette.c index ceee61fa..3146b465 100644 --- a/palette.c +++ b/palette.c @@ -82,7 +82,7 @@ void Unite_Composantes(int Count) void Modifier_HSL(T_Palette Palette_depart, T_Palette Palette_arrivee, byte Couleur, short Difference_H, short Difference_S, short Difference_L) { byte h, S, l; - RGBtoHSL(Palette_depart[Couleur].R,Palette_depart[Couleur].V,Palette_depart[Couleur].B,&h,&S,&l); + RGBtoHSL(Palette_depart[Couleur].R,Palette_depart[Couleur].G,Palette_depart[Couleur].B,&h,&S,&l); // La teinte (Hue) est cyclique h=(Difference_H+256+h); // Pour les autres (Saturation, Lightness), au lieu d'additionner, @@ -95,10 +95,10 @@ void Modifier_HSL(T_Palette Palette_depart, T_Palette Palette_arrivee, byte Coul l=(255+Difference_L)*l/255; else if (Difference_L>0) l=255-(255-Difference_L)*(255-l)/255; - HSLtoRGB(h,S,l,&Palette_arrivee[Couleur].R,&Palette_arrivee[Couleur].V,&Palette_arrivee[Couleur].B); + HSLtoRGB(h,S,l,&Palette_arrivee[Couleur].R,&Palette_arrivee[Couleur].G,&Palette_arrivee[Couleur].B); } -void Modifier_Rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette) +void Modifier_Rouge(byte Couleur, short Nouvelle_teinte, T_Palette palette) { if (Nouvelle_teinte< 0) Nouvelle_teinte= 0; @@ -107,12 +107,12 @@ void Modifier_Rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette) // Arrondi Nouvelle_teinte=Palette_Scale_Component(Nouvelle_teinte); - Palette[Couleur].R=Nouvelle_teinte; - Set_color(Couleur,Palette[Couleur].R,Palette[Couleur].V,Palette[Couleur].B); + palette[Couleur].R=Nouvelle_teinte; + Set_color(Couleur,palette[Couleur].R,palette[Couleur].G,palette[Couleur].B); } -void Modifier_Vert(byte Couleur, short Nouvelle_teinte, T_Palette Palette) +void Modifier_Vert(byte Couleur, short Nouvelle_teinte, T_Palette palette) { if (Nouvelle_teinte< 0) Nouvelle_teinte= 0; @@ -121,12 +121,12 @@ void Modifier_Vert(byte Couleur, short Nouvelle_teinte, T_Palette Palette) // Arrondi Nouvelle_teinte=Palette_Scale_Component(Nouvelle_teinte); - Palette[Couleur].V=Nouvelle_teinte; - Set_color(Couleur,Palette[Couleur].R,Palette[Couleur].V,Palette[Couleur].B); + palette[Couleur].G=Nouvelle_teinte; + Set_color(Couleur,palette[Couleur].R,palette[Couleur].G,palette[Couleur].B); } -void Modifier_Bleu(byte Couleur, short Nouvelle_teinte, T_Palette Palette) +void Modifier_Bleu(byte Couleur, short Nouvelle_teinte, T_Palette palette) { if (Nouvelle_teinte< 0) Nouvelle_teinte= 0; @@ -135,8 +135,8 @@ void Modifier_Bleu(byte Couleur, short Nouvelle_teinte, T_Palette Palette) // Arrondi Nouvelle_teinte=Palette_Scale_Component(Nouvelle_teinte); - Palette[Couleur].B=Nouvelle_teinte; - Set_color(Couleur,Palette[Couleur].R,Palette[Couleur].V,Palette[Couleur].B); + palette[Couleur].B=Nouvelle_teinte; + Set_color(Couleur,palette[Couleur].R,palette[Couleur].G,palette[Couleur].B); } void Formate_composante(byte Valeur, char *Chaine) @@ -147,7 +147,7 @@ void Formate_composante(byte Valeur, char *Chaine) Chaine[4]='\0'; } -void Degrader_palette(short start,short end,T_Palette Palette) +void Degrader_palette(short start,short end,T_Palette palette) // Modifie la palette pour obtenir un dégradé de couleur entre les deux bornes // passées en paramètre { @@ -163,19 +163,19 @@ void Degrader_palette(short start,short end,T_Palette Palette) // pouvoir faire un dégradé: if ( (start!=end) && (start+1!=end) ) { - Debut_Rouge=Palette[start].R; - Debut_Vert =Palette[start].V; - Debut_Bleu =Palette[start].B; + Debut_Rouge=palette[start].R; + Debut_Vert =palette[start].G; + Debut_Bleu =palette[start].B; - Fin_Rouge =Palette[end ].R; - Fin_Vert =Palette[end ].V; - Fin_Bleu =Palette[end ].B; + Fin_Rouge =palette[end ].R; + Fin_Vert =palette[end ].G; + Fin_Bleu =palette[end ].B; for (Indice=start+1;Indice=Fenetre_Pos_Y) && (Pos_Y=Fenetre_Pos_X) && (Pos_X=Fenetre_Pos_Y) && (y_pos=Fenetre_Pos_X) && (x_posNb_elements=nb_elements; - slider->Position=Position; + slider->Position=position; Calculer_hauteur_curseur_jauge(slider); Fenetre_Dessiner_jauge(slider); - Print_compteur(Pos_X,172,Valeur,CM_Noir,CM_Clair); + Print_compteur(x_pos,172,Valeur,CM_Noir,CM_Clair); } @@ -656,7 +656,7 @@ void Palette_Modifier_jauge(T_Bouton_scroller * slider, void Afficher_les_jauges(T_Bouton_scroller * Jauge_rouge, T_Bouton_scroller * Jauge_verte, T_Bouton_scroller * Jauge_bleue, - byte Bloc_selectionne, Composantes * Palette) + byte Bloc_selectionne, Composantes * palette) { char Chaine[5]; @@ -669,9 +669,9 @@ void Afficher_les_jauges(T_Bouton_scroller * Jauge_rouge, else { byte j1, j2, j3; - j1= Palette[Fore_color].R; - j2= Palette[Fore_color].V; - j3= Palette[Fore_color].B; + j1= palette[Fore_color].R; + j2= palette[Fore_color].G; + j3= palette[Fore_color].B; if (!Palette_mode_RGB) { RGBtoHSL(j1,j2,j3,&j1,&j2,&j3); @@ -691,7 +691,7 @@ void Afficher_les_jauges(T_Bouton_scroller * Jauge_rouge, void Palette_Reafficher_jauges(T_Bouton_scroller * Jauge_rouge, T_Bouton_scroller * Jauge_verte, T_Bouton_scroller * Jauge_bleue, - T_Palette Palette,byte start,byte end) + T_Palette palette,byte start,byte end) { char Chaine[5]; @@ -716,9 +716,9 @@ void Palette_Reafficher_jauges(T_Bouton_scroller * Jauge_rouge, { // Dans le cas d'une seule couleur, composantes. byte j1, j2, j3; - j1= Palette[start].R; - j2= Palette[start].V; - j3= Palette[start].B; + j1= palette[start].R; + j2= palette[start].G; + j3= palette[start].B; if (!Palette_mode_RGB) { RGBtoHSL(j1,j2,j3,&j1,&j2,&j3); @@ -759,7 +759,7 @@ void Bouton_Palette(void) byte Derniere_couleur; char Chaine[10]; word i; - //short Pos_X,Pos_Y; + //short x_pos,y_pos; T_Bouton_normal * Bouton_Used; T_Bouton_scroller * Jauge_rouge; T_Bouton_scroller * Jauge_verte; @@ -782,7 +782,7 @@ void Bouton_Palette(void) Unite_Composantes(Graduations_RGB); - Ouvrir_fenetre(299,188,"Palette"); + Ouvrir_fenetre(299,188,"palette"); memcpy(Palette_de_travail,Principal_Palette,sizeof(T_Palette)); memcpy(Palette_backup ,Principal_Palette,sizeof(T_Palette)); @@ -809,7 +809,7 @@ void Bouton_Palette(void) // Jauges de couleur Palette_mode_RGB=1; Jauge_rouge = Fenetre_Definir_bouton_scroller(182, 81, 88,Color_Count,1,Color_Max-Palette_de_travail[Fore_color].R*Color_Max/255);// 2 - Jauge_verte = Fenetre_Definir_bouton_scroller(209, 81, 88,Color_Count,1,Color_Max-Palette_de_travail[Fore_color].V*Color_Max/255);// 3 + Jauge_verte = Fenetre_Definir_bouton_scroller(209, 81, 88,Color_Count,1,Color_Max-Palette_de_travail[Fore_color].G*Color_Max/255);// 3 Jauge_bleue = Fenetre_Definir_bouton_scroller(236, 81, 88,Color_Count,1,Color_Max-Palette_de_travail[Fore_color].B*Color_Max/255);// 4 Print_dans_fenetre(184,71,"R",CM_Fonce,CM_Clair); Print_dans_fenetre(211,71,"G",CM_Fonce,CM_Clair); @@ -825,7 +825,7 @@ void Bouton_Palette(void) // Affichage des valeurs de la couleur courante (pour 1 couleur) Formate_composante(Principal_Palette[Fore_color].R*Color_Max/255,Chaine); Print_compteur(176,172,Chaine,CM_Noir,CM_Clair); - Formate_composante(Principal_Palette[Fore_color].V*Color_Max/255,Chaine); + Formate_composante(Principal_Palette[Fore_color].G*Color_Max/255,Chaine); Print_compteur(203,172,Chaine,CM_Noir,CM_Clair); Formate_composante(Principal_Palette[Fore_color].B*Color_Max/255,Chaine); Print_compteur(230,172,Chaine,CM_Noir,CM_Clair); @@ -895,7 +895,7 @@ void Bouton_Palette(void) case 0 : // Nulle part break; case -1 : // Hors de la fenêtre - case 1 : // Palette + case 1 : // palette if ( (Mouse_X!=Ancien_Mouse_X) || (Mouse_Y!=Ancien_Mouse_Y) || (Mouse_K!=Ancien_Mouse_K) ) { Effacer_curseur(); @@ -1029,7 +1029,7 @@ void Bouton_Palette(void) 255-Jauge_verte->Position, 255-Jauge_bleue->Position, &Palette_de_travail[Fore_color].R, - &Palette_de_travail[Fore_color].V, + &Palette_de_travail[Fore_color].G, &Palette_de_travail[Fore_color].B); Formate_composante((int)255-Jauge_rouge->Position,Chaine); } @@ -1088,7 +1088,7 @@ void Bouton_Palette(void) if(Palette_mode_RGB) { Modifier_Vert (Fore_color,(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); - Formate_composante(Palette_de_travail[Fore_color].V*Color_Max/255,Chaine); + Formate_composante(Palette_de_travail[Fore_color].G*Color_Max/255,Chaine); } else { @@ -1097,7 +1097,7 @@ void Bouton_Palette(void) 255-Jauge_verte->Position, 255-Jauge_bleue->Position, &Palette_de_travail[Fore_color].R, - &Palette_de_travail[Fore_color].V, + &Palette_de_travail[Fore_color].G, &Palette_de_travail[Fore_color].B); Formate_composante((int)255-Jauge_verte->Position,Chaine); } @@ -1108,7 +1108,7 @@ void Bouton_Palette(void) if(Palette_mode_RGB) { for (i=Debut_block; i<=Fin_block; i++) - Modifier_Vert (i,Palette_temporaire[i].V+(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); + Modifier_Vert (i,Palette_temporaire[i].G+(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); } else { @@ -1165,7 +1165,7 @@ void Bouton_Palette(void) 255-Jauge_verte->Position, 255-Jauge_bleue->Position, &Palette_de_travail[Fore_color].R, - &Palette_de_travail[Fore_color].V, + &Palette_de_travail[Fore_color].G, &Palette_de_travail[Fore_color].B); Formate_composante((int)255-Jauge_bleue->Position,Chaine); } @@ -1235,7 +1235,7 @@ void Bouton_Palette(void) // Grey Scale for (i=Debut_block;i<=Fin_block;i++) { - Couleur_temporaire=(dword)( ((dword)Palette_de_travail[i].R*30) + ((dword)Palette_de_travail[i].V*59) + ((dword)Palette_de_travail[i].B*11) )/100; + Couleur_temporaire=(dword)( ((dword)Palette_de_travail[i].R*30) + ((dword)Palette_de_travail[i].G*59) + ((dword)Palette_de_travail[i].B*11) )/100; Modifier_Rouge(i,Couleur_temporaire,Palette_de_travail); Modifier_Vert (i,Couleur_temporaire,Palette_de_travail); Modifier_Bleu (i,Couleur_temporaire,Palette_de_travail); @@ -1435,7 +1435,7 @@ void Bouton_Palette(void) { Couleur_temporaire=Debut_block+(i % (Fin_block+1-Debut_block)); Palette_de_travail[i].R=Palette_backup[Couleur_temporaire].R; - Palette_de_travail[i].V=Palette_backup[Couleur_temporaire].V; + Palette_de_travail[i].G=Palette_backup[Couleur_temporaire].G; Palette_de_travail[i].B=Palette_backup[Couleur_temporaire].B; } } @@ -1486,7 +1486,7 @@ void Bouton_Palette(void) (Jauge_verte->Position)--; Fenetre_Dessiner_jauge(Jauge_verte); Modifier_Vert (Fore_color,(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); - Formate_composante(Palette_de_travail[Fore_color].V*Color_Max/255,Chaine); + Formate_composante(Palette_de_travail[Fore_color].G*Color_Max/255,Chaine); Print_compteur(203,172,Chaine,CM_Noir,CM_Clair); } if (Jauge_bleue->Position) @@ -1519,7 +1519,7 @@ void Bouton_Palette(void) for (i=Debut_block; i<=Fin_block; i++) { Modifier_Rouge(i,Palette_temporaire[i].R+(Color_Max-Jauge_rouge->Position)*255/Color_Max,Palette_de_travail); - Modifier_Vert (i,Palette_temporaire[i].V+(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); + Modifier_Vert (i,Palette_temporaire[i].G+(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); Modifier_Bleu (i,Palette_temporaire[i].B+(Color_Max-Jauge_bleue->Position)*255/Color_Max,Palette_de_travail); } @@ -1611,7 +1611,7 @@ void Bouton_Palette(void) (Jauge_verte->Position)++; Fenetre_Dessiner_jauge(Jauge_verte); Modifier_Vert (Fore_color,(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); - Formate_composante(Palette_de_travail[Fore_color].V*Color_Max/255,Chaine); + Formate_composante(Palette_de_travail[Fore_color].G*Color_Max/255,Chaine); Print_compteur(203,172,Chaine,CM_Noir,CM_Clair); } if (Jauge_bleue->PositionPosition)*255/Color_Max,Palette_de_travail); - Modifier_Vert (i,Palette_temporaire[i].V+(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); + Modifier_Vert (i,Palette_temporaire[i].G+(Color_Max-Jauge_verte->Position)*255/Color_Max,Palette_de_travail); Modifier_Bleu (i,Palette_temporaire[i].B+(Color_Max-Jauge_bleue->Position)*255/Color_Max,Palette_de_travail); } @@ -1724,7 +1724,7 @@ void Bouton_Palette(void) for (i=Debut_block;i<=Fin_block;i++) { Modifier_Rouge(i,255-Palette_de_travail[i].R,Palette_de_travail); - Modifier_Vert (i,255-Palette_de_travail[i].V,Palette_de_travail); + Modifier_Vert (i,255-Palette_de_travail[i].G,Palette_de_travail); Modifier_Bleu (i,255-Palette_de_travail[i].B,Palette_de_travail); } Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block); @@ -1747,7 +1747,7 @@ void Bouton_Palette(void) { Couleur_temporaire=Fin_block-(i-Debut_block); Modifier_Rouge(i,Palette_backup[Couleur_temporaire].R,Palette_de_travail); - Modifier_Vert (i,Palette_backup[Couleur_temporaire].V,Palette_de_travail); + Modifier_Vert (i,Palette_backup[Couleur_temporaire].G,Palette_de_travail); Modifier_Bleu (i,Palette_backup[Couleur_temporaire].B,Palette_de_travail); if (Bouton_clicke==22) { @@ -1844,7 +1844,7 @@ void Bouton_Palette(void) oh=h; ol=l; os=s; // On trie par Chrominance (H) et Luminance (L) RGBtoHSL(Palette_de_travail[Couleur_temporaire].R, - Palette_de_travail[Couleur_temporaire].V, + Palette_de_travail[Couleur_temporaire].G, Palette_de_travail[Couleur_temporaire].B,&h,&s,&l); if( @@ -2091,7 +2091,7 @@ void Bouton_Palette_secondaire(void) Fenetre_Definir_bouton_normal(139,126,53,14,"OK" , 0,1,SDLK_RETURN); // 3 Fenetre_Definir_bouton_normal( 80,126,53,14,"Cancel" , 0,1,TOUCHE_ESC); // 4 Fenetre_Afficher_cadre(10,55,122,51); - Print_dans_fenetre(18,59,"Palette layout",CM_Fonce,CM_Clair); + Print_dans_fenetre(18,59,"palette layout",CM_Fonce,CM_Clair); Print_dans_fenetre(35,77,"Cols",CM_Fonce,CM_Clair); Print_dans_fenetre(84,77,"Lines",CM_Fonce,CM_Clair); Print_dans_fenetre(157,66,"RGB",CM_Fonce,CM_Clair); diff --git a/pxdouble.c b/pxdouble.c index e2b07adf..d7adf88f 100644 --- a/pxdouble.c +++ b/pxdouble.c @@ -123,10 +123,10 @@ void Pixel_Preview_Loupe_Double (word X,word Y,byte Couleur) } } -void Ligne_horizontale_XOR_Double(word Pos_X,word Pos_Y,word width) +void Ligne_horizontale_XOR_Double(word x_pos,word y_pos,word width) { //On calcule la valeur initiale de Dest: - byte* Dest=Pos_Y*4*Largeur_ecran+Pos_X*2+Ecran; + byte* Dest=y_pos*4*Largeur_ecran+x_pos*2+Ecran; int X; @@ -134,10 +134,10 @@ void Ligne_horizontale_XOR_Double(word Pos_X,word Pos_Y,word width) *(Dest+X+2*Largeur_ecran+1)=*(Dest+X+2*Largeur_ecran)=*(Dest+X+1)=*(Dest+X)=~*(Dest+X); } -void Ligne_verticale_XOR_Double(word Pos_X,word Pos_Y,word height) +void Ligne_verticale_XOR_Double(word x_pos,word y_pos,word height) { int i; - byte *Dest=Ecran+Pos_X*2+Pos_Y*Largeur_ecran*4; + byte *Dest=Ecran+x_pos*2+y_pos*Largeur_ecran*4; for (i=height;i>0;i--) { *Dest=*(Dest+1)=*(Dest+Largeur_ecran*2)=*(Dest+Largeur_ecran*2+1)=~*Dest; @@ -145,10 +145,10 @@ void Ligne_verticale_XOR_Double(word Pos_X,word Pos_Y,word height) } } -void Display_brush_Color_Double(word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) +void Display_brush_Color_Double(word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran - byte* Dest = Ecran + Pos_Y * 4 * Largeur_ecran + Pos_X * 2; + byte* Dest = Ecran + y_pos * 4 * Largeur_ecran + x_pos * 2; // Src = Position dans la brosse byte* Src = Brosse + y_offset * Largeur_brosse + x_offset; @@ -175,15 +175,15 @@ void Display_brush_Color_Double(word Pos_X,word Pos_Y,word x_offset,word y_offse Dest = Dest + Largeur_ecran*4 - width*2; Src = Src + Largeur_brosse - width; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } -void Display_brush_Mono_Double(word Pos_X, word Pos_Y, +void Display_brush_Mono_Double(word x_pos, word y_pos, word x_offset, word y_offset, word width, word height, byte Couleur_de_transparence, byte Couleur, word Largeur_brosse) /* On affiche la brosse en monochrome */ { - byte* Dest=Pos_Y*4*Largeur_ecran+Pos_X*2+Ecran; // Dest = adr destination à + byte* Dest=y_pos*4*Largeur_ecran+x_pos*2+Ecran; // Dest = adr destination à // l'écran byte* Src=Largeur_brosse*y_offset+x_offset+Brosse; // Src = adr ds // la brosse @@ -207,13 +207,13 @@ void Display_brush_Mono_Double(word Pos_X, word Pos_Y, Src+=Largeur_brosse-width; Dest+=Largeur_ecran*4-width*2; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } -void Clear_brush_Double(word Pos_X,word Pos_Y,__attribute__((unused)) word x_offset,__attribute__((unused)) word y_offset,word width,word height,__attribute__((unused))byte Couleur_de_transparence,word image_width) +void Clear_brush_Double(word x_pos,word y_pos,__attribute__((unused)) word x_offset,__attribute__((unused)) word y_offset,word width,word height,__attribute__((unused))byte Couleur_de_transparence,word image_width) { - byte* Dest=Ecran+Pos_X*2+Pos_Y*4*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) - byte* Src = ( Pos_Y + Principal_Decalage_Y ) * image_width + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) + byte* Dest=Ecran+x_pos*2+y_pos*4*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) + byte* Src = ( y_pos + Principal_Decalage_Y ) * image_width + x_pos + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) int y; int x; @@ -234,14 +234,14 @@ void Clear_brush_Double(word Pos_X,word Pos_Y,__attribute__((unused)) word x_off Src+=image_width-width; Dest+=Largeur_ecran*4-width*2; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } // Affiche une brosse (arbitraire) à l'écran -void Affiche_brosse_Double(byte * brush, word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) +void Affiche_brosse_Double(byte * brush, word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran - byte* Dest = Ecran + Pos_Y * 4 * Largeur_ecran + Pos_X * 2; + byte* Dest = Ecran + y_pos * 4 * Largeur_ecran + x_pos * 2; // Src = Position dans la brosse byte* Src = brush + y_offset * Largeur_brosse + x_offset; @@ -269,10 +269,10 @@ void Affiche_brosse_Double(byte * brush, word Pos_X,word Pos_Y,word x_offset,wor } } -void Remap_screen_Double(word Pos_X,word Pos_Y,word width,word height,byte * Table_de_conversion) +void Remap_screen_Double(word x_pos,word y_pos,word width,word height,byte * Table_de_conversion) { // Dest = coords a l'écran - byte* Dest = Ecran + Pos_Y * 4 * Largeur_ecran + Pos_X * 2; + byte* Dest = Ecran + y_pos * 4 * Largeur_ecran + x_pos * 2; int x,y; // Pour chaque ligne @@ -289,23 +289,23 @@ void Remap_screen_Double(word Pos_X,word Pos_Y,word width,word height,byte * Tab Dest = Dest + Largeur_ecran*4 - width*2; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } -void Afficher_une_ligne_ecran_fast_Double(word Pos_X,word Pos_Y,word width,byte * line) +void Afficher_une_ligne_ecran_fast_Double(word x_pos,word y_pos,word width,byte * line) /* On affiche toute une ligne de pixels telle quelle. */ /* Utilisée si le buffer contient déja des pixel doublés. */ { - memcpy(Ecran+Pos_X*2+Pos_Y*4*Largeur_ecran,line,width*2); - memcpy(Ecran+Pos_X*2+(Pos_Y*4+2)*Largeur_ecran,line,width*2); + memcpy(Ecran+x_pos*2+y_pos*4*Largeur_ecran,line,width*2); + memcpy(Ecran+x_pos*2+(y_pos*4+2)*Largeur_ecran,line,width*2); } -void Afficher_une_ligne_ecran_Double(word Pos_X,word Pos_Y,word width,byte * line) +void Afficher_une_ligne_ecran_Double(word x_pos,word y_pos,word width,byte * line) /* On affiche une ligne de pixels en les doublant. */ { int x; byte *Dest; - Dest=Ecran+Pos_X*2+Pos_Y*4*Largeur_ecran; + Dest=Ecran+x_pos*2+y_pos*4*Largeur_ecran; for(x=width;x>0;x--) { *(Dest+Largeur_ecran*2+1)=*(Dest+Largeur_ecran*2)=*(Dest+1)=*Dest=*line; @@ -314,12 +314,12 @@ void Afficher_une_ligne_ecran_Double(word Pos_X,word Pos_Y,word width,byte * lin } } void Afficher_une_ligne_transparente_mono_a_l_ecran_Double( - word Pos_X, word Pos_Y, word width, byte* line, + word x_pos, word y_pos, word width, byte* line, byte Couleur_transparence, byte Couleur) // Affiche une ligne à l'écran avec une couleur + transparence. // Utilisé par les brosses en mode zoom { - byte* Dest = Ecran+ Pos_Y*ZOOMX*Largeur_ecran + Pos_X*ZOOMX; + byte* Dest = Ecran+ y_pos*ZOOMX*Largeur_ecran + x_pos*ZOOMX; int x; // Pour chaque pixel for(x=0;x0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Wide(Pos_X,y*ZOOMX,width*Loupe_Facteur,Buffer,Couleur_de_transparence); + Afficher_une_ligne_transparente_a_l_ecran_Wide(x_pos,y*ZOOMX,width*Loupe_Facteur,Buffer,Couleur_de_transparence); // TODO: pas clair ici - memcpy(Ecran + (y*ZOOMY+1)*ZOOMX*Largeur_ecran + Pos_X*ZOOMX, Ecran + y*ZOOMX*ZOOMY*Largeur_ecran + Pos_X*ZOOMX, width*ZOOMX*Loupe_Facteur); + memcpy(Ecran + (y*ZOOMY+1)*ZOOMX*Largeur_ecran + x_pos*ZOOMX, Ecran + y*ZOOMX*ZOOMY*Largeur_ecran + x_pos*ZOOMX, width*ZOOMX*Loupe_Facteur); y++; if(y==Pos_Y_Fin) { @@ -411,7 +411,7 @@ void Display_brush_Color_zoom_Double(word Pos_X,word Pos_Y, // ATTENTION zone jamais atteinte } -void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, +void Display_brush_Mono_zoom_Double(word x_pos, word y_pos, word x_offset, word y_offset, word width, // width non zoomée word Pos_Y_Fin, @@ -422,7 +422,7 @@ void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, { byte* Src = Brosse + y_offset * Largeur_brosse + x_offset; - int y=Pos_Y*ZOOMY; + int y=y_pos*ZOOMY; //Pour chaque ligne à zoomer : while(1) @@ -441,7 +441,7 @@ void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Double( - Pos_X, y, width * Loupe_Facteur, + x_pos, y, width * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante @@ -449,8 +449,8 @@ void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, // On vérifie qu'on est pas à la ligne finale if(y == Pos_Y_Fin*ZOOMX) { - UpdateRect( Pos_X, Pos_Y, - width * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); + UpdateRect( x_pos, y_pos, + width * Loupe_Facteur, Pos_Y_Fin - y_pos ); return; } BX --; @@ -462,12 +462,12 @@ void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, } } -void Clear_brush_zoom_Double(word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) +void Clear_brush_zoom_Double(word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + y_offset * image_width + x_offset; - int y = Pos_Y; + int y = y_pos; int bx; // Pour chaque ligne à zoomer @@ -479,15 +479,15 @@ void Clear_brush_zoom_Double(word Pos_X,word Pos_Y,word x_offset,word y_offset,w // Pour chaque ligne do{ // TODO a verifier - Afficher_une_ligne_ecran_fast_Double(Pos_X,y, + Afficher_une_ligne_ecran_fast_Double(x_pos,y, width * Loupe_Facteur,Buffer); // Ligne suivante y++; if(y==Pos_Y_Fin) { - UpdateRect(Pos_X,Pos_Y, - width*Loupe_Facteur,Pos_Y_Fin-Pos_Y); + UpdateRect(x_pos,y_pos, + width*Loupe_Facteur,Pos_Y_Fin-y_pos); return; } bx--; diff --git a/pxdouble.h b/pxdouble.h index 312df620..f43851a4 100644 --- a/pxdouble.h +++ b/pxdouble.h @@ -26,19 +26,19 @@ void Block_Double (word Debut_X,word Debut_Y,word width,word height,byte Couleur); void Pixel_Preview_Normal_Double (word X,word Y,byte Couleur); void Pixel_Preview_Loupe_Double (word X,word Y,byte Couleur); - void Ligne_horizontale_XOR_Double (word Pos_X,word Pos_Y,word width); - void Ligne_verticale_XOR_Double (word Pos_X,word Pos_Y,word height); - void Display_brush_Color_Double (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); - void Display_brush_Mono_Double (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); - void Clear_brush_Double (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); - void Remap_screen_Double (word Pos_X,word Pos_Y,word width,word height,byte * Table_de_conversion); + void Ligne_horizontale_XOR_Double (word x_pos,word y_pos,word width); + void Ligne_verticale_XOR_Double (word x_pos,word y_pos,word height); + void Display_brush_Color_Double (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Mono_Double (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); + void Clear_brush_Double (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); + void Remap_screen_Double (word x_pos,word y_pos,word width,word height,byte * Table_de_conversion); void Afficher_partie_de_l_ecran_Double (word width,word height,word image_width); - void Afficher_une_ligne_ecran_Double (word Pos_X,word Pos_Y,word width,byte * line); - void Lire_une_ligne_ecran_Double (word Pos_X,word Pos_Y,word width,byte * line); + void Afficher_une_ligne_ecran_Double (word x_pos,word y_pos,word width,byte * line); + void Lire_une_ligne_ecran_Double (word x_pos,word y_pos,word width,byte * line); void Afficher_partie_de_l_ecran_zoomee_Double(word width,word height,word image_width,byte * Buffer); - void Display_brush_Color_zoom_Double (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); - void Display_brush_Mono_zoom_Double (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); - void Clear_brush_zoom_Double (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); - void Affiche_brosse_Double (byte * brush, word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Color_zoom_Double (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); + void Display_brush_Mono_zoom_Double (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); + void Clear_brush_zoom_Double (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); + void Affiche_brosse_Double (byte * brush, word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); - void Afficher_une_ligne_ecran_fast_Double (word Pos_X,word Pos_Y,word width,byte * line); + void Afficher_une_ligne_ecran_fast_Double (word x_pos,word y_pos,word width,byte * line); diff --git a/pxsimple.c b/pxsimple.c index 8a48f525..a18d5070 100644 --- a/pxsimple.c +++ b/pxsimple.c @@ -108,10 +108,10 @@ void Pixel_Preview_Loupe_Simple (word X,word Y,byte Couleur) } } -void Ligne_horizontale_XOR_Simple(word Pos_X,word Pos_Y,word width) +void Ligne_horizontale_XOR_Simple(word x_pos,word y_pos,word width) { //On calcule la valeur initiale de Dest: - byte* Dest=Pos_Y*Largeur_ecran+Pos_X+Ecran; + byte* Dest=y_pos*Largeur_ecran+x_pos+Ecran; int X; @@ -119,21 +119,21 @@ void Ligne_horizontale_XOR_Simple(word Pos_X,word Pos_Y,word width) *(Dest+X)=~*(Dest+X); } -void Ligne_verticale_XOR_Simple(word Pos_X,word Pos_Y,word height) +void Ligne_verticale_XOR_Simple(word x_pos,word y_pos,word height) { int i; byte color; - for (i=Pos_Y;i0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Simple(Pos_X,y,width*Loupe_Facteur,Buffer,Couleur_de_transparence); + Afficher_une_ligne_transparente_a_l_ecran_Simple(x_pos,y,width*Loupe_Facteur,Buffer,Couleur_de_transparence); y++; if(y==Pos_Y_Fin) { @@ -384,7 +384,7 @@ void Display_brush_Color_zoom_Simple(word Pos_X,word Pos_Y, // ATTENTION zone jamais atteinte } -void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, +void Display_brush_Mono_zoom_Simple(word x_pos, word y_pos, word x_offset, word y_offset, word width, // width non zoomée word Pos_Y_Fin, @@ -395,7 +395,7 @@ void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, { byte* Src = Brosse + y_offset * Largeur_brosse + x_offset; - int y=Pos_Y; + int y=y_pos; //Pour chaque ligne à zoomer : while(1) @@ -414,7 +414,7 @@ void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( - Pos_X, y, width * Loupe_Facteur, + x_pos, y, width * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante @@ -422,8 +422,8 @@ void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, // On vérifie qu'on est pas à la ligne finale if(y == Pos_Y_Fin) { - UpdateRect( Pos_X, Pos_Y, - width * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); + UpdateRect( x_pos, y_pos, + width * Loupe_Facteur, Pos_Y_Fin - y_pos ); return; } BX --; @@ -435,11 +435,11 @@ void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, } } -void Clear_brush_zoom_Simple(word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) +void Clear_brush_zoom_Simple(word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + y_offset * image_width + x_offset; - int y = Pos_Y; + int y = y_pos; int bx; // Pour chaque ligne à zoomer @@ -450,15 +450,15 @@ void Clear_brush_zoom_Simple(word Pos_X,word Pos_Y,word x_offset,word y_offset,w // Pour chaque ligne do{ - Afficher_une_ligne_ecran_Simple(Pos_X,y, + Afficher_une_ligne_ecran_Simple(x_pos,y, width * Loupe_Facteur,Buffer); // Ligne suivante y++; if(y==Pos_Y_Fin) { - UpdateRect(Pos_X,Pos_Y, - width*Loupe_Facteur,Pos_Y_Fin-Pos_Y); + UpdateRect(x_pos,y_pos, + width*Loupe_Facteur,Pos_Y_Fin-y_pos); return; } bx--; diff --git a/pxsimple.h b/pxsimple.h index 44f48624..18e15f01 100644 --- a/pxsimple.h +++ b/pxsimple.h @@ -26,22 +26,22 @@ void Block_Simple (word Debut_X,word Debut_Y,word width,word height,byte Couleur); void Pixel_Preview_Normal_Simple (word X,word Y,byte Couleur); void Pixel_Preview_Loupe_Simple (word X,word Y,byte Couleur); - void Ligne_horizontale_XOR_Simple (word Pos_X,word Pos_Y,word width); - void Ligne_verticale_XOR_Simple (word Pos_X,word Pos_Y,word height); - void Display_brush_Color_Simple (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); - void Display_brush_Mono_Simple (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); - void Clear_brush_Simple (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); - void Remap_screen_Simple (word Pos_X,word Pos_Y,word width,word height,byte * Table_de_conversion); + void Ligne_horizontale_XOR_Simple (word x_pos,word y_pos,word width); + void Ligne_verticale_XOR_Simple (word x_pos,word y_pos,word height); + void Display_brush_Color_Simple (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Mono_Simple (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); + void Clear_brush_Simple (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); + void Remap_screen_Simple (word x_pos,word y_pos,word width,word height,byte * Table_de_conversion); void Afficher_partie_de_l_ecran_Simple (word width,word height,word image_width); - void Afficher_une_ligne_ecran_Simple (word Pos_X,word Pos_Y,word width,byte * line); - void Lire_une_ligne_ecran_Simple (word Pos_X,word Pos_Y,word width,byte * line); + void Afficher_une_ligne_ecran_Simple (word x_pos,word y_pos,word width,byte * line); + void Lire_une_ligne_ecran_Simple (word x_pos,word y_pos,word width,byte * line); void Afficher_partie_de_l_ecran_zoomee_Simple(word width,word height,word image_width,byte * Buffer); - void Display_brush_Color_zoom_Simple (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); - void Display_brush_Mono_zoom_Simple (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); - void Clear_brush_zoom_Simple (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); - void Affiche_brosse_Simple (byte * brush, word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Color_zoom_Simple (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); + void Display_brush_Mono_zoom_Simple (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); + void Clear_brush_zoom_Simple (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); + void Affiche_brosse_Simple (byte * brush, word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); void Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( - word Pos_X, word Pos_Y, word width, byte* line, + word x_pos, word y_pos, word width, byte* line, byte Couleur_transparence, byte Couleur); -void Afficher_une_ligne_transparente_a_l_ecran_Simple(word Pos_X,word Pos_Y,word width,byte* line,byte Couleur_transparence); +void Afficher_une_ligne_transparente_a_l_ecran_Simple(word x_pos,word y_pos,word width,byte* line,byte Couleur_transparence); diff --git a/pxtall.c b/pxtall.c index cafc8d28..9ecb9141 100644 --- a/pxtall.c +++ b/pxtall.c @@ -112,36 +112,36 @@ void Pixel_Preview_Loupe_Tall (word X,word Y,byte Couleur) } } -void Ligne_horizontale_XOR_Tall(word Pos_X,word Pos_Y,word width) +void Ligne_horizontale_XOR_Tall(word x_pos,word y_pos,word width) { //On calcule la valeur initiale de Dest: - byte* Dest=Pos_Y*2*Largeur_ecran+Pos_X+Ecran; + byte* Dest=y_pos*2*Largeur_ecran+x_pos+Ecran; int X; for (X=0;X0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Simple(Pos_X,y*2,width*Loupe_Facteur,Buffer,Couleur_de_transparence); - memcpy(Ecran + (y*2 +1) * Largeur_ecran + Pos_X, Ecran + y*2* Largeur_ecran + Pos_X, width*Loupe_Facteur); + Afficher_une_ligne_transparente_a_l_ecran_Simple(x_pos,y*2,width*Loupe_Facteur,Buffer,Couleur_de_transparence); + memcpy(Ecran + (y*2 +1) * Largeur_ecran + x_pos, Ecran + y*2* Largeur_ecran + x_pos, width*Loupe_Facteur); y++; if(y==Pos_Y_Fin) { @@ -366,7 +366,7 @@ void Display_brush_Color_zoom_Tall(word Pos_X,word Pos_Y, // ATTENTION zone jamais atteinte } -void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, +void Display_brush_Mono_zoom_Tall(word x_pos, word y_pos, word x_offset, word y_offset, word width, // width non zoomée word Pos_Y_Fin, @@ -377,7 +377,7 @@ void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, { byte* Src = Brosse + y_offset * Largeur_brosse + x_offset; - int y=Pos_Y*2; + int y=y_pos*2; //Pour chaque ligne à zoomer : while(1) @@ -396,7 +396,7 @@ void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( - Pos_X, y, width * Loupe_Facteur, + x_pos, y, width * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante @@ -404,8 +404,8 @@ void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, // On vérifie qu'on est pas à la ligne finale if(y == Pos_Y_Fin*2) { - UpdateRect( Pos_X, Pos_Y, - width * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); + UpdateRect( x_pos, y_pos, + width * Loupe_Facteur, Pos_Y_Fin - y_pos ); return; } BX --; @@ -417,11 +417,11 @@ void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, } } -void Clear_brush_zoom_Tall(word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) +void Clear_brush_zoom_Tall(word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + y_offset * image_width + x_offset; - int y = Pos_Y; + int y = y_pos; int bx; // Pour chaque ligne à zoomer @@ -432,15 +432,15 @@ void Clear_brush_zoom_Tall(word Pos_X,word Pos_Y,word x_offset,word y_offset,wor // Pour chaque ligne do{ - Afficher_une_ligne_ecran_Tall(Pos_X,y, + Afficher_une_ligne_ecran_Tall(x_pos,y, width * Loupe_Facteur,Buffer); // Ligne suivante y++; if(y==Pos_Y_Fin) { - UpdateRect(Pos_X,Pos_Y, - width*Loupe_Facteur,Pos_Y_Fin-Pos_Y); + UpdateRect(x_pos,y_pos, + width*Loupe_Facteur,Pos_Y_Fin-y_pos); return; } bx--; diff --git a/pxtall.h b/pxtall.h index 52ccf8c5..fd28494b 100644 --- a/pxtall.h +++ b/pxtall.h @@ -26,17 +26,17 @@ void Block_Tall (word Debut_X,word Debut_Y,word width,word height,byte Couleur); void Pixel_Preview_Normal_Tall (word X,word Y,byte Couleur); void Pixel_Preview_Loupe_Tall (word X,word Y,byte Couleur); - void Ligne_horizontale_XOR_Tall (word Pos_X,word Pos_Y,word width); - void Ligne_verticale_XOR_Tall (word Pos_X,word Pos_Y,word height); - void Display_brush_Color_Tall (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); - void Display_brush_Mono_Tall (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); - void Clear_brush_Tall (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); - void Remap_screen_Tall (word Pos_X,word Pos_Y,word width,word height,byte * Table_de_conversion); + void Ligne_horizontale_XOR_Tall (word x_pos,word y_pos,word width); + void Ligne_verticale_XOR_Tall (word x_pos,word y_pos,word height); + void Display_brush_Color_Tall (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Mono_Tall (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); + void Clear_brush_Tall (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); + void Remap_screen_Tall (word x_pos,word y_pos,word width,word height,byte * Table_de_conversion); void Afficher_partie_de_l_ecran_Tall (word width,word height,word image_width); - void Afficher_une_ligne_ecran_Tall (word Pos_X,word Pos_Y,word width,byte * line); - void Lire_une_ligne_ecran_Tall (word Pos_X,word Pos_Y,word width,byte * line); + void Afficher_une_ligne_ecran_Tall (word x_pos,word y_pos,word width,byte * line); + void Lire_une_ligne_ecran_Tall (word x_pos,word y_pos,word width,byte * line); void Afficher_partie_de_l_ecran_zoomee_Tall(word width,word height,word image_width,byte * Buffer); - void Display_brush_Color_zoom_Tall (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); - void Display_brush_Mono_zoom_Tall (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); - void Clear_brush_zoom_Tall (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); - void Affiche_brosse_Tall (byte * brush, word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Color_zoom_Tall (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); + void Display_brush_Mono_zoom_Tall (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); + void Clear_brush_zoom_Tall (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); + void Affiche_brosse_Tall (byte * brush, word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); diff --git a/pxwide.c b/pxwide.c index a3455b80..1c021f94 100644 --- a/pxwide.c +++ b/pxwide.c @@ -115,10 +115,10 @@ void Pixel_Preview_Loupe_Wide (word X,word Y,byte Couleur) } } -void Ligne_horizontale_XOR_Wide(word Pos_X,word Pos_Y,word width) +void Ligne_horizontale_XOR_Wide(word x_pos,word y_pos,word width) { //On calcule la valeur initiale de Dest: - byte* Dest=Pos_Y*2*Largeur_ecran+Pos_X*2+Ecran; + byte* Dest=y_pos*2*Largeur_ecran+x_pos*2+Ecran; int X; @@ -126,11 +126,11 @@ void Ligne_horizontale_XOR_Wide(word Pos_X,word Pos_Y,word width) *(Dest+X+1)=*(Dest+X)=~*(Dest+X); } -void Ligne_verticale_XOR_Wide(word Pos_X,word Pos_Y,word height) +void Ligne_verticale_XOR_Wide(word x_pos,word y_pos,word height) { int i; byte color; - byte *Dest=Ecran+Pos_X*2+Pos_Y*Largeur_ecran*2; + byte *Dest=Ecran+x_pos*2+y_pos*Largeur_ecran*2; for (i=height;i>0;i--) { color=~*Dest; @@ -140,10 +140,10 @@ void Ligne_verticale_XOR_Wide(word Pos_X,word Pos_Y,word height) } } -void Display_brush_Color_Wide(word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) +void Display_brush_Color_Wide(word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran - byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X * 2; + byte* Dest = Ecran + y_pos * 2 * Largeur_ecran + x_pos * 2; // Src = Position dans la brosse byte* Src = Brosse + y_offset * Largeur_brosse + x_offset; @@ -170,15 +170,15 @@ void Display_brush_Color_Wide(word Pos_X,word Pos_Y,word x_offset,word y_offset, Dest = Dest + (Largeur_ecran - width)*2; Src = Src + Largeur_brosse - width; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } -void Display_brush_Mono_Wide(word Pos_X, word Pos_Y, +void Display_brush_Mono_Wide(word x_pos, word y_pos, word x_offset, word y_offset, word width, word height, byte Couleur_de_transparence, byte Couleur, word Largeur_brosse) /* On affiche la brosse en monochrome */ { - byte* Dest=Pos_Y*2*Largeur_ecran+Pos_X*2+Ecran; // Dest = adr Destination à + byte* Dest=y_pos*2*Largeur_ecran+x_pos*2+Ecran; // Dest = adr Destination à // l'écran byte* Src=Largeur_brosse*y_offset+x_offset+Brosse; // Src = adr ds // la brosse @@ -202,13 +202,13 @@ void Display_brush_Mono_Wide(word Pos_X, word Pos_Y, Src+=Largeur_brosse-width; Dest+=(Largeur_ecran-width)*2; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } -void Clear_brush_Wide(word Pos_X,word Pos_Y,__attribute__((unused)) word x_offset,__attribute__((unused)) word y_offset,word width,word height,__attribute__((unused))byte Couleur_de_transparence,word image_width) +void Clear_brush_Wide(word x_pos,word y_pos,__attribute__((unused)) word x_offset,__attribute__((unused)) word y_offset,word width,word height,__attribute__((unused))byte Couleur_de_transparence,word image_width) { - byte* Dest=Ecran+Pos_X*2+Pos_Y*2*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) - byte* Src = ( Pos_Y + Principal_Decalage_Y ) * image_width + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) + byte* Dest=Ecran+x_pos*2+y_pos*2*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) + byte* Src = ( y_pos + Principal_Decalage_Y ) * image_width + x_pos + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) int y; int x; @@ -229,14 +229,14 @@ void Clear_brush_Wide(word Pos_X,word Pos_Y,__attribute__((unused)) word x_offse Src+=image_width-width; Dest+=(Largeur_ecran-width)*2; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } // Affiche une brosse (arbitraire) à l'écran -void Affiche_brosse_Wide(byte * brush, word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) +void Affiche_brosse_Wide(byte * brush, word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran - byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X * 2; + byte* Dest = Ecran + y_pos * 2 * Largeur_ecran + x_pos * 2; // Src = Position dans la brosse byte* Src = brush + y_offset * Largeur_brosse + x_offset; @@ -264,10 +264,10 @@ void Affiche_brosse_Wide(byte * brush, word Pos_X,word Pos_Y,word x_offset,word } } -void Remap_screen_Wide(word Pos_X,word Pos_Y,word width,word height,byte * Table_de_conversion) +void Remap_screen_Wide(word x_pos,word y_pos,word width,word height,byte * Table_de_conversion) { // Dest = coords a l'écran - byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X * 2; + byte* Dest = Ecran + y_pos * 2 * Largeur_ecran + x_pos * 2; int x,y; // Pour chaque ligne @@ -283,22 +283,22 @@ void Remap_screen_Wide(word Pos_X,word Pos_Y,word width,word height,byte * Table Dest = Dest + (Largeur_ecran - width)*2; } - UpdateRect(Pos_X,Pos_Y,width,height); + UpdateRect(x_pos,y_pos,width,height); } -void Afficher_une_ligne_ecran_fast_Wide(word Pos_X,word Pos_Y,word width,byte * line) +void Afficher_une_ligne_ecran_fast_Wide(word x_pos,word y_pos,word width,byte * line) /* On affiche toute une ligne de pixels telle quelle. */ /* Utilisée si le buffer contient déja des pixel doublés. */ { - memcpy(Ecran+Pos_X*2+Pos_Y*2*Largeur_ecran,line,width*2); + memcpy(Ecran+x_pos*2+y_pos*2*Largeur_ecran,line,width*2); } -void Afficher_une_ligne_ecran_Wide(word Pos_X,word Pos_Y,word width,byte * line) +void Afficher_une_ligne_ecran_Wide(word x_pos,word y_pos,word width,byte * line) /* On affiche une ligne de pixels en les doublant. */ { int x; byte *Dest; - Dest=Ecran+Pos_X*2+Pos_Y*2*Largeur_ecran; + Dest=Ecran+x_pos*2+y_pos*2*Largeur_ecran; for(x=width;x>0;x--) { *Dest=*line; @@ -309,12 +309,12 @@ void Afficher_une_ligne_ecran_Wide(word Pos_X,word Pos_Y,word width,byte * line) } } void Afficher_une_ligne_transparente_mono_a_l_ecran_Wide( - word Pos_X, word Pos_Y, word width, byte* line, + word x_pos, word y_pos, word width, byte* line, byte Couleur_transparence, byte Couleur) // Affiche une ligne à l'écran avec une couleur + transparence. // Utilisé par les brosses en mode zoom { - byte* Dest = Ecran+ Pos_Y*2 * Largeur_ecran + Pos_X*2; + byte* Dest = Ecran+ y_pos*2 * Largeur_ecran + x_pos*2; int x; // Pour chaque pixel for(x=0;x0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Wide(Pos_X,y,width*Loupe_Facteur,Buffer,Couleur_de_transparence); + Afficher_une_ligne_transparente_a_l_ecran_Wide(x_pos,y,width*Loupe_Facteur,Buffer,Couleur_de_transparence); y++; if(y==Pos_Y_Fin) { @@ -425,7 +425,7 @@ void Display_brush_Color_zoom_Wide(word Pos_X,word Pos_Y, // ATTENTION zone jamais atteinte } -void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, +void Display_brush_Mono_zoom_Wide(word x_pos, word y_pos, word x_offset, word y_offset, word width, // width non zoomée word Pos_Y_Fin, @@ -436,7 +436,7 @@ void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, { byte* Src = Brosse + y_offset * Largeur_brosse + x_offset; - int y=Pos_Y; + int y=y_pos; //Pour chaque ligne à zoomer : while(1) @@ -455,7 +455,7 @@ void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Wide( - Pos_X, y, width * Loupe_Facteur, + x_pos, y, width * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante @@ -463,8 +463,8 @@ void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, // On vérifie qu'on est pas à la ligne finale if(y == Pos_Y_Fin) { - UpdateRect( Pos_X, Pos_Y, - width * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); + UpdateRect( x_pos, y_pos, + width * Loupe_Facteur, Pos_Y_Fin - y_pos ); return; } BX --; @@ -476,11 +476,11 @@ void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, } } -void Clear_brush_zoom_Wide(word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) +void Clear_brush_zoom_Wide(word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word image_width,byte * Buffer) { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + y_offset * image_width + x_offset; - int y = Pos_Y; + int y = y_pos; int bx; // Pour chaque ligne à zoomer @@ -491,15 +491,15 @@ void Clear_brush_zoom_Wide(word Pos_X,word Pos_Y,word x_offset,word y_offset,wor // Pour chaque ligne do{ - Afficher_une_ligne_ecran_fast_Wide(Pos_X,y, + Afficher_une_ligne_ecran_fast_Wide(x_pos,y, width * Loupe_Facteur,Buffer); // Ligne suivante y++; if(y==Pos_Y_Fin) { - UpdateRect(Pos_X,Pos_Y, - width*Loupe_Facteur,Pos_Y_Fin-Pos_Y); + UpdateRect(x_pos,y_pos, + width*Loupe_Facteur,Pos_Y_Fin-y_pos); return; } bx--; diff --git a/pxwide.h b/pxwide.h index a05cfa8d..99f47f2b 100644 --- a/pxwide.h +++ b/pxwide.h @@ -26,20 +26,20 @@ void Block_Wide (word Debut_X,word Debut_Y,word width,word height,byte Couleur); void Pixel_Preview_Normal_Wide (word X,word Y,byte Couleur); void Pixel_Preview_Loupe_Wide (word X,word Y,byte Couleur); - void Ligne_horizontale_XOR_Wide (word Pos_X,word Pos_Y,word width); - void Ligne_verticale_XOR_Wide (word Pos_X,word Pos_Y,word height); - void Display_brush_Color_Wide (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); - void Display_brush_Mono_Wide (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); - void Clear_brush_Wide (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); - void Remap_screen_Wide (word Pos_X,word Pos_Y,word width,word height,byte * Table_de_conversion); + void Ligne_horizontale_XOR_Wide (word x_pos,word y_pos,word width); + void Ligne_verticale_XOR_Wide (word x_pos,word y_pos,word height); + void Display_brush_Color_Wide (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Mono_Wide (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse); + void Clear_brush_Wide (word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word image_width); + void Remap_screen_Wide (word x_pos,word y_pos,word width,word height,byte * Table_de_conversion); void Afficher_partie_de_l_ecran_Wide (word width,word height,word image_width); - void Afficher_une_ligne_ecran_Wide (word Pos_X,word Pos_Y,word width,byte * line); - void Lire_une_ligne_ecran_Wide (word Pos_X,word Pos_Y,word width,byte * line); + void Afficher_une_ligne_ecran_Wide (word x_pos,word y_pos,word width,byte * line); + void Lire_une_ligne_ecran_Wide (word x_pos,word y_pos,word width,byte * line); void Afficher_partie_de_l_ecran_zoomee_Wide(word width,word height,word image_width,byte * Buffer); - void Display_brush_Color_zoom_Wide (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); - void Display_brush_Mono_zoom_Wide (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); - void Clear_brush_zoom_Wide (word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); - void Affiche_brosse_Wide (byte * brush, word Pos_X,word Pos_Y,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); + void Display_brush_Color_zoom_Wide (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); + void Display_brush_Mono_zoom_Wide (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); + void Clear_brush_zoom_Wide (word x_pos,word y_pos,word x_offset,word y_offset,word width,word Pos_Y_Fin,byte Couleur_de_transparence,word image_width,byte * Buffer); + void Affiche_brosse_Wide (byte * brush, word x_pos,word y_pos,word x_offset,word y_offset,word width,word height,byte Couleur_de_transparence,word Largeur_brosse); - void Afficher_une_ligne_ecran_fast_Wide (word Pos_X,word Pos_Y,word width,byte * line); - void Afficher_une_ligne_transparente_a_l_ecran_Wide(word Pos_X,word Pos_Y,word width,byte* line,byte Couleur_transparence); + void Afficher_une_ligne_ecran_fast_Wide (word x_pos,word y_pos,word width,byte * line); + void Afficher_une_ligne_transparente_a_l_ecran_Wide(word x_pos,word y_pos,word width,byte* line,byte Couleur_transparence); diff --git a/readini.c b/readini.c index a7065a37..b9127a73 100644 --- a/readini.c +++ b/readini.c @@ -469,10 +469,10 @@ int Charger_INI(T_Config * Conf) goto Erreur_Retour; Conf->Coul_menu_pref[0].R=0; - Conf->Coul_menu_pref[0].V=0; + Conf->Coul_menu_pref[0].G=0; Conf->Coul_menu_pref[0].B=0; Conf->Coul_menu_pref[3].R=255; - Conf->Coul_menu_pref[3].V=255; + Conf->Coul_menu_pref[3].G=255; Conf->Coul_menu_pref[3].B=255; if ((Retour=Charger_INI_Get_values (file,Buffer,"Light_color",3,Valeurs))) @@ -484,7 +484,7 @@ int Charger_INI(T_Config * Conf) if ((Valeurs[2]<0) || (Valeurs[2]>63)) goto Erreur_ERREUR_INI_CORROMPU; Conf->Coul_menu_pref[2].R=(Valeurs[0]<<2)|(Valeurs[0]>>4); - Conf->Coul_menu_pref[2].V=(Valeurs[1]<<2)|(Valeurs[1]>>4); + Conf->Coul_menu_pref[2].G=(Valeurs[1]<<2)|(Valeurs[1]>>4); Conf->Coul_menu_pref[2].B=(Valeurs[2]<<2)|(Valeurs[2]>>4); if ((Retour=Charger_INI_Get_values (file,Buffer,"Dark_color",3,Valeurs))) @@ -496,7 +496,7 @@ int Charger_INI(T_Config * Conf) if ((Valeurs[2]<0) || (Valeurs[2]>63)) goto Erreur_ERREUR_INI_CORROMPU; Conf->Coul_menu_pref[1].R=(Valeurs[0]<<2)|(Valeurs[0]>>4); - Conf->Coul_menu_pref[1].V=(Valeurs[1]<<2)|(Valeurs[1]>>4); + Conf->Coul_menu_pref[1].G=(Valeurs[1]<<2)|(Valeurs[1]>>4); Conf->Coul_menu_pref[1].B=(Valeurs[2]<<2)|(Valeurs[2]>>4); if ((Retour=Charger_INI_Get_values (file,Buffer,"Menu_ratio",1,Valeurs))) diff --git a/readline.c b/readline.c index d3b6dffd..63e1e1de 100644 --- a/readline.c +++ b/readline.c @@ -45,30 +45,30 @@ #define COULEUR_FOND_CURSEUR CM_Fonce // Suppresion d'un caractère à une certaine POSITION dans une CHAINE. -void Supprimer_caractere(char * Chaine, byte Position) +void Supprimer_caractere(char * Chaine, byte position) { - for (;Chaine[Position]!='\0';Position++) - Chaine[Position]=Chaine[Position+1]; + for (;Chaine[position]!='\0';position++) + Chaine[position]=Chaine[position+1]; } -void Inserer_caractere(char * Chaine, char letter, byte Position) +void Inserer_caractere(char * Chaine, char letter, byte position) // Insertion d'une LETTRE à une certaine POSITION // dans une CHAINE d'une certaine TAILLE. { char Char_tempo; - for (;letter!='\0';Position++) + for (;letter!='\0';position++) { - // On mémorise le caractère qui se trouve en "Position" - Char_tempo=Chaine[Position]; + // On mémorise le caractère qui se trouve en "position" + Char_tempo=Chaine[position]; // On splotch la lettre à insérer - Chaine[Position]=letter; + Chaine[position]=letter; // On place le caractère mémorisé dans "letter" comme nouvelle lettre à insérer letter=Char_tempo; } // On termine la chaine - Chaine[Position]='\0'; + Chaine[position]='\0'; } int CaractereValide(int c) @@ -84,29 +84,29 @@ int CaractereValide(int c) #else char CaracteresInterdits[] = {'/', '|', '?', '*', '<', '>'}; #endif - int Position; + int position; if (c < ' ' || c > 255) return 0; - for (Position=0; Position<(long)sizeof(CaracteresInterdits); Position++) - if (c == CaracteresInterdits[Position]) + for (position=0; position<(long)sizeof(CaracteresInterdits); position++) + if (c == CaracteresInterdits[position]) return 0; return 1; } -void Rafficher_toute_la_chaine(word Pos_X,word Pos_Y,char * Chaine,byte Position) +void Rafficher_toute_la_chaine(word x_pos,word y_pos,char * Chaine,byte position) { - Print_dans_fenetre(Pos_X,Pos_Y,Chaine,COULEUR_TEXTE,COULEUR_FOND); - Print_char_dans_fenetre(Pos_X+(Position<<3),Pos_Y,Chaine[Position],COULEUR_TEXTE_CURSEUR,COULEUR_FOND_CURSEUR); + Print_dans_fenetre(x_pos,y_pos,Chaine,COULEUR_TEXTE,COULEUR_FOND); + Print_char_dans_fenetre(x_pos+(position<<3),y_pos,Chaine[position],COULEUR_TEXTE_CURSEUR,COULEUR_FOND_CURSEUR); } /**************************************************************************** * Enhanced super scanf deluxe pro plus giga mieux :-) * ****************************************************************************/ -byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type_saisie) +byte Readline(word x_pos,word y_pos,char * Chaine,byte Taille_affichee,byte Type_saisie) // Paramètres: -// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre +// x_pos, y_pos : Coordonnées de la saisie dans la fenêtre // Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale) // Taille_maxi : Nombre de caractères logeant dans la zone de saisie // Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier @@ -120,15 +120,15 @@ byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type Taille_maxi = 255; else Taille_maxi = Taille_affichee; - return Readline_ex(Pos_X,Pos_Y,Chaine,Taille_affichee,Taille_maxi,Type_saisie); + return Readline_ex(x_pos,y_pos,Chaine,Taille_affichee,Taille_maxi,Type_saisie); } /**************************************************************************** * Enhanced super scanf deluxe pro plus giga mieux :-) * ****************************************************************************/ -byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Taille_maxi, byte Type_saisie) +byte Readline_ex(word x_pos,word y_pos,char * Chaine,byte Taille_affichee,byte Taille_maxi, byte Type_saisie) // Paramètres: -// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre +// x_pos, y_pos : Coordonnées de la saisie dans la fenêtre // Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale) // Taille_maxi : Nombre de caractères logeant dans la zone de saisie // Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier @@ -137,18 +137,18 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T { char Chaine_initiale[256]; char Chaine_affichee[256]; - byte Position; + byte position; byte Taille; word Touche_lue=0; byte Touche_autorisee; - byte Offset=0; // Indice du premier caractère affiché + byte offset=0; // Indice du premier caractère affiché Effacer_curseur(); // Effacement de la chaîne - Block(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + Block(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3),COULEUR_FOND); - UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); // Mise à jour des variables se rapportant à la chaîne en fonction de la chaîne initiale @@ -162,19 +162,19 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T Taille=strlen(Chaine); - Position=(TailleTaille_affichee) - Offset=Position-Taille_affichee+1; + position=(TailleTaille_affichee) + offset=position-Taille_affichee+1; // Formatage d'une partie de la chaine (si trop longue pour tenir) - strncpy(Chaine_affichee, Chaine + Offset, Taille_affichee); + strncpy(Chaine_affichee, Chaine + offset, Taille_affichee); Chaine_affichee[Taille_affichee]='\0'; - if (Offset>0) + if (offset>0) Chaine_affichee[0]=CARACTERE_TRIANGLE_GAUCHE; - if (Taille_affichee + Offset + 1 < Taille ) + if (Taille_affichee + offset + 1 < Taille ) Chaine_affichee[Taille_affichee-1]=CARACTERE_TRIANGLE_DROIT; - Rafficher_toute_la_chaine(Pos_X,Pos_Y,Chaine_affichee,Position - Offset); - UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + Rafficher_toute_la_chaine(x_pos,y_pos,Chaine_affichee,position - offset); + UpdateRect(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); Flush_update(); @@ -190,73 +190,73 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T switch (Touche_lue) { case SDLK_DELETE : // Suppr. - if (Position0) + if (position>0) { // Effacement de la chaîne - if (Position==Taille) - Block(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + if (position==Taille) + Block(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3),COULEUR_FOND); - Position--; - if (Offset > 0 && (Position == 0 || Position < (Offset + 1))) - Offset--; + position--; + if (offset > 0 && (position == 0 || position < (offset + 1))) + offset--; goto affichage; } break; case SDLK_RIGHT : // Droite - if ((Position Taille_affichee + Offset - 2) - //if (Offset + Taille_affichee < Taille_maxi && (Position == Taille || (Position > Taille_affichee + Offset - 2))) - if (Chaine_affichee[Position-Offset]==CARACTERE_TRIANGLE_DROIT || Position-Offset>=Taille_affichee) - Offset++; + position++; + //if (position > Taille_affichee + offset - 2) + //if (offset + Taille_affichee < Taille_maxi && (position == Taille || (position > Taille_affichee + offset - 2))) + if (Chaine_affichee[position-offset]==CARACTERE_TRIANGLE_DROIT || position-offset>=Taille_affichee) + offset++; goto affichage; } break; case SDLK_HOME : // Home - if (Position) + if (position) { // Effacement de la chaîne - if (Position==Taille) - Block(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + if (position==Taille) + Block(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3),COULEUR_FOND); - Position = 0; - Offset = 0; + position = 0; + offset = 0; goto affichage; } break; case SDLK_END : // End - if ((PositionTaille_affichee) - Offset=Position-Taille_affichee+1; + position=(TailleTaille_affichee) + offset=position-Taille_affichee+1; goto affichage; } break; case SDLK_BACKSPACE : // Backspace : combinaison de gauche + suppr - if (Position) + if (position) { - Position--; - if (Offset > 0 && (Position == 0 || Position < (Offset + 1))) - Offset--; - Supprimer_caractere(Chaine,Position); + position--; + if (offset > 0 && (position == 0 || position < (offset + 1))) + offset--; + Supprimer_caractere(Chaine,position); Taille--; // Effacement de la chaîne - Block(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + Block(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3),COULEUR_FOND); goto affichage; } @@ -294,15 +294,15 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T if (Touche_autorisee) { // ... alors on l'insère ... - Inserer_caractere(Chaine,Touche_lue,Position/*,Taille*/); + Inserer_caractere(Chaine,Touche_lue,position/*,Taille*/); // ce qui augmente la taille de la chaine Taille++; // et qui risque de déplacer le curseur vers la droite if (Taille=Taille_affichee) - Offset++; + position++; + if (Chaine_affichee[position-offset]==CARACTERE_TRIANGLE_DROIT || position-offset>=Taille_affichee) + offset++; } // Enfin, on raffiche la chaine goto affichage; @@ -313,15 +313,15 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T affichage: Taille=strlen(Chaine); // Formatage d'une partie de la chaine (si trop longue pour tenir) - strncpy(Chaine_affichee, Chaine + Offset, Taille_affichee); + strncpy(Chaine_affichee, Chaine + offset, Taille_affichee); Chaine_affichee[Taille_affichee]='\0'; - if (Offset>0) + if (offset>0) Chaine_affichee[0]=CARACTERE_TRIANGLE_GAUCHE; - if (Taille_affichee + Offset + 0 < Taille ) + if (Taille_affichee + offset + 0 < Taille ) Chaine_affichee[Taille_affichee-1]=CARACTERE_TRIANGLE_DROIT; - Rafficher_toute_la_chaine(Pos_X,Pos_Y,Chaine_affichee,Position - Offset); - UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + Rafficher_toute_la_chaine(x_pos,y_pos,Chaine_affichee,position - offset); + UpdateRect(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); } // Fin du "switch(Touche_lue)" Flush_update(); @@ -329,7 +329,7 @@ affichage: } // Fin du "while" // Effacement de la chaîne - Block(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + Block(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3),COULEUR_FOND); // On raffiche la chaine correctement if (Type_saisie==1) @@ -339,13 +339,13 @@ affichage: strcpy(Chaine,"0"); Taille=1; } - Print_dans_fenetre(Pos_X+((Taille_maxi-Taille)<<3),Pos_Y,Chaine,COULEUR_TEXTE,COULEUR_FOND); + Print_dans_fenetre(x_pos+((Taille_maxi-Taille)<<3),y_pos,Chaine,COULEUR_TEXTE,COULEUR_FOND); } else { - Print_dans_fenetre_limite(Pos_X,Pos_Y,Chaine,Taille_affichee,COULEUR_TEXTE,COULEUR_FOND); + Print_dans_fenetre_limite(x_pos,y_pos,Chaine,Taille_affichee,COULEUR_TEXTE,COULEUR_FOND); } - UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), + UpdateRect(Fenetre_Pos_X+(x_pos*Menu_Facteur_X),Fenetre_Pos_Y+(y_pos*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); return (Touche_lue==SDLK_RETURN); diff --git a/readline.h b/readline.h index bc5781ad..ee8a1111 100644 --- a/readline.h +++ b/readline.h @@ -19,18 +19,18 @@ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -byte Readline(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Type_saisie); +byte Readline(word x_pos,word y_pos,char * Chaine,byte Taille_affichee,byte Type_saisie); // Paramètres: -// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre +// x_pos, y_pos : Coordonnées de la saisie dans la fenêtre // Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale) // Taille_affichee : Nombre de caractères logeant dans la zone de saisie // Type_saisie : 0=Chaîne, 1=Nombre, 2=Nom de fichier (255 caractères réels) // Sortie: // 0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return) -byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte Taille_maxi, byte Type_saisie); +byte Readline_ex(word x_pos,word y_pos,char * Chaine,byte Taille_affichee,byte Taille_maxi, byte Type_saisie); // Paramètres: -// Pos_X, Pos_Y : Coordonnées de la saisie dans la fenêtre +// x_pos, y_pos : Coordonnées de la saisie dans la fenêtre // Chaine : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale) // Taille_affichee : Nombre de caractères logeant dans la zone de saisie // Taille_maxi : Nombre de caractères logeant dans la zone de saisie diff --git a/saveini.c b/saveini.c index 6ce0d6c5..3d9096dd 100644 --- a/saveini.c +++ b/saveini.c @@ -461,13 +461,13 @@ int Sauver_INI(T_Config * Conf) goto Erreur_Retour; Valeurs[0]=Conf->Coul_menu_pref[2].R>>2; - Valeurs[1]=Conf->Coul_menu_pref[2].V>>2; + Valeurs[1]=Conf->Coul_menu_pref[2].G>>2; Valeurs[2]=Conf->Coul_menu_pref[2].B>>2; if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Light_color",3,Valeurs,0))) goto Erreur_Retour; Valeurs[0]=Conf->Coul_menu_pref[1].R>>2; - Valeurs[1]=Conf->Coul_menu_pref[1].V>>2; + Valeurs[1]=Conf->Coul_menu_pref[1].G>>2; Valeurs[2]=Conf->Coul_menu_pref[1].B>>2; if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Dark_color",3,Valeurs,0))) goto Erreur_Retour; diff --git a/sdlscreen.c b/sdlscreen.c index 2029bd26..7611633a 100644 --- a/sdlscreen.c +++ b/sdlscreen.c @@ -176,7 +176,7 @@ SDL_Color Conversion_couleur_SDL(byte index) { SDL_Color Couleur; Couleur.r = Principal_Palette[index].R; - Couleur.g = Principal_Palette[index].V; + Couleur.g = Principal_Palette[index].G; Couleur.b = Principal_Palette[index].B; Couleur.unused = 255; return Couleur; diff --git a/shade.c b/shade.c index cbe749c0..dd7b1e52 100644 --- a/shade.c +++ b/shade.c @@ -72,7 +72,7 @@ void Shade_Blocs_degrades(void) short Shade_traite,Ancien_shade_traite; word Taille_shade=0; word Debut_shade=0; - short Pos_X,Pos_Y; + short x_pos,y_pos; short Taille_X,Taille_Y; short Debut_X,Debut_Y,Fin_X,Fin_Y; @@ -104,10 +104,10 @@ void Shade_Blocs_degrades(void) cursor=0; Ancien_shade_traite=-1; - for (Pos_Y=Debut_Y;Pos_YAncien_shade_traite) { @@ -122,10 +122,10 @@ void Shade_Blocs_degrades(void) Ancien_shade_traite=Shade_traite; } - for (Pos_X=Debut_X;Pos_X=Select_Debut) && (Position<=Select_Fin)) + if ((position>=Select_Debut) && (position<=Select_Fin)) { - Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y,CM_Blanc); - Block(Pos_X,Pos_Y+Menu_Facteur_Y,Menu_Facteur_X<<2,Menu_Facteur_Y,CM_Noir); + Block(x_pos,y_pos,Menu_Facteur_X<<2,Menu_Facteur_Y,CM_Blanc); + Block(x_pos,y_pos+Menu_Facteur_Y,Menu_Facteur_X<<2,Menu_Facteur_Y,CM_Noir); } else - Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Blanc); + Block(x_pos,y_pos,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Blanc); } else // "enablée" { - if ((Position>=Select_Debut) && (Position<=Select_Fin)) - Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Noir); + if ((position>=Select_Debut) && (position<=Select_Fin)) + Block(x_pos,y_pos,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Noir); else - Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Clair); + Block(x_pos,y_pos,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Clair); } } 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); @@ -233,14 +233,14 @@ void Afficher_tout_le_shade(word Select_Debut1,word Select_Fin1, word Select_Debut2,word Select_Fin2) { word line, Colonne; - word Position; + word position; for (line=0; line<8; line++) for (Colonne=0; Colonne<64; Colonne++) { - Position=(line<<6)+Colonne; + position=(line<<6)+Colonne; // On regarde si c'est une couleur ou un bloc vide - if (Shade_Liste[Shade_Actuel].List[Position]&0x0100) // Vide + if (Shade_Liste[Shade_Actuel].List[position]&0x0100) // Vide { Fenetre_Afficher_cadre_bombe((Colonne<<2)+8,(line*7)+127,4,4); Block(Fenetre_Pos_X+(Menu_Facteur_X*((Colonne<<2)+9)), @@ -251,7 +251,7 @@ void Afficher_tout_le_shade(word Select_Debut1,word Select_Fin1, Block(Fenetre_Pos_X+(Menu_Facteur_X*((Colonne<<2)+8)), Fenetre_Pos_Y+(Menu_Facteur_Y*((line*7)+127)), Menu_Facteur_X<<2,Menu_Facteur_Y<<2, - Shade_Liste[Shade_Actuel].List[Position]&0xFF); + Shade_Liste[Shade_Actuel].List[position]&0xFF); } 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); @@ -319,16 +319,16 @@ void Inserer_shade(byte Premiere_couleur, byte Derniere_couleur, word Select_Deb } -void Inserer_case_vide_dans_shade(word Position) +void Inserer_case_vide_dans_shade(word position) { word cursor; - if (Position>=512) return; + if (position>=512) return; - for (cursor=511;cursor>Position;cursor--) + for (cursor=511;cursor>position;cursor--) Shade_Liste[Shade_Actuel].List[cursor]=Shade_Liste[Shade_Actuel].List[cursor-1]; - Shade_Liste[Shade_Actuel].List[Position]=0x0100; + Shade_Liste[Shade_Actuel].List[position]=0x0100; } @@ -506,7 +506,7 @@ int Menu_Shade(void) // Déclaration & tracé de la zone de saisie du pas Print_dans_fenetre(272,165,"Step",CM_Fonce,CM_Clair); Bouton_saisie = Fenetre_Definir_bouton_saisie(274,174,3); // 15 - Num2str(Shade_Liste[Shade_Actuel].Pas,Chaine,3); + Num2str(Shade_Liste[Shade_Actuel].Step,Chaine,3); Fenetre_Contenu_bouton_saisie(Bouton_saisie,Chaine); // Bouton Undo @@ -591,7 +591,7 @@ int Menu_Shade(void) Num2str(Shade_Actuel+1,Chaine,1); Print_dans_fenetre(210,55,Chaine,CM_Noir,CM_Clair); // Affichade du Pas - Num2str(Shade_Liste[Shade_Actuel].Pas,Chaine,3); + Num2str(Shade_Liste[Shade_Actuel].Step,Chaine,3); Print_dans_fenetre(276,176,Chaine,CM_Noir,CM_Clair); // Tracé du bloc dégradé: Afficher_tout_le_shade(Premiere_couleur,Derniere_couleur,Select_Debut,Select_Fin); @@ -827,7 +827,7 @@ int Menu_Shade(void) break; case 15 : // Saisie du pas - Num2str(Shade_Liste[Shade_Actuel].Pas,Chaine,3); + Num2str(Shade_Liste[Shade_Actuel].Step,Chaine,3); Readline(276,176,Chaine,3,1); Temp=atoi(Chaine); // On corrige le pas @@ -843,7 +843,7 @@ int Menu_Shade(void) Num2str(Temp,Chaine,3); Fenetre_Contenu_bouton_saisie(Bouton_saisie,Chaine); } - Shade_Liste[Shade_Actuel].Pas=Temp; + Shade_Liste[Shade_Actuel].Step=Temp; Afficher_curseur(); break; @@ -1012,7 +1012,7 @@ void Bouton_Shade_Menu(void) else // OK { Liste2tables(Shade_Liste[Shade_Actuel].List, - Shade_Liste[Shade_Actuel].Pas, + Shade_Liste[Shade_Actuel].Step, Shade_Liste[Shade_Actuel].Mode, Shade_Table_gauche,Shade_Table_droite); diff --git a/special.c b/special.c index aba8c8c9..a69ef4b3 100644 --- a/special.c +++ b/special.c @@ -33,7 +33,7 @@ void Modifier_pinceau(int width, int height) { - int Pos_X,Pos_Y; + int x_pos,y_pos; int X,Y; float Rayon2; @@ -50,90 +50,90 @@ void Modifier_pinceau(int width, int height) case FORME_PINCEAU_ROND : Rayon2=Pinceau_Decalage_X+0.414213562; // [0.410..0.415[ Rayon2*=Rayon2; - for (Pos_Y=0; Pos_Y>1; - for (Pos_Y=0; Pos_Y>1; - for (Pos_Y=0; Pos_Y>1; - for (Pos_Y=0; Pos_Y>1; - for (Pos_Y=0; Pos_Y>1; - for (Pos_Y=0; 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

^Km=q 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 z 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 N|Hb>a?!Maoe*l-ufUp1n literal 272896 zcmeFaO^j25S$nVU^$jFGu$p7(w_{D$t_y6->`$x5{|NeIEr)&TB zPkz4kGbQ*}`2OXe3V^TGi2un?6pFuJCGHpa_ci|gBL9AgekrdF_Ay> zmD;a=^}qkw|L(_pGN1pb_EWY0?BoB2zqQ)`%D+FVEx?A_yUFdrKehi3tqsGE)P}$H z(O;^4MEIv`U#Wde3;!P9U#HZD-`-%PiDt|w!{TG(!e=*3j+OO6AThjmJU;Z~g;)nmf@=?9EtW9de+O+mh zEtZb&*86eoFV)m4HEdt(Z|sfz`p3V{2>i8L?VG>-&2N7CM+cuAfAYJ3^xY!x^^d>7 zsQ!8-{_phi@!zc``lR-=wZ9P({m!S=a$@-FAOBYE=W3s9rz)3LB>mmmcWR&4YT0+c zb5JxU`z~$U0w~2N-~Gf|PJH&=-_O4L^^d=(eY^Iel07@F=C*Lk972}2QTy%M-!A2i zjVk9a!9p3o_j_AS`2E_yQ2X8OVydmMQpyccA?2pLsQo+4%}3v)Mc?HAPg!mUjNpHA z@Cil#QSH0Hc4NN&@!zWbyG+>=+5S$gSIcYT+TZ;^0l!!K_n6L70l!1tAF6#j{_7vN zYX3eh{a_JKwPd%jAJzT?u;HVO9)E`s*w<^t`Ivk-MJ(eJ(tlDKPtUKvzhBeeuYdfu z_8)>nPgI&Q37$pMuv=vjuT+XJDy+uE>i(75e+1g?scw5Xo~m|#x@z^mSNpvW_W56` z{l|>r2OCkeez)gE6N*&(8&Hk+G5CkIzhX4?|MFf91zt`N_Zdk@$l@seP^Xe?AC5f3B84EauB~KK>JUkbnDM z6R!PC?Ks~|rq2cW-~UxOB_Q|1(Q>}}6Po@%|9wF|uI01M{h!o+rS?z$CxyRCIqT){ zV7R&HdD`q#xvkk-65qxfzb~ zWj47V-sah8zF7`u>-?Xs)h?fB_mkOXm0dn#elN4t`{BYq{&+sWXP_E)^Hn~}E`PpO z8{FmdkelPV) zk%RnxkzH?YZt~?fYPHdPxt!eo=|Mg_Xw0Yc<-vG3TOCaE)xnB>jPli2Yqcdgro+*n z9xR5-gG*>d1#mjttn zis>Yukv)ZOXDTfPSL+-kDhIRckM1~cbBS=mAtZcs4HNKCY7Hy zs}tl_Ulme~AtqZ5C#y*g_FgQ;Lq=zovxopLbGmo2n9he|X8U3Vy*SSE@%3=@HtXd- z+K^xjeqY#<$a78x;d9CKP4hKHffcJ&4#j&7O?q9ww7*ySduZQ>S5yJA(lXlaA6a8s z3N+_8j8lkNOdj$nR4fG78rQB6;A^Aq+3)HX`0(+` zj`C~9^Ku7r1$xCa#}g>vR`^QAGrg0!h*|i0R(w8ZI)JX#8Gf=cLpYM3_9h_GN5nLtoxZ#_KyK^9_`0{(jXRuJ0J}OZJq@XZrJ;IMMa_ zWG1>U&ai=*%UZ(GS#I^)40Z#9qNQ=y17yW`CdC-xv1xC7rk;!IfHkrA}yT zu}(Nhow$0bKN&r_%0dU&*;p#skhX=-Yw~Iv$~+7*-_KX;?0&c&-A!h<+0A5{&mf)< z7O;Bsc9jp8qq_uFK_Lb8@ClKnh0WQRVaR9WOk_g8&q=A@YjBH&rq5gLZuD2*EElF! zUyv-w&@y}23O|N|G`>pr7)p7dt+(O(F??T7=d43gF+o}g*$oSItp?5^>e_ql<2hA$ zfAVoA2$;Rfr^0rHmka`q2i2Y_Vo2)0$CG|Q$|2q54X1QWqA*Kr!c1~U*A^EiR z7UI9482imOi-nP*>-j@=mrri*RKp0e9zwJT6cZcau`G!YelJXB7GeXOJ@Hh~ClD`N zP1(wpAty*R8O^m*%^*zKdY;`d-ld>6a)MsYWR*RCc@2rE77zG-KAzl6@-c%pnT?ni z#=12dPewy9$$+o`&jDUf)>-5SsQ6}b>p?m=UQXWSDKuZIm6nw5GV>c_x5P@&fHPKp zo-qO|2KwD({pcyP55)-=-sT}CeS%D_=QGa;JF-~j@8FRP28(!|FD;FDCQn093wspW z$gHiHsHLVx?1?7=m$a3n9AN=jKZu)({fL44%`^-KF_5!jWZsix{=P^!ABS9Yft|r4 z7?#D5Jz^R90OOPJ(yE}r&d_;!8v0H|+e4HD-}08g%^ZwoMjc!8hskQaA~w#krZRp% zin*FkH}}v%$0O=cpJI^hc6oc9tw!ufAw`l%^3{6C#;L}U)7n^Cy3CXBL&i@T zb0d<^s1B=R5YvNZq6lgqL zKGLYwnz6E7K;LXb(}|YWa7ss}b9y4CZL=WJ^&@PVrbX+50@zJfZyAk1ftiryM5i79 z0DTr4m3^)C4Ve^iwQnaH&#J-aEJcfjoI-f=*+}fFK@3aS2=B#O-sbF|lm-z}nc6?~ z>w8t$n*@Na*`#Zeeh1y33rJ)2vl6*q4c}>}B`o^A6gw5aHDEd+k?Wg&9#zNAi0+6EPu~IK%~xha`iER3@?7IR_ltj&${el z6XM$N6M5F3aEi}iJ@!Qo=)@CIZ$K3$w3_Q&yv~$C+Xv2$<{J*cPsMse*tqxRRZE_V zQ&Yf1&*#N3-yT%H6sRN|O(*bBsdo}^u!5mL**N34H<@yl_cC^)vXKa!j&tP{b`Gn; zU`R%#(Y2ED5ywZdr;-POF{L8l-zJNdmShQddi z2te%vI^PM(%x^=VQNn)k7p%%-)_QiCwL5Rx&DYI#gj^+v`ingDj>Dd0M(ReuNs|?< zAy8F7Hhc$3$%eDpW@>z@N`QZf0|=55Tx*}U-|S{HQ?-JzZ%kof=F@Q%qUqFt7HQVc zNKv9spy!4m2@oXRw%moZRPRvEa74okr3S&df%Yxu0%wkdZ1j4 zZY4VGZE2?nH3hH<_-Ooay10Y)U1uxg-IE7auy>okVk+r^9m8q9AoH7>6=}t=m4c5{ ztzhI)K)o^aK?Ggk>M;wv7w{gM&7a$uF;d3rvBE9JIiyPHp%Qvzg(&5MGSW-hu2kk*Ff1TWbrTig0S-pz{uyoNo)_r|Ct( zhSSQxb+6Wp*m!e)uTI$cesce(fZpFBSybydx+<$quyzV5WIR6wS+WceOcmlwmVMI4y4Gi#ERtXr&19~{J|jFsU-x_B6u*al_%hj0j`PB zp~sK80Z5e&eAouWY;?j?jAN1l64NlCo<`elC@8^<@%A1tpNT)<*~!XQJjKuQ4GP7n&kVBFkuXV8 zuT}Q&T!pw4@cnQV&bX?DO&pDyFWwY*WI>7Enk>>jo=3=w`0^4 zoP*TcJlCR-Zczfs(Qu_5G$Lpwp(2B22RnVkXy^wicluKEM_@1O_M!NEgsy_8->7}` zquK@=muby^SG9xM4HjCP+5=yU+Pt>HVr$L68@_%U*gdfmz7J~G#LjBJd7x1Y(gBL( zs0u(jwdoN4DgvSiDghz}JAiq#PI!nO8&j)cfXj`O>>*a{>V_RJ^_xKhXLS-r5}!$1 zlQ`Jnfs~fakP9b~x7|^8Y^{QnVp0Hovznn2_f$9YL!hLERA=j#v6J+11pCPhusIt8 zYGI;8ffc0@o-b!{u>JGVR)R5vBr+yZ)8iZ=4M@`P()S~+sIq$S))KcOBM}yQKrE$c zFopUClRTTvgemaW&S2@qYBJwYVyjld&S&XMGJB)Z*;;&-e_rdv;Ga4L$M{kDzFv+r z?ZyzJN#(pfoH7X^caStmzLZjF7m&+M?Rg#||i>tP^^>|NRnBvUt)0cq(a z(YMC(c~(dLP>!G76%am6)(A1JMaq`cg7c-OR0;?dVZ&DQ4=@g(T_V>9kZq6<0#B?7 zbsyq~Z7HTvgsnOq&c+O@%Zhqzlu#rlK7d^Vmo*mqFc_Ht2b8sKS{S^cm#pw<{X?lw!I z*7=~6wBI~=T?!7Gy)ylW!3`- zPL3343oI$0AKg}%jP8k?Bk{5lBn{h+FCDvJ)l)3Qsh_nGlX5b1Ljy5m)#xq~fGwc6 zV+%OCTh3?mZJ-gSa)YRHY>lqoJ2Y_Ow=%nLHkJ;~_AW`M*TdZ|)$ z5VSi8CD4tvqZuc0iK5_Rp&!~#3{|y7D3|PKSc0!W4y+?MH-FBWiy@tttHG_tbmtwP{FMSq~(rXoI8SCvMDr!;V;0`@|;p9xF7BSw!v9ZikLwYF_S~C+z&BKcmm{a?`WF(H7 zjW#1VV4Sl-{g8px^i%&)IE^_cMph7_bwpPCeaY%Q)=V+FV9^gdowKZ4*Y|P#VnFMT zTkYm~{jAyV)*C{dV-5X){qK-%E(D4Uf(5I~`kLb(NBU=bU{aOFbb*m8K?1G+dXdH% zmcR_j+RcmuppdbUY66#Z!!+%W4)%FZmXCGToV{iFWC7tsuF(mdMY&=|apmw83;N_3 z+q08)=g_eAq*qtCQ6I2K`dPnqa$axu!MIb#+GpSpCbr)MF&MQ7J#L*l47`r8v*!5) zLl%SG7VEHn0Ukt1zuRLONAzI{Y(*UPTCba>szZ8}OS?}^Y+}d;C1{<44s2~C2ggp- z(!+XBYrETSX|+XYXjKdrt%{JHR&7PZR&9Ypxo7pu?5uOd(7gt?J0SO2b8reEyXYR( z2Tf+Q3dqhb+JjcsgC-cUfdXwM5b8EANX9zYj%qhs=S^0_Nt5Fh^=9?)EFH3U0CPnv@>qR$7ZtJqy?i&pu?yPlA zR{{H+(*`HIo<9O@!b6!6);vCL4nkuiOc+otE+Cf=MQE$HBLt|p*=W_<%|1kxb_{wV zV_CP?bZl<+k?@^&R4Qf+rXyQLg$#4sIXeWy59@u#-oJfkBva=aiAv`>qi*nrNzIO0 zJustNADn79n2~PhqSqjXVai@Nd)ofk(Yw7)x6?BkZA<4{wb~zE)XxW6sf<^PO^pqa z@8+3pFm+8_zuBV%y4F8x_Zz)t^E^AvSnutNqvjE#*>BPau%A`Qd{GP)^-t>*QzWAg zP@B{G`B9tgbHIQIM}-%@u^xdR&1PSfRN%C%XX7`hx7xJLD~S6rLl@zlGiHcDuSx9z z$VjwUK7&)nqXJ6ADnPsJF(nLx{tP;_vkpzmE-N7!BK!1a@Fo}M%_0otWHm4)A->sf zsC|aSP!0H-v(^#ar|)Ipo6}~qebjk#u11y;8~mcnJ~^1Pb)LqLcKnc{*`m~@3+Ard zZfXpSjS?y7htEEpXtxe&%_Zc@9m`@~zgPT@ z?hrJQXRbU5TEbttAVgm1B z-3XZiv)^^3E48f4dZzaS$J~Cb}22HYD0vFEb?={BgBGx#U3`2wO zY0NmP2*%@gh_wmVKzZUMS}E#WA;VZpuHHc`A~CD|%3#|*o>R1aU_>Et2xWOtqF%Ru zQBo5~(l!4;S1%)m)ue!21&HW4(s^UgO5ayX3B12pqNg~@(N-{)1w=v#=s_7U!@QcM z#AubE5;z&SlDm(nGgQWflzVA1mB+p#>Q!I?oir+>yM$77X4%j!H88ftxS{h3Ts0s@ zlIT3J(wmaN#5n59VmQ(X)rUc7&{^a&84d=ELlqgNg$QBp5me=}^64xj9MPcLhg+`; zj(w<^(%6Tjp!&eD$u7Ue?<Z167K;rN;T+-l||N2D7;6KhuS2C})NvkC~m zyF=+F_^Vqpko)kJJ^Os53LKt&{<0L+IH@xeF=~ha32Ety_K6fGFjwW?38SuprGR!U1uj8$`*ne*Q%V&S>>Y!h{pBu5TWd_UP)S>1?Fwf@Y&U|?I0l2F z4TP~+zityle(wW3u{g;W9m1AkkYt&_K4TXnVyO$C+n6qD64`&vr1=rNN<}7Mto722 zG+4!!q_8z{WXu&ax0T1uH&_5$aI@rqZf$|JU+xy-qt213i&Pn=AXt~kW?tW} zr{jWYOu#zfZk_8KMS_&@z1?-NNl_U=Ev4zUGDmaljb)i{#@-G~x!?{Y-Wt>KkUHp* z)6jtrf2bQtZt4OfGhb|h)H8ZeP9;#4joHd0V+jYDUVj#$=cIvtr9!AZQWEvI7$^S`hnq~h!Yxpa?zro z({xLY)e<-+8oSaK-_orj)%XYedj-J7oS;c0L`bm_a?&s@HBF${LfXzeoMR9zd?cH5 zk$h;|&qQ6cU0#t$ze+^*Zl`^9BH858iByVEsIiRY5xUb#QK2hqRv<|pKvRJVTRVP{ zAPZU_?c@$!El1iptO&kS0;`2Oq{YjwK&@>B8!hJ8$!16Q2h8>0x&FLhoCjuIZ$~DX zJZVFhJ_b|+nFa=$kDxQUOF$_Dn4nB|E&VR-6%F=Fr>@`$niZC#-;@kt2Bmy+lG(e& zZl0g3_%o6H*_Et%Y1q}8Ki9f;c&&C`>!RWHSbuKxM}`vDWaN9KL?d0;4GW(pj)Z83 z@#8fK##iJJCNNH8u4!Rx0piMDm(YBn3y`dM65gtk+Z!S{HeftYn~W6G{;=a_`Pc^W zOA>ym#(k;AO>Zb-I(w^6UGX*h4W*={nOz1WWd)$i z@73FhOm^3ITsNMre^C2t2LRuBg7?b$URmG20D+LWaI8n%6Xgu_Fi6IO>@|k|;DWck6*%F~w=8b;yIC)nfdt~v z#5W-xxmmw;UR3I077?5v%{Q@2=4}K20vG{syFq)Z5Q)@^)*QDxog*bI5+Un63SzrZ zkRZxdjM6J|6zypv4sA->64JLj7iJX@f|58D1JXrOG8i8U{uKIze?W(uCw`+s=R)W)GACEH?D!gnEvO)&b~c!flinrM`#vrsCqf7a;?PMP!& ziAc23(g1kaB`}(uh82I5HIXwTIHU^yQm?Qc=_6^`f>BUYQk+t{MyJ>7oOLfi@&Gk? zV=wEoI9jDb*~CJjMFE1v0*b1T((R-aET)8C2vr$A13x=M>?YI=@F3hP+9Z)S0zD|i zQEPxUDWoeYnvPniUwRis*@h=4^&S}+kG*gjg}6JE)n_2C=ym!_H;?OQnro97J35Kr z1Zd{efekMLTIYxc5%HZ%y;lHfb?>4pLdYaWFa)J#cJp2ZqU25+jR9-LHAa1jSP*Y(#8SE-qn3WofJpF7ahfOr%x@*4UuQpQh)%+HS7MS<6p3`u(SGBp zBvSQct~}K|t2t5no;6wsAVG{hP{g|DP2C&W&46s*Xkuzr=&ctQW37PHrD_rk9)vfQ zqK{G5p6)j0w9{+-kXwiKwk}dsa+p2`VLRIh79J<2 zMfZ`+qFYYQ4|9jor&%|3?`{l&`+mFLKTXYyd0abI^rIGPzd&5;TvF?8M>yy^5_LHI<4jTYL5#nLvi?1~hYE&Ny&=E{Fa zS}EN*W2Nq&Uz|0WA*pf#WrgGvDl{^sK+t0_JOxPXmMMa4&xUyHM4@YFoikNC5mJmY z>m|6cfsBkzO@Ck9%YAX^$b^t+dJWYo?Q>2NOvG7R*0>%KEzs6P`DP^ zn(cP0i=rg3DWVCxk=E&ErNEd^-DZ83@(dsnvGL4q5hJFpQoI1@ZPi}Jsxm+!%6L6S z0|Y3_!8T3|E4Wm^3{okBs z;Sea0Kfw1ny@XSLB!rbuO! zP^EMNw268uiuo!0Q~-^tDj$GW(HI$ zLnbd?XK8^tVKV$Fl~RIYZPOn-5!L73@NQW`yWI?eK2erMsjSjc2`w;eEfJtH*h+gU zPQ{gmD&(u6d4gF%B{VN0R7!aS&D2DTau-;g<^E~sO?C?XwZllKS5B|hZwRvstS;^T z8B#8@0xJ))Nfj*r9w-Hr2hl|imUthS)TMRT2m7$rE0xO0wuR199o_>acWIFiI^FH9 z1x`OMM#XOLE2XN<7SpYHT)^nonNR}eaB$UiZZ$BnGTn)mp6~B41qiqAAQ(MKhq=UK zx8t}yWkOZXj!3fY?lB&pd-)kc zbzN&(fqIABgLyw(Qqj!p>s9qas$RB(6Yed9dty1>=f**U1nKRe!R2bX$-rgHz-I23 zhP=IuOSo_(A-NLJVIaEjCnJ7UVrnZ;wugRuk#Q+UK7f+_i$=mCT)%h6bq%wWv2v6_ z-VV6d8Ne)7PwqM{(=hsNwAJ5?QE}jI5NM-m=W3Pp4RdpDg4i7zFTxsT_lnIA1=^Nu zCSPQwEQp*LYrM8f0Uo~O@}Lyr(gA}X<3dgHr(xraE=@YA7%k%fzcY8N`*mS37-t0! z%qLZTFwVamf=fO8=;;cG?mhOU*|Bm8*kEvM%}5Z6!Qv!bNOavNd)HC82VRxglJ0ynBOg~zvI|PG$VrLy}&QMmJ=6HUCpW_HqS%bCAd2xhNnNmY)jfR*6-?3 zS6TaJ$(+fP8Zz7vGG~S1TfQYYR)^5a2!Yz-`QpNoPE{U!12`$KNf{^4oK)ZvAefW% z1GdXWqsouLI~1tuR1AwQSo2hR1-OwaG=XRtCfSyXlED&%yWnYN#0uqQ|CRMRH%8PKnpjP0uSYOOpKuoTt1q*y{ zi8sq*jC}2aS3(d6Yw+a2H@dUXj%?xaa`@gHDquw?KVK{ckI0`L{h}7WQP}MWY)NoU2k8~p9dg)JLL7-0xp*=%7`81PXxD@32l1$`^u-(f`LAD6yBL%Ic>xntuNkCZ+K|)g4ZcUmITRH1JH#-ej zu3cjSol9BAGMr;DdpVv*afdUEt%igdf(zH(*HdtnlXj&DR*@R1kZKo2g-RhZT@Gi_ z4VIf+zMRdaBz_;vt0c(EhKu()ZNPrVMW3D}7O zoP@Io7|A(~GX`ho9OeVNm z&VT{n>b4KViq<5E>G@63uPa@EQ}KLz@qBRq6HdWCCT2YuYXn4%VMoKEHDeGI?W~wn zc@VOe(}rVRNW}!Cz5~JfB{*KuMZ4fHIHelItNBiFC{_>~RdezPT8Rl8CU(qtK5dIB zMi2(&jZ8p;n+}3~cWNs<)zy96iDB{+Ljyd{%Zw2;0ntjK>Z-*8fUDoE#cv#N?BqDBHp!+_-gYWQOrjr&S)0}KHk)t}6rh(uj&F7T?SvLm6 zDg>7R29gs*j5`?ssQyl5-~#tWg*MSt%Z1H}Fenxlt9NiHrV0!NFj7{4wVfNf@|p*= zF<5APfO1SK8W>cEvS@OEOeUQKwGc&6HHIKAXS=}cZ%5K^vt64FXKU_gPh>X~ zeDiC(*yH8oVXgya^5(3rACJw9h}2D-T;uQ&c6Ks) zCcjl>zzf;x(fFyQ7MqS+5O?Qr4DFC3T|00>TK-^;2V3kE8T%gh<}z(7D~7@XWBFWV z?5kljRkQdIEgGb}7PQAG!nP$tCL>VqeNr$Fvl+*=k$W2;6bP!Sr57HG^=<*|GQFoL z8deHhJWRcuox2-fCaV%ocq9_RBHkP6j5%oC#X2{5Mf2j2Chovuk$%+vPzocOhXe|vvQqy&Z0-rXTL7sK`5FFq$;ykT1`IL*viUPaBR}nR4TSKLtC+7$hL~u znnuN@MWn#iA`)o-B2tXlmpv1qs1kyf*O!fCD72c@CP6VDSVW=DeG{Oly^BZ@^w0-i z0Z3tG=mpzZWh-;}TIQQWhc_u{t2@W3)?FF*L!Wd3bPLMVY9zCyzG#rSx`i0|al z+S>=$W-8^4$-Aua2vWIq!rK9U3f6(WEoFlQgN5TrfyL%p7W_9N7vM~{UNO04uyvT0 zmSOR(3(q0INX8iERAP8%yiHtY8Y>cUER{SUK7Zvy&pO&p!ST=}`JTX(6{*cugxwzsQwN#b&ad+nW9`{N-BSE~ zI%a*frS9p~-^l$I@h+5+Ln|G~!FxSAXR-o%y`GQfynwelxSh_g%|W5X`mW8yj^+#b zW<2C(LTN6c<_7U(Gw||ZG~JBNd*2zdCESLGS9VOa6C7^Rv{F#F)+`t=wrz#wCf?#x zLgsjlc<>5D@`x%&%#0b>ge|n$0!bPs>5D<4a9WKLf49DiX$ud!jJl;QAl0hChckbq zLcaFJ;oV!WtqyyzS)v^hruQ(EKz2~f8@QSwJM506zDA10{TJ&<-EJ^f8^Ks}n9^s^G z*i!_iK$W0hsJs{Y`CjN3%xEY9H~vwMB5kY+!~MBe%K%KXMC;j=`CQ$0|jqhH9vRb=F8bW+aV5mDlA@tZ{~mrUg^fYz8q zkXIa%=QXxE%CI*GFk>%;@a9qqxhZ>0Y1a1kxPa@lTYWU~AX{yKp|gAeuWi}A`d^4ob-<36~mW%)FwJc^c_WLi7yhGSOeYThHh0IW6#HHOm> zC@PgT>s6waa0!wN{k;97{&Npn&6KNi2%Hu*P}vp8 zA#`w=nCbNsJ%hQDj=}Vr>^%NadLzU1ogRh=do?i^1Ia?nYlbJ2{9CD3 z(I;(YygnJsW&Gy4;0)l>@Rj;qbWaI4HiG8YGHc0yr8YMqyEl@7N4`&yMo?}1J#B!n z?UQnOoo6pzx|EL__x3`?9OUqEO)S{7BOuLTk`HZqRTAg&mn;HluMF2`<0OURjJNcp9 ziBkmv`w0z}Y`+@SXHWJhF6qRmv@_ws0z(9Jk<#!DHw=7A;#aLDRR~ob1y>r8e6n+| z;}gN9YE!bHDPfhy5?WB@C3`BO|7*2-RmxV1vuoL4ztoxP-X$a1px>TZG)Dh=Cc2=AvMe zl}m`>#6w~!ITG&*jX!c*E(n-5BrDg9yV8?6tX9U4d)=^yrLD@w$sL)vt6R`9`1~zL zg%OVwh20`e#*a1}k%A9k;j*5QvH=aHuFT3tC@+OgzGBIzyiO6d>E~kas&E*>L@Kpw zrPx27-17Rh{zon86wyzQ-t#$Ohtr5IYGH37DIGj8`+d_eqsj9 zAuhP^R0_9r(~acd5tr>DXKt9TbPRL1yp=-2rWES&1eJDF69j(w14X#k99>f`+F^dd zA~O^F!no}u`Et0qm1n^e5nmyeQ>}-+5qd0-aox$GfrZIcKF}^k$Kj9TI>eaRj3h#1 zV?46GRjHHBy#raQHu&2M#rl&|Pe!lj8#oSn)8~vM!Bl+q%U09eD-eclG}N9;lhLjYhwl6clWmwQ zR_&Qg{!%J-pq)aQNGw^LYx78Wa+6h$ZD&KS%Xa2563rzj%_u2@OlFxLqr&bZm~9QG zYlf`|+y3bO`xu=9uD#j8j79;5t<;SMR%`)V-A!)f|LCldz0vz+{)ylEJNbD6dW0`W z2Oe^5AbfJTnn~}_z>7c_y^%x{vKawp#}y7&lFk(&XpaOVb~NCPLOo??2USf0-fd(8 zbd7--QYsib5n%dMir`7{0*tE;3<y~$~!L)Km;jK%;%YPiak-jshm#458eqZRtN zfuY3Hm5_-6OhR7~Ug*5O1KpQ4h`YDaVm4Wn5M>b(T(Dz?ato*lIlO=fjA9E@nTU1Q zlhjNedL-O8UF!+7>-z=!Fr&7)pMC5PKoRB$>H31)H3KZM=u8wu#b4NB!qNXKxjQo; zX6x+o1^JLPd}#J_Mq*tuswk8QzAK_(n7L@ zR21h;_b(`e>;>&b2kXMFpH!5!V%%(+_mkYC5g4t?`)v0)?);KI#lEeULxfk30c3j{u z7`plxdI*=+_3bX>SuZB2j{9VkXNx`JHz4ZnYWW^Jf z0O1(73-=?F>aG-E@8Rr1bwHxGA?=d;6?T+M;qWRtypI?mhOdYT&Ym&UO0ZE7MvoAY zg=bFL#AdmqGCPTU!abfjDB}GnQ49g=QAeVp@c__f`$NcJV#--S<&e_I1pA2XZB7}% zLom*mGVzZr8@&UnS!N9EdA@J?a{D$>&~b|*lSvV?_vR;)X80qcfid%vnN_>o$h|&$ z1f9S5j2^SC(zPN$fgIRaXeChaJjjX9fjE9-oYObP%l4ETJ+bXK+pG{nQ6KBBc-7DX z!DH_O4EF;AfSx-3PUH-cFsuiA)1&x1bEBADr?1=eB@c%_7~{up7vB%xrVKe9&K^n1 zoluO9A7j5C)$h=3p5?@MWwl!d3;lkyafu1S_ynMh4~44x4x&=Tlgmuc4(4_%Q!mxt z(FDX^I1^R7{p*@Z3;V|-lcxE*x3`rab)l&UK2(Em^=#_>a5P_O&^XCuLw*TnLppER z!%levhS)a?*B*PO-9AV%9%7_dZ@;ZtoUTPG5`qawLKw3tdJ_WT*a^vw#FcMO z_yq?E&gz?a>&baKCxZ?x z(6!!*v@23$&i;P#G2K@<^Rb!ki#0Y{+nFv`DQA$0TLBvG&1f_83Z5y%+ve!0B><87 zMuIILqM-Jq4BhTX8WWA`JDn_pB5rpopgM=`4!(5ccR>MGil2#~4{lR~(8oVe(C4G1 zC)EAhcwpny6_OMWMr5lY3dLLQljuz7(X<2p2X#lxDSbwgBQi#^B&SCrH%vY&EIu3q zaWX4&sEu2jJN~DjqqRCe;bWrUBA`U!=2)*oOIzz>0|yn`{+shDD_!3MnPW z)0kAEu;K#jb_6FTzc#Cpa;puqASu;lEVAvgQt!k>(eNVi8LY{~yug2Kr#qu#`@nD< zte}*d8+BUl#kjl5eFeQpX{0`1Wqr=gu-IZ*ig68UL>;R3Q$;JR16_<7$B}K?^Gd;WEEwofRd# zB2O_vZOICXRwJ82(_8e=!{r_p1?hZJG}lfm@YeEmP%2(lX2qPC^`>TT8^pjDxTgf! z$x?k|GY-RHz_yAj>NHp%YBrk45Wk!}`v(7;xD$G*6L$Dq+ zX0rq~8DTM%%Iji7B`xqS98QX14FHfFvEf+yf>PqiLT_l4TBO-!Ft#AfcNM}L-ck~U z=9T^FYn+~lVc?4y)kS#@5=99*TV_3w9c3^UgKU5$lGKYAB_mE3V_ifURu>~wL{!nb zmyb(W*fXCn1&(m*!Zq&&V%gopqE7_ZLo6zc!b3O<9O(~Phq|W8UB#lO!qQ^&Fd?<8 z?gh5>&3;_twgY3tN-%Sqa8^Oz;Fds{3!IKXQWpI(Ck4t}^vhneDV1-J+o-5g5{_n4 z-iK)l_-|%zMWTW3OBU6KOV`ylMPQ{zNT0E&s`fm4GE3l99FV}@Xf10 z_iC(&RzZTRaYl}wjMVDa_V3iUnzQT6MtiSqo!XJ@L-Hgw+XF%LS%hRZ8$u0O9N40z zE{=0*&Mu#hy3#W761Q`?C7Oml#1~3I&8q_oW^xbgN+aj#7%LVYM}x#d?u+XNd5GwE z$Y;V!t-EpMt7W`+sBDj8cyC(Zm_5@Dm#DN`76_g5j*FJgr6Y2vfX4@F*88e;oocI>9! zdtyRE_r!$ORL0v&6P>EeS_v~MGaNRzN^84Gn&)z^$~^31(^Js_p(@kf57t@5xLw*y z%OXzplDSSTc9tqXv#pu-SeI0C8ATLh!-X!y6H^J|LO{nOJy&Zs$z|BBJp-+!3-NM0c4L!rGGfU%^a4@H!YtlnM0l9TlmW6DG#iQUmzpWb z!b^H6mK!dru*~LYLHcK$(*4xWkz3;+rD-f&c}-hsCU=c+mScStDeRFbk^BTID~D~C z!x)$loaG&~nvtCoe!AW>La^aZdd^1h6O^06Q#?w;Pp?tWnL<)5g}8>Jr6; zI+u14*L|?;b>&IrFhsh}RA{7hbYr)qE|#myN+8YpHnS+Sj0hH26Urs4frDogV$ce3 z=S@4glcSCK{xg9s<#iC=z7IwT`W|D75Wv^6MF`&}dJNwX(YrOvzVD9Q%6O~=CCh?a zzh-Erb*_dpd|^O4a172?E$m8bDUA4n&7uGV_hz~lvRrN!Ye-NLiS#&W`XJIwqiGxF zv3O=!?;zewiN0{95ChynGK4hlmQj)zSOsg)4(_quIk=wBp#4-aV>A~Vy)4#kJjIbn#XGDRF0f{p3Wkk46LRAwYqL9he_MsMw1C)!LVK7JfuIc~ zAb1fdwktMGLtBODt*G#rt4W!Iqc)1GKut6*Oj?_Nhd40kAZZ`f6k}-+@M#NTPll^| zNq$-3Q7F2IsWJftJhYs7Ex~q~fFg1)6RKh$OIG+X9A$00!lo2sD?z3Jl7p6{g^;h13Ovx&I;rz(M(3{ASLMI)zYnBZjmPG>X-G}(Z;9>k%P9@OJRjI9#IDanS zc_cdkrOnKq1&4FR^_;7kkdE|@E&c5cU1y4=5{EbwzBBAd7eH zpMZbw3HbLRTD#?_#-}1adn)34PetgOPEkj?849iyP%{pt`An>UcBvL(ln@hjQgr+) zQz+7ys=?57SAy@u4tJq(PdtH$DUc{WxBC4QtVCuOC&MsgJQBrgPn0O$CK{U^iGFMr z#v45Pg?X~6V;e#}A4{--o+2u<^RToRc9va%d+wFv+K#j~SY_YAc)D)mm|Bl~c{<0i zQ(hHgNjYdSF~3lTW6Enc=~KZlqj(vz!B(UPgL%L<)O7=p053SCm5N{+CQSjW+|!xg zVl~NnNi7`wU?9+sJ7>H4Zb-?{2kqZbn@(9dQ{hx&yOh4zsJ~^UAnjrlWni&%wT@W0 zlsm9^TDVc{=HnDDzi_Fo5(cHeQ%dU#n_C!_GDR<)u!#*!1)IJu)XX`^;1f9z?CGLU zWoEuvzIvcN|=>8AWXs~gDffB$wd+2 zz-syKd)W{@B@A+9LuJ_s#8;vVK-fiXYLe$P&gdJgp``lh1tF%*ye$|uXcKB`FkSO! zSj_Zc7!^+|!qW-73j-#i%6=9+6-Fn@aRsP~vJ+*EKslVngdCH4+_2T{dizED_RcZ` z)3?kXAkA3L^EH{#LvuNu9kWiv6DL3m%L)N#wWrXGo|=^hs9%6s3+p?k-67`6i~%o& zBxK8%Dwju3c>F1xJn4D>*qd-g&|W@Mfu39n$0BohbwSau&wIfeG)!AxN<HQLv1tlOeiMY=nSNTzRQDQd7A>@{byPzixkRKLPOkCN(&jp)5C!4l{~ z_M#z8=$ld%83Qn+!xH+MOX)Jx=eR#HJOo=C?sePmjbUAHWg>~j^f^mFO(AKGQ-mN0 zR|&?0i+pS|Wp+F@c<`~EvO{77Hg~i|z&^aPDVqab1Q#WF)WoY^z>GvhoFcSg88Uwdws-yXFB@sNb5F!P3 z7-n_BV(qr8dRc^AvM32d8R()#HOur%h&It_sad69++ViAVV6;*mikEd)>G)L;;LJr z!d3Sf)T40Ktx(~rTk|W#c9+{{a@B2@xT*lgO5O>qHuKc2Y{&*;s(r@^tqwWsE`kz3Hq4z2W zcW_+;8j|B$`WA{=uy_6S@;Ra{b-}%TBUW|~;F>i+OU?&mh~hl8IYC!iGs5-Y`WuEv zc7f*ln^S~bf2+gt0B%XY>zbc28ZnUk%4>z9*%6<+bqls@^hxb z{ett2&l#vPA1*QH1ERsO3|hP^llj|#bYRf2>pIeyM_!tlDM8aK;1cHnFY4&TIyyK9 zkaKWi#X70lPOP@0Y8ktMoH1kpDMM^KN9g5ZrKa?lB7 z^*?92LnhSAqcHQIBmuHc*PQ0V44a@1wu3f=;~P6@h_ktnz1m5PnhIwNDB&dAuO zGcx{Zj7<0x58|K3$oQu*GX80djD5n$SmS8Uc%$J~_i3Ck!Q29=gYE;pAaZ+PqQoVg zJan@Z+F5Br4!Z@YT=rppU|1p{WTN|3;FqA?fN|px1?cQJRe*#XLgPv*^JKM~6d&ok zK(6};S*rOtV#<4gw-JkSyD^KN1})b}<0BD{5aBxL^j*K8g%c8NTdh^$CiKuiRZ^SK z!|%T$@qoPTiS}!BGDO%DX;eLb4@(gv=@lMMQkkU&dQ2#82fkAhXFd5-k6eZ1_Mwg# z6p*rLpz>`4Xx2Md0y9xrfvy&$`PToZEz?CW~`DrfaPtym=dp{ z6s5hl$jNr=-qz!Q6m2V_q7hN3t%y*UMJbj;m{+!Z=hVD(gE+qpeuXGFJ`&qw8ulBR zD6LpCd+X>P&%D zl-?pQV2hN+4!hz7rd&vlqUZKfhH4I4f59FkCq7W!6}GAs*z#PsaZrkHZ}rCCQf=7HYvOEb8iR zIwcbgjzC9t&%9``B&w*d!JLMR3kWa*@T&Amk&s?{$4MAO9FLkwg{o&<7?J|;Hh+{{ z$ND7~Qo*6C^#NTF4X}PGujG!_3|LSqwZz!(M1OUpsQRkgiQD#7XY+uyc;EO@O(}k5 zk%d6=tsZyq2gp?iRAA@;5wV00ozJF^nq*~NKwudFbDGLV?y%r(Kb0|@@#>Y)yW=4u zRhgG~ZC0*s^Cu@Jj7k?L6&??{rJeD1|M6rQZSY8qFcko9t~T$5BR-(KxwqL zvP+b=7b<3TH|_WKLcb3ObFA~nR>Mf#tiIwRE||nB7@0cmo9FM@3*b&?<1(0IX#~>` zvwgpfS>zf(I22Z8gtJT8l=#xOXWy)b)%wxIV-^_`3xmWrGx4b@)(Gyf>NZZfEq-@$ z2aE;C#MVYWhNnuUkZvr6F?xr&1nMbbxLgh&%K!wW6J3-{DaJS#fXNxd7AF|el;see zfX6^g5JiamIwspvf(Qh6YmB2#O6Kar-wBC$Dm6k-tkE?aih$yABv|VPE?W-8IHthj zM8Lv1e=aq=0o`-4Q|>qi<@FhN3G*DMHKWHkZ#VbDFDJL^z1Fdd4q$Y+ovA4iaSPL1 z_A(;y{iZ-a$lw1Cou2Z*23|=VmAP%w$rkJ=p z`UYjg4s*2!YKL}>RK@X>E)+4JyFg3+5q3>nXRTlAkK8ZT$GW=Yu2`& zx&3`%e_uiue<&yOx*|J=?ob;YxoV z$a2lcwLsTXl3mkC&eZNpUms>3%D(0w+RCZI12WyYU(jNL()Fo~2gs@2RNdgCg3?Dc z8c`MnNHgPCQAsz_8&Eb)_B&f?5V#9lr?hZ*P%7Q8whP3x#D04$m54#$oON3X)e*VF z7++HVn3qtQh1Epg(d7l@OPx=FG&{QvzsvCZj)?(oR~s4N_?fu~n(0jt=}KrsB@72& z22EwPvC;MBm`X13qX1nE;hwL4u#HojH5KCr{gE?|eDpw^W{4&CK$lVQX(j%sjt)&vot%AEH zSz*-3HX+sInf^T2A2oHNnz>qD!Y~GqN3`+>W{6)HNxH2MDAa6CS%}4yaiKq|ccR`- z1pD$Cl}!1V4yj**MgzmxQJS{)rEU?r##~8Q>k7lW-i#HV&u;k<)dbAd=pSv=eHcdz zKH%@2*4=C1?Uzvp57p!Ro$L%500lPp_qz1WCpwqen&F@egmhdmCV+2^EK?l5(D!oF z7T>C>ZE|gYXR1O+H99o|GCRDY7zB4dgS1ms(%YGEZ*~o%7Jk(@h2PP**>%8vA?oa! zuGlX^Q{~k8Rg!BJKi8|c$dOqB#stwBh2$N8-t)P7llN`c?P!E9xYJEqS!IllePq1cxxv4N{!WBFT*R+41bBmipg(3>hAS1wF=%att(V7a zsOL+FzmEqLOb{QiNahzaa7c0 z$Wl>73Yec#-BD^7%7kaojaB@^AnQQ!s#8NaDI&`YQLD{077T#~?nav)fV-%iF#-d~ z)<{!A?jLP*gfWEx6BCP+T8A-?LDMf5;kAj)OUd;N1^h}gNKxYfJJ=RMs8S4y9=Ig) z+!zx(Nao!!mF4?J5x#>%!4_++i=4ypgryE?64)vQSRV#VPh66x#V9dw>yg<~aHJ0}J3>cHYZHYl=H(wH zV6MB?#;?+!N|@7^&V^N27_}{6_Pw3V&ofzLR?`La76$300)C6I3Qs~%Jhk>G`tid~ zhdVj-#-P&!MUIb;-D{g-sY@nDxWqfGH(s6eIv3|hnxV_>7j-zj1Y_)R;Ir*HSk}-! zFpmO5rY0lE!ro|c=d8@Vac=6hH)2( zNVXR86b(?M`}Yh{MY|OhPi$UQ(PhPHf8$&%J*7v3wxue|4u7hR;YeV9OZV2OL&Su& z>O~@H2}N$Av#TdsJJvZb#+l}+sMO+8S1hs^0gDWcwJ6qDsMDf~)>wwp&%hoq%N#te`4f4 zeD+*QMZ2_-LLQm!a0FYU)!k+-bS8NaQEJT-a;o+KZ!LDmLePTS^&Pm`HYKFXaLYvDZP_iO8s$I?lVc%Cq9LvJZAvn$m1JV}#i`?uB$znw z#>kT!9FZ7OE5Mu##{hKhUc}#Gk{TnJ4ZAOsr()fFnVH#}S7yvl#mStR`Dv^1&uyVg zY+*suo2|0f5+~zp$cC_&GSK$3(#l zQ_E(4JI52q@a9scRDKUx?11KQ>vHriNPM2B3Pvv}9L&g4xb0$#RK*#J2xi>9mGDi3 zeH&Uc{RBAH!65T64S(%wq$CxX)4??HH@ghKy0Uc^u2q`e#%1LodxWL}xT>@RV-_)- zx9970q@lrjzs~PK@E#ZPnlq^l8nA;j0*81z5WQ+WELt~4pysReZ*Jo;vh_B zD};0t(@jHcV)VJpYT>@-Gu`pCn(f9z)4ZnDvp--(70_XZn=$SqiD+sL?U2o1pF@6i zwO$wjMG;k&|2j15T9zWe7Gqiws1FY9m$w0|t>HTc28If8Uv80Y#b^wK;Trrd!1@*qw*`p)~^aDbF&k%-}vFPXdY6qaL{w?K$masx= z+k)A{&Sho6J+WDO*v`w97Qo_UtQN2o)Jh-|*vC7!<+S0T!C0Md?w>OTs$_#90m?$- z1!Y^!K?$^(Nb;mRx8@Zfe4AT<@Xer&Bw$gRv&;B#1*sH7t^z{B0XxI$w*X`IZ^|TQ zJF%d4hl^emTjXz)Q@W*>oCg&e2AyGH5?x@7v1m$HCZM_v^QN8p2;u3aoIs&{En~eR0FH7b{GMZqWd0> zLM`8{-P^mcObIscc(5VfsR9cFz&J+Y{noEt@qM|_%cC8hJT=>j?+Km%MuOsBfL z7%Uuex8y7=C?+(ZN(%kGUsYb6{vbwtO)kC5MzhA4Ai&px#;ZXW3p?8v_OMRJ}NW5cWp;X_?v zLWO4mg3g))HuN9@2FRnez(TxKYw`OEIu^en1E44u|BC)!emGjLopy7FHtvlJtz|b0 z9aJjEk#0GN+I6;vyOYxhI6Vch;((vfzd0#%b6rx(Wcg zZK_RSxLl?>1%)>dnj#F6Er7973z#{*)isg?>d)DD%4zyy=pMBB)e&Up5@h)Y&Tu$9 zV_*rhK_1m*2}(o12X>{-#&oxcXGLi2JjGy#h?Xhuf|B192Sq`Cet@i5tG%GWAE_H< zfEeovpybUpPPwGfAx#A7Zc6}}69YE+5WLj*dJXQ(poqFEh6M)3_HY*!6or|b9a`ok zpfwNjiD2ZIzy*(!Kp2dn?h6B*T1*jlu0t(@rhatdxKp3qPPJ(2-0-eXCqrp|>q`tN zpy`T+2bF%VZi;{CNgbc3V$&spoXj>bM{2x)>@w1!t1Jbj)QV9qN|e%#C}bs}k(y=W zDA*upb{9Q#3$@T8YNJE8JXA)9m+Ym7?AdU3vae$0t`Q$f10^Ux3ep$PqaC>|F^3rV z)ZvDsNr(W2rtt=eX-qa^HDe_93A8nY?7V1^Vth@Kq{g7ohAGgGw}XyafWgp69pYvE zS@?af-wEe3P9`uKN;z3~aVC|Ehvb{9;=IpVe1G=2a>(11YVtFMe(dDJ7+dUQ_Le!+ z?Y1)32hdxF1#Pw+R#XNWH~q|~=1L|QZc25|k%CKsVEthPPKVd|RBbVamnV7EcV~VZ zD3mq$9_r{#Eb4)WD*3#1`B;(X0wmC2dLF5rY}ML>WYQARua<~@UxeS6{yQA0E%7QD6PmtP zEgd^ha++CZOo20cY+mFhi1BS8?hV`%qelozV|FzXxmd8UL4tS$7CL=dhar0qDDeZG zZnIaHYpCp~)o*n05_Nvjxxn(WSAWAa6w%#I>wI8f=uiPZ>D7<2X1m?$_M0GW5pmpV zx0@*n?yZPwo^=OTF;gX`Kj<|FjnnL~$LXz7TmuJIP41Ot?bdm-&)gQp3Bs;e0M6=|hm>D%JOz-FCgvWE(2d*IPYnXJzbrok1Oc0~WzB_PfnStKQDGW|6WFCwAMh zcx#5T`?8j?gB&MaQ+U$ASj1uL< z)ou1;pmEgeoPnwqbKLH9yI0u@dse3m`HYhwYt2BXM@L|~eV#W5Z#unKWIsW_IbnZh zEr>y;9YHA*b(^I~lAj-DR)9NQ=raJNV0PNXy~%))Dg)oNjs~YJ)YE3Wn+=+m1HL1l z>s+_9u2(E-6XJs~F3k5U-eN9vAT+L9GX4_Sga|I0mm4Tk0qjIOVWb2*aP2F>#q{tK zK?=XWps@Ye`EOq-Azp1|oV^TJ#Xzn-*!3NZ#Zw7q#)C5Ud!Rw3!QjYf%O0{2nf2E& zAiYCbq{ph0OE?HQiKPNfAc!j>tIbHh*3#j?UVDl91qw0Zqn}kjy!S>!~qAx`P z_8LF?Ls<%_9FA9#31F_aIpUR)$tjkUI+6JT5lXSrm`M^~oMDtSfE=50e@s+>&d69} zC|}AS&fK~(t~|fq?r0} z3Tdjo^}#YE-or-OoAl>O>Mi@tKToM@;GZj@+6fXCef4uTXZ~$a#nT#VV1K+Ot&CI) zt#uvnA|^Qf^1_r@$EU5hT>kpYjaofo2J|4;0Vyd=j|rv?fyz^{U&;ER6h5rw9&eYS z(fm-n2JtsajoZ#I7xZDGKl!tgsVoS1u%_aLJ$qyaeuhg>IQw`=U-s;ezrcf4|4JTN zT>Hvt$}>UE#2aM~Tj9qLhF00ls#K)h-iB(PGydU|!-1O!6|wRJc=rxs8|Pl5mk^ zI+|mhnLw&>wf@w9p83yn|9L@6(Wb03_1->Y>ziZF#yx)BXJH@W`0Vz9Oc_I?oxY`Z1c@vp=Kh6>=ZYlWU2z&^Y_%}mKxc5vbIAvJ04>6 zG4txB*&VpnDqQ5EwS2QH;lF<&Q~$mU${09nrmR%8I60SQHxJupSWtK0F3sOpo>7xb zEW_30r=ql{QGSR<5tX)T-%)9i$Jse0h2G11l?0YJtb^MtUUai-BT~DqHo9@z> zMM zc%z7l4FS!{4N*{f_t=mSjt$Yv6Xp0A_J+A1pD3!a$^&T2_Yt#+Y}&m3&>|D$WGj~F zorJwHB3^WM6_Kn>#JOP|f|VvWY_VUBgng>WsD+h%NkoFE8kODdHq7ML0a;8?t}d6t zx&+gWx0p-L>Ri&x{%1~h%TZYB=Ao}$DtBd z6uFIXXz;f{aeyTIPf(e+rov%+VNJ3K3T&jX{6%YVxGh#gc79@W1|iwM&p5n z_{`8=q@62iK$P1ziPdHznRJYo)~)m{LZh@j9oSTMB}~oWsN%I|)Nl|(K^f8MB{(cE z#iKB+CvYlR^Bw3TvLo|41Fp>8V-c6M)be(1QFx1GA^!cHzfzN^!faYK!stjgCWTu` zt7;H=7)M6vOgj7U>0$R?zWp#!SxHl<^NK9jInNZOe2gs*oAaZcsBDX8`L(S7=ud zall{Dk73Xv=g*#ukw~+WC+dQuaja-IM}bP3szIz$Afl+Gh*U3F*ec0(MNtb}u4ucM zs)e-eAB}olse)^7<*~u$w)noyc_8Z zA_KM?W$YoO%BjLsW{^mMgnuTIGC(}UsO$=qlwqkS5m(F*nRn0t_r%(YD>)a=wTKa{ zz*S<1gXDNz2&?&)HiQdL`$&48h`|75gNEz_304!?W~Juul+EiA)9DAI89(EsDlPK` zWL5wYx5Yxky7D$X73&R31GAM^t$8X=O-X}>1`00#V=V=18gsaw&!@2eX&eFFO~zw{ zMjom}CyUIoJy4R`L+ZZOrF{)a3IAG@_(AFT(+gx%H z{YLSO9Tx1Al!>>D5_~1m-lAi#_5luFD?NTx1mLE)>u8vk5}0ccY0kA63>sAFHi9Y! zl7#95=E9?SubOQqeW(0z69VeOu>GpCQ2SNcwmy`570M0O2IHhmgQx5IW2HseQ zO)+uN`if=Bnj@TWH6&<7u`rt1?8I+bD-eNktj-_d%bhQ1VR(!VAZC{CiN)dkKkU7C zcwWV|_C1e`!PIT4>6qS&=^bQCwuL3jNHSoWkZiet8!lja4}_4=LT`aU0s%q|5JKpL z9(sTT5&{GWq4)0ZzSrD)tw*vr=ey3!_5Sl7a>aV){>^T)*P6BW%Ia`F!toR+4P17if&S#D**)@Gq74u2O8p9Fk1_ZyoIM`e-D|)Pxf0n@OM+xZ1#f- zR*c2h#d)tFRV$Twp7OI(*oDnz#kUjgiSxt_Dt~a{btr5jz>`}09^I4l3!`>(s}o~T zhAsY~G>ivtM$=Gvz-b|KVFtVb$)q^)#6*@W4BUUC9TY=4+VjaED0Ad;3+jP(4p(Zi z4*+dpNuPvtkMGg*c_KR5Z2ky{+*nilS5NC}XXiwIgIHFTT_S2jI9vx;iLHXuOP}f~ zYuaGDP;@|Y2#}Q)ew*LI@wl6uKy^ox>EeJV{M$9-pmx3;>F1{Yvy0#VL!HJii0m)c zRmHtV%N1%}&YPV1ti0?=9?W4y$l)KfCA^_Bi#`RgzpSr0u$-sLV9BZZVbHDc5PV!y z&clsbptYU#9>?x0 zsLneDXN*~qcyakd2VRUmdEgB0JpD3htDoDLtx}pin=jj~)>@k#hgVaT9MmJtaWUfX zBo;)@j08ttMv6`GtzA?3ZqGmEEbEL{)oHF7&v(=rRnsz})G$T`b34qM1~YH98N(Y9 zs4;iH)wH}M6WMg0XT#w|WXa~kv>cq=A#%WaTG7AS0c)|poL86GSVwZ!NDQx>JZ&bc zl~$PCSSuF$Y9SXMH|J`LynLH+nx+BUZ=J!>X84yK5%|N72>h|DpD}hb773=X(}{EE z7@BR>Vk_sq;@+4VGxYbND3Ah1{B(QD`Xn7u`b>Nb`dotO9_`!FY-MHji_( zHf_|K_LnQK*LI@g4rLxfwuwmlg6uBkp;xHWT^VBImQY-w*yOZ)84fAWJdbLzO2WKI zaEt0Q8p25hyKRT^#!BSfq#0N+XBOve^Ig@!*(Xh{Ryc3MEUu~Id9spEzxp(W;w7A` z*!9#H5MW`x{m{wNrj5g6As4K1kMLku zhd(C=^n=-ehw8oX$a6S zU-fR$--=Sp5BvUx4=Z4 zDL;Nj#bpIhY8-1`CCqN;=hanP@k?QwA=fV1w#uV3>?s~CtFf^%#%bB$c)VNH;Zqwm zzHkU69ysx}75km=gfj0;xJFPwgYBbtTz3A^&N0m#(j3ZQexB4mln-mlQ&taU(&m)J z;ZT!GqBr9$r7DGvmg#&2M&CkYqyNQj(W*UjTEIp$Ma4eKuP61S6xrx~ak6kT+<@`3 z5Uq9aQn5ihu-q!ydbLsFJtfPE5)U0yUR57N@A6fLo#)c%U~!Uo2(<;|^9%!MBgVA_ z<*X*LFN9iKK_m)>JMn3BqPkz0@usG*+NjA z*a8>LDx}kHIq23n$rh}dH$At;!(MWWD-N%wSDRK3$*Pu5T1r)N3|yv8vyDvmR!&Aq zTsBuQDt|VNY(PV_srZR^Mg)Ak)?s!fe9hdUPd^xrxt&=(&W;}pU~DW02QzfrBOLSO zXE}5?pi)qRZ8o!~<7l;$X4n?+?<{W0P#OnaYiga|cvMib9g|pUO`pI-a$ z+9o^~m3d~`BNlrT(XfE30qrud-FYbi3b_P)dpALMFV8c?6>iEL9QcD5CL2!xQ|(RW zOa`T1j)%(|;G`X(2D0{b7+R_2PEI~rmkNuqY9sqRkt21GMQ7NE9DJ4FU$i-G0lTuF zG^MKF)a^ZxyFhmPjY)K?Y{3S^l}-NT381YWRVYza8CXNf^!xy|Mx1Q5jBd(llk9=? zV4HlSYHPC;90x=6W}=y?JW`kn}P|LaX*n7+tIcudv)k{Zlz?g%QujN$JmdbV)tJL*m3&p0iueG1) zBzVuoKvlj#VKwru88$}18oqE@wd2s^jK&(+dN&h-@8q|}{EnC3U%i7G$mXLa_t#V?2C=Mj4KMxe?q&mS8P2{s`eeG4~KS@^1< zneljLIU@6Mhjss?8R(jTtx3+4p?SZFRK0&Q8d;o(*e$|NNh7?*d;ojm%BADm!CFho zX|(y3ceix=OiX!zsmxfJqWiLBj6f`_af*C7a^Yz^E(dReIS((rHyL}3BIF2}C^D80 zzx8Juhz@B*rXHbq+ESTGkE7&5lMI8`P8#w=>MR?U0IW%X(FdQy#I;6w+Sr{c5~svx zO9pyAO0XizrQFmpVd|vuhs4F$v??rwo)QWmq+v5A!L5-i_OCtlP|?hQ4<;v@8dp|T zU2!LIWuw@3iiOWHVSA2!VTE>wa>q}cKA*4gq8HbXXV7v=Lp$d85L^sBFqZ+JTQRNp zSPsLC{yIUslQ7Qwsu;V|y>t>6m+z*7I9W7Ma!d>=8138MHLb}pYylcR;=^bXK95Gh zs9_LJuVq4FFS&(@P5ox&MsKGR;xJef-jPo6_Kp(n;1 zqHzX4QAyJO@Jr1=WpfTLbqJRRx7ReZ;bIKuWZT5L67g6<0UzJD532fYABjpI%tcb35mOL55Hy6V*MVYq=MtDDq;+7&gioku>>@L?#DG6RRDYGU%L6KI9Al{xg4 zCaT9$DO~Kz)Xk}AmVmZ<;LtqQ)jYt@gRkgED0XmITE2vPPI>5;nbzz zQ67T`tMc&>UDbz;#(3P-a%1a`u1-(Fz{IMZSD#Z97=p5O=y&m}ZtQ9*=Q-!oI&Klm zC;w{aH@J1|_^IAxa-xo}U;!KYi^ot$FrY%7=MWcj{T zj+3^7Al~9u+h~ANZ|B$Ao*tp@E&hvh?4e^0+8&$2CG@j;j6`I}CCR*Yi*2hhu~oN` z6~5IN&dyLrgJM42-M=KFmqKY!GYtn=g3fZ<~VB3bgwa40Zs1S!3UBpa%m> z08Yn42kI9j*o4PF7-PanMlnxT&p-Ja9NuP6v=8r|Z0w$Fh11kwzG3vWVIs2f!yKC| zq0VM3D34(yUeKP9ztZ6t5l>i|@hhF|Ms@s52Qw|O1-{Pu{>yK4cx9UR2Toc3#MC*{ z4w%w0;{cvYIg{=Wr=lJbnJfZNkSLJXuT?f}ve;Al!obnX_y(H#5(iRW6r@qO8Zm5$u+Ktc{2J zpTp%j2l=l}{nuv9SuQAtUE#~;p(ZU48_yONIZSOTJRH}pYtg8gV&vZZJHrU6_$lwYZN$#gm6j){^ghj{$-sHtLM+C z(|ZaWyTu%4nc9%Gx%R~crHS{*-!V&Ny-syZR<#SOrS;-d{mpV$wMuCX6zG_kU=60v7UBYc>|qc7Xf7_f&LDSL_V0MT7Q(}oQo z;gONE3+?FkxBM<-UW0%m4xNpu)$EZB=Ezq&Y&{IFI2~7Sf7@+F4vg0rj$5OTZV)5N z&u_{IZi9(X)s}iEM5GTaoPRgMQ6f6-FV_2$J^X6bu6Af zxGyfyf;)k~n$pH7S8G9uo7%N0tS|pUEzjfHd{FktJb~9@$ws`BBOa8y>f&63cwf#C zA8}xelm_$Ink4XCq3UrSdGg2hJ^o9|n5u2tY_`fsa~Oj)KZxgaw+8Hz*w-O`F>nEl zL8wlmqc!%6yM}?fZ~|?O=)lK()Z!9QUyVgyI*MQhUyZBOoU@xYK2ImvO;eXGZnKAg-Pfyz1$t(GK!}snVXB1u1r>Zto3Z^Mu$p+P1@t-2m>P$vdW4U%;XNB` zHl0sAPka+RFHK@aHQuTad+@-+1ZD^}Yng=kd-=3#R%SM9k5CQSer@QhHNEkPg~n;) zUSPVrbYR9;oUQ$}VO3btgk4El@L>}tJPN8YuTzG#AP}p#J`=r2Lo{)!k3TiXd0U;e@QVC`6}Z?lBS z_*h$F8L6(BEL~KUh~hk0{>AQEI4AB>BbtF>C}s&PTbnrpRv2dBEn6L8Nh7*k^R zdJN^5Hg?G>v#ZRE3L;OD&nM{oFf-t}O`I24g|&HmzA^C>T|KrP3{le9vIS6jY$EQ+bg$HBhV8K$- z0}}2-sZ8frJXJaJZaCHeIqV4`A6@3aQH2CL7b|rK8Vfs?xiPMJ1qpuH0g#3byfO$Lrzy9+PD18pHYxX-|j*%)A( z9b!D*Ci%FU2vw{6XJ z%>(iJg&GN0i}nGIvFFP%4WIA0cuht>1EyX;n*(z2r4${za5?*kwmMmU(3^+w;NJRt z1yfkZV*pe4*#S)LIT1i9cAIe^i`W55y!%dj&N#rF^UPvUiu3Gqo(T(>bDp^gve;u5 zgS=0i63m5P=A$EZIy{a)^SAlDok)yT9}izmdGjD)xKq~*cFyuKfdbn)c-QcA0=@(2 zIa|Sa_{GeL82=C(=HYp?M{I*$!EUn^OwF?uh;p=tRsA{`YBIKEazi_iF;qPi&=2Rc z6!14k-%#i4Io=7-_QubS<`q#*(p8X?UsUr_b@dojjD-%pK=gG!Mh#*bH9X~FqbBSa zGYfP60QOqoMFvY4;1L&Pi3tWcI;z_g1N)a#43r_%+DmNq0Y`Y|sh(oMbqqf2KE(jW z%kcqeX4Mn}l#~ybsq>v;q1)m=Zc{grr-4w{O`B)?>=1kl;J8`km59URISuzpgD7(^ zB??Aq>vx2o&YCuEn*0=gY^kZ!rfxW4^0dwlj@56lCBJyH^VyE*MdOS&J@fGvYk|r< z86xlV9LtD-3I}t5o9-X(4&Pews5B?Hli+u!b#C*y!;pWfPjfJ3dj3wY+?LTB7h@=I zTc$Xgb}C0F8_P`+C@f1M?BY8X-#Ko%$sAmlyF_ic(@Zo}o8G-00o{Cf_4QMv-y+Ck zEh;#HW%vEYIomTcOxU;{q1g^qUME&iotRD5GU21IJb=-fNbEFB%GPfqR$=7!lw!v) zXi3D?`Z*faMHjP=bFKRk)n^0i2|NsONFWOxj~;gER56=2{EY23R(sfP`3S{_!zpy0 z5hxQILAoW%R0&qW-BR7zR@e;7J?VC%x?qBJ6H1CdZOoJvHBOEKLvsEI&R!~D#8mM# zi1D;AYV3~D7WEU}VUcKJ(OUvHb`*RZuT0p7eP3uY&W*J@9&u?WC>xGF(r`Oee(fB! z%=5wFhjRcGc8=bSJ+LezuNAL~y{Oiv4s&LkG+qoMJM4Z4svtCJmE-z0Y2U0jaVs3I zM@|-Guj*#Ks$1c?YM$fUi501GXqtxqO-Y#QC(XvcGt=1AktV0EG%l?*5XF`UrJ^2S zjA&s)X}R(&HJmY8n=sY~)vOI2pokZzQe=l7hZg3BXbxlOTJ3wO)x6^@Q`IiaknrAB zwF`_VDG$(t+Ps523anuWn;pxZBG^-&_j~ee)CM-=>)__by7D)s7#@L(%`?F^v^CZv z(ZVTX+glsz>XEClerWy;YaBeftqqgjj%ulIZLP0^S4wE9Z>+C{fS#Vvb|n<5nC9`>d-{Q4_@C zpgALUJI}JAPPE&e+i+-2x$~ZkkLUSh>KZt)adXR!X2>Y#gp0M-w~Zc^ zQz&E3x|8;-L(f(%xywa1O_Nsi(b^~rZO?M34^nabx8Q)w9AEY2CH0i5^UlPB>RU`r#tL$_VeA&pP`xmz(b%+?d3R9qP4y#3$3)06^|Lh8in;-L z3T4SCMBA{N2#3HLwDm(VF*ohMwSE-u4r)T1QW^KvHn9W@v+7VLv6jl~*=nbzqL`}> zWE%F}RJ%v}Zt%h8_NL~#`c@SD=uvoAtZ#3sZyVlRhlaLp>GmcVK|{MwybUMl&WDUf z4s2gH4;ebTu@Mtr537fZ=jM_T?N|{!H>IPYBzt))&IySsGi${qLK!i#dH0cMO`(x- zB!Du(OGh>AQQz3w-qbLX{yeyym&D_=wxbZ6v(~LZT2bi8S3h(p+^n@-Q(ET(SCvsK z+eiji&DCAzgi%9p9p2p1He_^pGCqrUDd+vM7OQ8~R=-<)SUMl#^TQPiymfeOUGwhk zgPT$9HDTXMTXlvr#RT)5yd4+RzFU1uD|{49D+rctoU1%cV^mA?D4Y;5>>p*(z-q0j zzKPXHTQlxhYkkXZEc;QlZNps9U zrFl#?4K$cBUEewcMay4Jm}tMgsiCf}u^#2*%I?GK>l;y`BXMor#nGc64Qp&3jH21C z7J&kl9}TX&cZeh?KVFtX&JaYL7GzM8Q_|D)v6oV5Y;LZj9GN(!J*}v_!p%@gXtNR6 zB2sb+F)YMc-_}+in?q=40E?qiG4rU(ggN(l9lXrcJ0+Yw(9C&6U|(RP+3|> z4aW)roLxWy-3M-5-_nAr2kT?QlB)j2?P!}gX~sAkoP}X2XnEtDw;U4?sWIq0UKRF= z29(@~IBwb=XGcu)#}=Zt_S^ueC82Q*t|%VDVq7YtV0AXd zzUpjc494UyS!X}!2){OFAk4|?bxn{7&qUVfg*OEI_8Lih*|Kkxu@$)qb`*R4 z!2^@4<&xESYZ=cqS{zKYbpUM#L;b4Jo`%=#DOQN+Q_HKbTZ??Y;A&}XzDewT;$yuv zhoh~U6Ch0B3j!7pDYNJJVS8=uwoP?o?I+xK8KrU z2{cyP5ld)IR(R&E-cWBp_Ku3{>xO9bI5E@Q$;zFX8pf&61lguV8x2GHq+Rt_A>PL5Lrs#ZhH zZEMf1!Kks!n$g<8F$?*&o7g-yH+G_<(rf{Rh@6vWqo0&>Rrzl=62fcc$0*P?F7j-5 z*e;?>Fdt~^P&Oj)AM~8C{Ski-#xQmC8II#$vwmWkVh7tPv6yvra?}VuHqkPTqM5>y zSQA^4?WD1_ZZP)R*4|Jz*m$>tLr%>p3!yH#(&g_2+x+CtCdIOpoamyhaj9Lapt;lblP zZCxW6w=(24j2h~zp5E{rj@6llwW5Ajrg(FzZ$-2poIm37k9Evr^LJt>S#9GBA=S6U z(R>}GI72OhR8=;uwYyb4)s-s}MbYwQ9or8XK6>Pcc0NTm;K7>9{*+2XohO=VTiFJj zN!9zCXTXCm51pUghVa!6*_Gm|UJb3SC=1+{(9m9kqKWhnJn@Ylg;zOTd{*s&8*5lK z;6=oDH*9o6xjWySns4qo*}|s-droSe(+|YAirSHRu`1kR9o=4LU>Z4zSHZz}_OBml zZ?68FssrFHgpa&<`@vnx8=(Ag$(%Exr-YNhNe-=TYG@qO-i$e^tp%!;Q6+0K%Mcny z;+17&8!kgR@NR>npt$e?fpVAH)@%>hRjI+XEw~_U;8CKthDBfKi-hjoddPP-kh44A=R#m*`S+I#X?-cgaZOdA` zx$KUs>LywXMz#*ztC6*hXxQnNf&25_}3%PC>w#8lO#)dbKZW-2C+uDjV?0L)D zTVT)4O*qy(1a{QWip_>&-0?gxintx7gQA%y2Yj)uVF=y`!STp454V!bi=3g3n+G>F z!$!&_(B`47yN<4HsqgKu)}qm#d2ff!yrmg0ktnBmcKp4-*2#kz&$Gp-#?h@XsCo3d zhFV-hU2mJ9E*R3=!L77=14CMxTUl+g2?kAItTy?u=BakP?vH{)Rw=p77BxyYt+lo- zg4)Q@O@q;L10h;G*ua5P4#8H!%kdQE6FMUu8o4sTIS0vW;AMb<39va9b4PuI=R?NY z?bCOCyW!2c;cf>*(+#RjJb!TgK$w2)v&W)%eAlxVZoJ%Z+$Ekm^KiQM*8G_^uC2^q zki0 zd0%?Uysq!jzc2sR4At5X1~KK%$SoLGCGyRgGu%*`!eMb!$D$9*K5<1O20m<`!6ihd zU}y>kTylsQ-*tU@SD2o%;Ay`{CZ6fku^r@!xmZc7;1>^HEfB-DM9U3d_cmxxX%#F9Q@{}ZZ_V1IxzT>BS1~bUEIt+3s-~_ zur?Ro@ai;*WGkLjH;v^#PsTy*Tg{_w+P)R9zT3v?z~+JHjGa6iC25bXJkdEE1c=f_ zfnat~8bql~jiFjF=%MUE8{J}!?zmq=hYrO^Mt)UU5Z(6d?Q`;U>&a&G!)fpyZgc-vegjZUL+KX0yiW&Ukp{^!lN zds-Z~eER$^^*sYO_Cwsr@9-?Q&q8zicH&mvgS_{kjvH8vT=s1gal;bN4_gPPeBx4b z)2BGIwgGJm9l3f+FE2MRy|iXZ+pV}zT5=t{ovysdd@HPn{iMAY`u7GYt&j1Lvo}fU z*7@(+{`AdKdS=17b8p`=rEjqROSehswPNnvq1&f)5`5#%9aBn64;{92E&A#P^hv7@ z!CGd^eQ@2-q2Mr+MTa9U;T)zmq;x%Qz{VqR9%yEMttq8`^XVc)4%qzSxCp#k%iLYho-bb|IO33N1&AhWwpc6=u=o`i}d_) zDg6@_*B?$y>4B9h>BXOfyQaT#fx#(TUyHr>D{2pA_fMds8e1A&& zFaP9&?GNG@E6ts|)}tx?CG~&gw#QSN*k|GN#FHr8QT5wjH`&>%bEu7Nf z&!@D(q652IT{}|=J;M463e1>vfcwpM= z3+!*viD}MPDJ{^yCf)Tdy4jW-nBJ>Y(h&nDFMI^<#Uji1OYh8INr%A>>KCe{XIHs* z;X#X5(uF9Oofog9tLNV?J+M?IZL-i8>;85?B`vq;VYj}yTqU&>r#-vaij{Q8;-A+J zSh-?EGK~-4vU(-0x?Ds1K5JFdLn|~sJbv9udTQlV^Th_0v{TI&MaL$U zbYxDzvM94{cRR1*+ZWx2dF+i|ad|*{+h7hY$7Jv67l$7Z2?W zzRb=KZ$G4xj$8JNbswn5`LB@rO&(rJH?6ey!&{C(*`*a9S$AY5HTLPaasFK^Y2Eo# zzYSr`qZUm4X764}=PvTV4F~O6N#_-*-%0!6`j%Mnk*)Ttq&=7J|Hu`cINt%Ur1kKD zUeofMy#2^ToYzX%UwP2vN}5yIVWs<~Rni0VP1v*lCfD5bHC!sCFCOkpch6nAvQRoP zO~M)e7U{Y8FQsK*rzzbI?I`}hf7Ca5yECC~NpL9pZ+ravI<#f#`fu{x{``;%_Jl3&sA7j4$_X+d={u3rbUs|vqg8Tga(~65dw!p(j<0rI*Yi`58 z`M+(@f}D=5q~XU`(rG7G(hH|m(!g^nY2rndbp05Ho>Y3J)J>7-jK>B&1PY1#WK zX}^b2A3jk@A3Rq{Z7-qjeYKK4daIIld%uz{{uFiLHNt^ztCM}w3P~$9uf5)Z5elL!HQ|h1krEjkK@ad+`Q9HGpzMkpp z+rP(}ay0Uk|E*brZiX~B9RqUDdDArj!f{%iAp{2Tkf-%cme@hd?8 zG-~rcX`PdJfAW7Ur=I@}_|F-K;SmJ?Qf9!T_XlntvNsV$A}(s=-SG z{TVTPukYVx2ff0bclRo?YMZ@mxgz& zO7mjeAImJ~!+TbxtwIeCz0&ZmRoQF-YAmaq5AR!*(`;LMXx8w~Rr#tf^RWc8hWD<@ zcMDU)L$frzdsUvXW8eiw8m}#v0Ul4KU4*jF8td-7Km4c+o1gn*U7j_(i&Y+2l-e?` z;eD)fhMfzVK9vv8$J!rjue>eZ%PIrxT<}sS4ew@^#rtu8Xn~Z5_p{2WcD*aOhIh2e z6?P1~s3;%a(<&=1!fp9XosWTcwaU>o)bK(p4ex7}`>ae?aScCke&521`CpOl!mZD# zN*a*PMnN-$EMRww(Y6PqGsS3+MY>0fQFK81xft!TNcV~{A`M7qiP1ibbf4IK#uk7v z@_4k}=S6xSqxtR;9M@ycC`N@Jt5ZL*o9*BgCZS;!*VZ+8@ou1{!pZ&#g;I} z@e|BRzbMi%VoMskSliJ*igc{lQpPS3qn{M%II*RT{X&fXQl#U>mN9mz82zS5Cx{I& zc8wVQr$|2%Th`c>V)UaTohY`PvDvx?`csik5?kKbRoaezRiqz_tzhgoV)U;foh-JZ zv8%=CXGQvn*hLTcoqZ);4y7 z811)6XN#?4>>$-OwBsV3Bet%w8?_znxk%@Vt!M03G1_&J&J$bT*ll98?;@Qqwt=zV zi*0D^0E*CLMW;abFzF|I`%+0(U%BYU|Pab$1TB983iTEvlkU5hx< z?izle3|LF-jGskXQ8vD_+4!Gj|Fpv*tt3`!>?twYW06)C8*J=pG1_I3RuLOw>=`lI zXORYq)fszMjCNY2RmJL!JtszcEz)XYLyi4KjCNb3)y0MxdtPj~u{Ff-T8w)31u@!j zk=7JzF!s>mxm;+^MOsU27h`3Lc3q^k#qe5TOcahc+Yc%$vjz>E$(z;?z#{Mcs zdoR*@Vk3?HO|042`eMz-UJ|4I7ij~rQO3#?{h&x2is4ls=eelrZu&!!HWF(wwxJmP zqDUKywHjMdjQ&w1&Z|M|X*2en>U{c1k+{Ap*=S?qbe{B=B60FkvfYfmEJnX6(q>}2 z8~eK${ijHqi=k-(*T9b~xEK0Sk+u*UW9&#V`csj%6x-9-QDXF~B5ftMm$C6;^sgdq zEw;C@e~8h~inNW`KE_@VqrVktTd{qO{Zov7SETL4(3FB}copo2j3fKu7(L@ihik0! zavZ@g<--rv=VM)qI5N()h$CIDaob#nj_*aA;2Mvc{`T;DXv8vnd(}^k!h|)9GUJ~#E}DCi#RgFHC|gTgPE>H9GT@BekhL2b}iz_ zL9Rs{IoP#`BXeAfIC6+<5l0SnE#k;wu0djvVD0exMBKi~Hec zk+zqO?`Jmtn(Uu;Sfm}qI*h$8MtdyMj$)n0CWz54i?oy2SY!VZqkR@>XEC-Q4@hr` z(N2q0D~4uDuz!ouUW+tXY`n3z#b~!h8X`8q*hI03#_Gf-8hb;Gc3h--u}Q|>6r(*C zX{gx##@-R5T^ETf0I~$pbc*x*j~MN{NW;Y@8~aF%c3z|gu_?yR7o)uwX&14n#@-d1 zW^9DmG-L0H(f*6nC^p^L`(pHiA~lH}Xl#-g{h>%B#by}WUyOcHq-L?1#y$|Ee-vqy z*eqiQh|y1qw5!-`W0S?`FGXq*JIL5&V)UCLwTc~V>_aj7Pm$Wh<{0CLTr7F|QISTA z9b)WbG5S-Hb`v|)*e7E2t0L_#c9^kG#pqw?B@{c{*k@w&vm$XSdmjA=W1oxB--@)S z*pbG*5ToA}X)m#(jC~3AL&lM#ag3gEh`~ zMI5=nwTL4Zx)yQdBG)30TjuH$~!^x%&h|!;l zbdcEj#tzlF(65Sgu-FC04ilq)6={yxg~m82h-XGWE7Boi7a3bnjQ&=nL&YvOwvZV8 zu1JT8U1Druupcsx`~t`58AmR4jdfm*BbT{`AF9uP=~~2*%Uz2&a)oQ$HrJuQ>P7pt zYdmg_BUie{ZF3yC%C(3izj2NEavZtZwTL6vxE68bTGt|u{MNOIBiFeWapZc}B97eP zTEvkXUE{UoGPudLh$A<nnmz#_oD@Ol7znIv~#*P!CpP*k%?03di(0S5d&@U!- zi?J2O=r`yW6T8*eN@DaM^oxnzW^83K`VsoY#C~t=E}aYg3H@SXw;Q`#jDCfFF|j`w zTSfb%f1zJY><(kAiqX%|FDCX!W2=kN-_S26cBip5#OQZLxl%KjKEKbkh$HvA7IEYO*SKx2L;uu^_MmG#ZjK`lxyEgC9C_Hah$D}< z#(X)BJnCA+k;hz%IP$n_5l8;)TEvkjT#GpJq-zmJo^mbX$kVRz+Hx5@<66X#XI;Y& z#gXS+i#YNZ*CLKQ?^?u>7hH=t@}g@INB-(s#F4+b7IEYy*CLL*>{`T;zq=N34r9%CDd(H_yiD|W9j&MVG+(k{`zD|VkTPB2bJ z`$Ye)*!{*f6Qi9L=~A%=jBPGPdo9vsVt+DrkLm^5ZION{_MowQ#U3(tx!6O-_|YfN zg?3z|E5sf)Hc*WAT%=!#Jz{J%G1_&Jel7N>u`R`D-$lAo>@j1fFOZK%J1^2zVvid; zLyY!bq~D1B+1Ss;X!k|BTI>m9XNo;(>>9Brjh!V%KPb|*Vow=6Ta5ltq~D4?ZLC?0 zeo>_B#GWzMBu4)z()D7`8XGA_KPl1;V$T^HB}RWK(v4z&F}9J)jDAz3o5Y?swyUHs+#E;Va*f;OIP!1TB96T68uR5i@*meCj=bYq z#F2Mhi#YP0YY|7@cP-+`2d+gN`Ovk9BOkfOYs+Quv1<`WK5-2{6h}UFE#k;$u0#1ZU8wh?jU8`mO^eCt}ok?&lKI5O8Y{6HDd-(JDb0^ih> zDYo_RE#IIW7U_>-|1|sGM~wDZq&vl4HMXx9?Gj^&#a=VkE=K#rSYol)jqN8!JH=RH zv40ukvbH==+AGEqi@jm2Q|wJ+_ldn}Y^>N@#_kt;%h)(E+A+owi~ZXe7boNKXwMi+ zEcUjsGDW+_SYomN7#pwcXx|u1EcTAE31YN!j3pL(*I1dNy<;q~*n7sx6zv{kiN)SG zR;FnG7)vbnfw3}0KfqXGu@8-LeO_K4{Q+Z%#Xd4NNsNAhvBY8@8{1!u{!yeS#Xd3i zN#DFr`bm+V68qHHr(*P%B0VkknX%8r=r=`rM(lHApNr9diuA157skF2qaPLNIk7K| zeJMtND$-xXzB0zOQ+e(5t0Fxw_O-ETV)U;fy&(3DvFT#;vm(7H_N}o4#prKE`m5M? z#<+?qk4L{N(%;198sjoeKV%%iPUndu_`q2j>%1IC@OhXtoRsSGKCVR^!AH@`7jdMo zYuq;1q4;RJYJXW-NrBly5vTEvlMU5hw^ z573n_;>hx@MI2edwTL4tx)yN+lM85n5l8S*yR?WStGJf!fHqEhDAG%^@dVQwkT_o> z8SSu0FN;--%@(6Q7U}O|HO3ASqg@v1A7XusaqVaBllEDpSH$KsHb;zhTBLu9^)+^g z811!4uZqoYY^oUTwn(puEnuuojP_fk*Two7J5-EzT%>=AEokg8G1_yH-Vj^J*x_Qd z>mt1=wy?1y#Ax3|dP{5(V@Hb7&WrSKu|0lVMPt7aqo1K|PHZJ(SBuf#&^9NwvaxH$=yzzF6I;dD zZ^3@ZI5H5&==nafs%sHPR&y=t^VMC8II@Oo5l7Z^E#e3!$)~-by!9*k4U&N7ZU5hw^iAa<$;>h-{MI70| zwTL5_yhPhZ9NEdWe9u|0)Be!LEE^waHh!J#pLU2gX0cU`T`xv^L>sf%YQ}C5qg|qn zS!{JiaPF2BsM1MisoTtc+(z(!Yigbv*%JK;ZF6GV8ar0o(XY@pC$^oj0iS1zQcrp4L+UCS|H1;Dg`W@Ql#C9@v64(zJM|Q?Bdd87j*CLJ#b}j1jA+ALn zsdFvjNWE*h{^0kILwnJNxfXF`xNC9T2G=5v?BW{pNY^5c zG`kjYWRz?dNhPqZWs3HSHfFJ*#(t{pXt!va z6B}miXJWKpw9SbPH+HHR?HFxyVhzSl6Qez&ZBA?#W2cMJu8VZH*a%~1h|#{$HYe6- z>`XD*IojsLnvDHijP{Q2{KZBZJ4=jqkMI1&nvI<;M*BzGoY*L1=ZMh{&^9NwtFd#% z=nrU{6KgSco*4ZCZF6F+#?BX`f1qtntj*X3V)PTV&54aRcA*&k1#NR;yBWJkjDCZ* zIkDZ1T_Q&RLED_z9>y*fqaUGdPHc>^qZCKzPiUJH+tb+5V)QGt&57-0>=-fn7ux2; z_BM8`82t=wb7K1#J5G%LhPFAeeT^M2M!!SboLIZD6Tp7RIIavV9pwTL5=U5hv}#kGhd zQ(cQVGR?J!Bhy`rIC7wC5l3dY7I9>zYY|6gxyI|rab&h@5l0SkE#k<*u0;>h8yMI1T8wTL4}x)yQdDA%$bFpkjv(8eqq-_LCPT-iVE5N*t2 z9mdWRqdlUHS*+98`C_z7v@wf~HTDbnKJ622%wpq=%~6VWiZ*6X@tL(u(O%KUEH>V@ zyHxw6-J)$yY=W`-)Xz@)McbU%L}T}h(T>qJCpO90O=7fXw9Sd_Z|r6<+BMqd#11f4 zrfA=2n-iOC>@uAv?Hp}$VpEL$QjGSFwmGq>#x575-J@+zY?`qv#AyF$n-iOE>}K5u z`T^SJ#11s}D{V)AK--+y3}e3*qhFwHPHd*J8^q`zXqyw8W$Z>V`U%?R#AX}2NsRu2 zwmGqbjNL3ozd_ra*ulnrCr1A%(z{}FjNKweKPu9DVuu*JRgC^rr1!-RHFldA{i;YG zh#h9^_hR&~B7G=!xUt*C=x0UxNbCq>e-NX;73pKKBaPi5M!zf4Ct^n#yA$k(j3Yhu?MI1T7wOoHNj{K+>?L^lij-2FL9QVhrMI1TVHRj84 zsrK-^IVHKa=vR3M=o$J;>d-rMI5=vwTL4ZyB2Ze64$aFFpkjv ziu9>${AjcBKg#}Thei5K>=zVka28NBg9`7U^rT9~t|dwxit^=^L>Vjoqv5Xun1JR_r8W_lePti}an? zkB!|gMtd&OT(OglJs?KAMo7`oe`4%UVzlofRm4s)_MjN;9CPi7{nXe)Vzl=n^%47- zv4_QI_eGjd>{Mfqh|&Iw)K}~@V~>i_4>0$i*y+X|6Qe&AX#ue_j6E(!zrX~{VrLrr zvl#uONDGSn+}IOh^phejBzBguGDUwW(!yeA8!J=vn<6bDc8;+!MgJ+%qGIP7D^v8N zA}uC%p0P4Tf5O}@V&@wxQ}ip$?IL!8u`)&f!rU%m7aA*5^fS!uB6g9nGDUyG+%94l z8!J=vJIw7Oc8M{je#kiT3ml_o9J$oBh$EM|7WMfrU5hw!xoZ(eu5c~aAB-cv>P7pt zYY|7TbS;j1m1_}4e&ZVRh)`MI5=owTL4( zx)yQdCf6d4-0T{!Bgc{7xfXHc7S|$<-0E7yk=tC0IP!bfB97edTEvk*xE68b4%Z@% z{L!_DBX_zMapW%7vK=sv(Ecz-k!<`IX5&w)UZ5Rfjv}#3jrCW}N_)f{MPip3+eD0Z zi8+eIeraqKG1@2QC=$EeSVfF>iaCnJt}ynL&V}}hIf}%7Wo&V6N4v$`E@HnnHb{*2 zi@9CIt~54KjCPEy7qJ_RZ6-#4 zz}zlkHyT?_jDCT+UBqrOHlG;%19Q8G-E6E((N8e9i`egsl_~m5k=7Tx#aNl5-(YSR zv0IImDf$oQb`iVHSf}0#=|`B`MeO&+o)DuyVQv?(+l`ee`W5DO5&MI&GDZKw+%95w z7&}e-q@Q7K7qLGYJ6(+ahPhqD?lg9W82t`&yNKOo?COPo*f?@Gj?t&be82a&7IEZW z*P=eZ&$Wmn_q!Hxka)j{MEFh$An#7IEZd*CLMm-L;4#|8Ona0pkem4|5dB#_u*8 zzXmo=MmxkDMPm0Di&PEP`%rHP>ME$~j{kUshito> z#AxIAK6%N^9yWHP7;PQjCyPB|>;^H~JihA`d(_xu9i6t1?>faEGxj@eM<2jlAy!*ll9;4Sd%r_N1}ji_u5$U8mSn#%>p*ui(2*v8Rpw zL5x0wd3(j4F?NR-eFxulial$rOworhc1-L!V`YlIgt22{e=+t)?UO!*v14M-8@p4C zzJ;-4VlNoGON>5-?>fa^Gxv9>-tx4jGpf* z|8y;4%&V@ke#qZ=yyjZOnAcs481paJxUIe|=|y|fwTLlqxfaL$w`&n&-gb@oa*X+p zYY}7KaV=uZyRJoydC#?oG4Hz;G3Eo;BF22^TEv)-T#FdoLkz>rKu0@Rb z%(aLypSu<@<_p&%#(e2o#F(#Kix~5@YY}6_tZcEFmI_J=W$ zvhi2U#vhdZ(+)8PQtY3`9ulKHVhp6%tH#O{?Gj@k#a=V^h_<7BV(ggM>&6}yqn%>x znApFJJu3Ewv2(=UFg8HnxY2Ggc1-L|V~=S&+AqeAiM?g)aWUF4#*T^o+t{DQXwMis zCib?mC&Xyi7&|8RA7f97(Y`TuOza(FPl?gaF?LMsU1Lv+(cUq3Ozb^l&xq0PF?LMs zePhpx(f%=ZOzZ<=&xz3wFm_DrLt}ptqd#EmnAk_go)@EEVCikHTI&mqrYJ6nAm5={whYl!Pqge&yD>}jQ)eMV`5(zdr6Fbgt22{UmAN^ zjQ)hNV`5(!`@0zZ3S-B_zBcwFy;sn`@I)l`jj?}dJNg;Mj){G1>{T)P8^(@_eP`@7 zG5Q_Gj)~1R_6pb!+2(~HGEW@A=Yi5#=jq!L*P=e}<66X#`CN-Q($}?Ie=vT{-;1_@ zYn?c5{zefCLg`%MxC^=#abzLam@mf>ESRWmBaSTMTEvk>U5hxfm}?P7urQVO7jXoO z4(eSm;>hBzMI2eewN9L0j-^Yw7I9=L*LWQ{j$kn?9V6n%GOk4&8Q@yPk!4+rII^5; z5l5DHE#e3k;3}^T6J=;^64xS*tmIn6k(FJGII@as*$x;-P@u5!8)V~L@oGT&r|h40 zh%u026=M??%}?(&#%>a;G4{H)qg`SQq*xzg{}Q8pV(ggMe8%1oqn%>xm{?z9Z;H`g zF?LLBeq(Qm(QYwzOl$#T{}!YDV(ge$KVxr;(T*`krQReKH1;1c+B4>;6kEvHJ7TnJ z%uy+}u(5Z=Xy2HlQfv`p?}^dQF-N7?qQ>4AqrGE}O0mU^eIQ1=#~hVng|QFCX#Yj3 z6YFp6BQg2`=BN}~9BkS2u^9aUb5x2gVcUHwM!&!um10ZUcAtpRKQKq7*iyFLXJYgd z%uy+}w6V{{=r5R~QfwJxUx?9fiZnuOfUz&d=s%dFQfygcUy0F=&}Io^rX??D>}xUl z6Xp+tr;{yj>>Dxq73L2UTfx|giX$t)u;a~oMay}ha;|7Oztvvob(l>|Y$apgiP8Ho zo0!qO0#qsnTou|~*m zC#$;_QDqI+BC2p*+kA{%oA9`6^`foqS|^T?qY9Q3tlBmocU{*as;uW4kCCIw`mRM( z*}%1kDjT{MQDr07BC2fcT11sipyd|Ch$@3zi>R`xYn?d1991@REuzZiuJJl@RKaqJ z^F);`U5lu)m1_}IwstL|$~LY=RN2jZvAi~qD%-mjQDq0$BC71@T11tdT+4Pq zf1~|jRy^7GK(p~0*f<&O5VPWmt!k`~80`_W;)$(hY(6pCC1%AFTisY+G1@0)#S>e@ zSec@oqSZ-kO=D$>_KH>~v9*kqDcUVsoy68QR;FmbXmt`>$5@%79i!DrY+YkziuR0F zC$aU6l_}aaTAjq!H@0@4TxPUyv^t4xU~C;R+BsUC#5OcmrfBbIbrRdi*t*(|c8^vk zv5k$bCr0~6tCQF!#<(6h?;rgDtxjTtj6La$wdb9S=bZEov_UE7rk3+=F?tEwpu{#a zc8?gn1#M7bn;W}Vj9!B_D6uV!-7iM(L7)F(`RH33dq9j{gg$?425#_Z)}fIDB}M><4KenN80`}y0L1EyJu5~# z#RvegdSlOt(OxkEKy0Y7zlhOpF#=ZN^>` zqn}^|fY@kbuZz)NFakhqH)H=2qu*czfY|QF-VmezU<7~|*Nz^L-V~!BVFZBK7-MgV z(Vs8^Kx|KA{}!WPVFZBKUdH|-M*qSH0I|J|y)8yR!w3MeeT=;$Mt{Qy0I_|Iy(>n) z!w3Mec4O~>{g5qS`{5Wp<4A{Vov6!l9O-l|>hrO#4MM&gN5;7paiq(&Tz@c*jPFI8 z;94j4m*dDp*W$R7T#GoeziZ5wRQB+X|6>anGUVzyUKyC zMI4#oS|`pg$B~(?MI4#s8m}YAk=d?A9689fh$9EP7I9>bYY|5daV_G=p{_+7In1?) zBZs>dapVZsB90vCTEvl~T+4RAI70iwNEX@nerDtE%l>JH7|9~mVXREi9x;+dtkYPT zqFrJHfY?}LA84PnPmBN%8)s}UwW`rh(dRGLWvoomUeU`hHs08W+9&N6z5HSmjC~|V z`$aFm*hFI=i_wnJ%P%&`*e7DNXY}%m?QiT;G1@g+&cqHd_L&&%8!cyIlZ|~YMmtB# znb;I#Ux?A(!SFBd%2Z=tiqY;1i}+;IjD00W`!5nBKG}3*UyIQX(5fbOps_MVe?Y66 z*bHN3ihhAsHL;n-$`t(rt!iSkjFl<+30l>}W*aM0^cS?Mi5+C@8=WWp2CZsh2OEnN z-xj`8PI?pC*pzdQoHfdM zXt$j7N3_N%=V6w!Owli~VvN|~#>y1^6D!7u9bv3Y(ND2rjM$OJ`snENSF9K#c9gOC zz!-nF{vWiJvDd%4=bv%lXzaab{5i(8PSk-p{v7LC#DU{n8-#p0{v7XG#Geyf%k>VA z`=eg86J6`X{&M^|$+bA{k6nxSbFyp9m*dY*T#NW~ifa*ne(GAppP#uF@#j?6BL1A_ zTD-@c?pnm3GhFM$`Q`X?rfU&@e(oBtBgdb!T#NW~wrdf8&T%c`&$+He{5j9H^)cOh zULF2?*CPI0;9A6=3tfx&bCGKie=c?{;?E_nWjkPvMf=0bNBB3V_?*~R_D?&+%12_y znElT$Mtj7{M`FhsTR@C?C80h|!L*@{!n&jV&rhd&bH~VkaA0OpJDo6=TGH zVyqCOePhKKu~Uro7o(kH#Tc=l8e3e9_Kp=}#C~RM2{GC|R*Vrl)!33^w12D^BX*jx zrNrn5STRQIbYn}4(I2p4jMy2*mJy?06lt8;nZ^c)(Lbd4YW4;_mu68Zr$ThA-9J$uDh$FvsE#k;^u0XP+IC7(FojAW7 zM{aU0;>gXe@j7xG`JHPKM{aQ~;>fM8MI5=!wTL6XcP-+`?XE=}`Gac_NA7Sf;>aIe zi#T$pYY|88axL2dJ&g8;m5=amPBD(GA^WEtqOVfyQnUYW^_)n1L|>)YWyaRjcC<_M zRf_%6*ji$=PxSGKU2be`G1@8mc*L$Swya_d?G=4IV!txBj<%!SqK`-H*T#OSo>|&2 z`gp{yGBFo3;Geg595r*?liWI7`+hVjK%IUwk;T=%KxM% zzwBKpdt6w%-;KS`^DT>Oov7JzRJqr+sNL^#EuzZ(u0>RNz_nbP@VI~KMSIY-P8>H! zm4{r5<38+KM3qNeW4;_!9(66E%44oYRC(OBh$??}EuzX3u0>RN5?YSR@pkf*YY|nR zcC8cVm!rxvu0>RN)-_&7jw;W&7E$Fdu0>RN-nED-FSr&_RN*|mr&e|IgS%0FDoc0l{5{b8Ij{>>>ymF;Bz_ZT}v>>jiK?Zs%17-uYYudyA( zXqOmgEOwu<9mQy$7-uYYzp73eb- zd&*dY7`+31ZDLOw+eM6Cg1$DfXN-*yqqm^1P3&1?jbii~^tFjSXRJw#-h;k2vA-A_ zDMl|sUz^zT#+t?GP3UVAd%@T!F?tpH+QeQowyPMu3w>>3e>K)3MlVBOo7mrswTjW( z(AOsRlCd^1dL8=O#9lTwT8!R@zBaMH8{18cUWmRnv40rb9qj*KROuN*%2*PAS-Zc2 zWAuDi`KN20sM&HVzao^}gd(*W}95+Xmw_JUH}YY|mGbS|e(A5u?4L&sgjYV`YkVi#}tqH;t7k+AsQy#ojVjrfA3LGZy=| zu`)$_MxU|R+s4Wi?HYZ?V*fE#rfA>jGZuTtSec@oqt96EU1Md6_KrSdvG_cN^ivEDUHnES4?W?k;U*P>f>|s;9Ctz2B91KN8uR5ivao9rM;37{;>e<|MI2eowTL5yYY|8KyB2X|an~Y_ zEa4ijEys~1U5hxflxw_>97mRRE#k;Bu0ZfFMI2et zwTL4txfXF`W!EB(tm0a>1I7{BUy*i}ji)|*JL#1Dr#^ft?of(WS)^L!tXR%6Me9T_ zu~?0^r4sz33(O6wi8`wxbo}Szc@b z+pbHD){I_av3|zJi_xmlFD$m8u?b?dZuA6;Eo5w>7_A(AzhVm;n?7V>WaxV$4RaMU2_lwTLmBxE3*HkZTcRHgzpx%x11djM>~ZUPq2G zTeuc6W=q#1#%$$U#F(vJix{(wYY}6%buD7dcCJN?+1|B?F*~>xF=j{CBF60GTDAkm zn1RsH_bVG8Xf}R??4Nds7$df-u_MK3kLddqTg})}Vzf*2{fez_>}WCCC;EQH)-ZOA z80{2&zhY||J64SLioRd5wTzW1+AaEi#nv`frf9$D`xRTqSec?7qwiO2U1Md6_Kdz? zvGt6VDcUvqe#O=|7Ae-&*XnCHT044zm2(5jd7Q3@R*#-wu?>xtDOx{zg2gs6cD%Nu z7oaCtY-3|5h|wF+6D+ogv5hq!0lfk}Xkvqmy{lEb2HDfZdrHw)(4VH9n_ABI#ppBW zPZQhB*au?t9rUM(ZEoyCG5Qet)5Nwg_K_HU3H@neTN?XVj6Q|_G_kFWeIiERLVudr z*2c;deGL6+V%r$|RNK+l(4Qu@t+CI<=yT{#6Wh+%S7P)%^rwk!Z|rk1`XKt##C9-N zrs#|4PZQhGSec?vqCZV+Cu3h=pAloCZL9iMbzG_bU7d%&S=aB3W8`|cZIgsSa@1;F zix@N5wW#ZdxE3*{&b5d!^{(Z*g~u4$i#E))h%v)mi{m!97BOZQ*O)KIm=Uf;jA?W& zVoZ~35o1QW7BQyTwTLmJp!Mu!+10g(F)gk|jA?Z(VoaNByp9}WM!Oa0`v=eitliJwNH8j z`h~?t*>>}b(JRoOCbp}w1;pqbn72o)#aNBTO4CcwpC;C7te>`{x1c{wtj*YhV)PpH zr-_X=R;K7Z=uZ>d%~+YD7h%mevE7X=qx|HqgP?x9KXv36s9 zP}cu_FUx-wOCq+gcHa-j=-JEC;aWtMPS>J#AM08~m2s{`ROxap*Cssf_+GRLu0>Rt z=vo|il4}uF_IHi>a#T6MwTLQ{U5ltP#kGhkQ(cRwGR?J!D$`wyHNZgwTLP+ zU5ltP%Qap{jw-WVi>PvtYY|lrb}gdH9M>YM9O7C;l|x;NsB)NV5mgR%EuzX1u0>Qi z(zS>xN4b{mfKi3^hxw;u#5#=i6{9_3{wc9eWAlsAE;0X<*jQr= zh|xYV|CHD`V>^q{PBH(KSeLO{G1@EUpAs8yY_J&Z7V}SuO)xe@jP{H9r^F^2TTK2< zJI4G|Vv~#&Vzg(>KP9%mu{!OOc8&R`#11f4FGl;u{8M6+jSUr}o#U-WY>KgAVzhV6 zKP5KR*l;o0J?5Vhn`W#*jP{TDr^Kck+eM6ifO&hw4m37GjQ)Umd&FiKdqCq4=oeVK zP;92LKZ(&lFmI38EMtw@C;bHT_K3|k)+9!M!Mr_U2N@eFM!&(lJz@tNYZjybVBQ|F zImSkb(T^~1kJur`*3x?#{RwNni5+TeJu&(f)_fB?%-F8lC;ba+zKI=ftVN7|hBe>B zjxctT%7y-hSq;RFH1=aL`W@DM6FbUSEB5(A_Ocv}WAuz8$G8@8b1mY? zsjfvFInA|*Bd5C-apVlwB95HtTEvl`yT{`T;OI*u#z&JwtE7IMv@uSVg+vGR2L#$mWc8syn zVzfuBT_|>}vE9UImsq<{>^NgbiqSr?cA?nu{~vj80VT(^ENi!BBulbvjV&`vGD`-@ z%*@P;V`gS%W@ct4nL%dB%xufd%=|~hj-A;vp7Y*4Yx!U6z4d(Wu_xo(Rn^mzS<%(C zbC=iwX3SGOyU^?~u>;MRuXuK$+2LXbnK5ti>_W36#11xN{^C0*_h23=c8D4C7~ese z9VK?C8S@$6L75#bRwL#$zJoG5Mr=)Q$Na{3P-e%9t!2hM$9GU>$BC_N#(c-OPG-l8 ztz*W#$G1*qCy1?U#{9>(PG%>Ht!KtMz_(6jCy9;k@5)#Y_}0nnWU=+V9qR($I+>j! zwt*Sz1K&ECohr7W8S4Zy4sZ{XnRS}jMrN!R%s4PRU2J1B)(vJHn4KZkZpQk-j03YX z#Wpcx9bv|S*;!(nnz5cRkcyx%q|d{4fB)#O&_@s$LQ=M7loESa&c&RKEEWi^pQ(LOCPx` zv~vESk6hk`c139EBUgr&$Gs}F^pUGW#(c%h8MDj9wl`zmV#a~l6=K)> zvmo;q-$jBTtG`m@B4>Q&Uo}X!Ui&%|VA9#MI*{xzVVx8dmnP#_%)rj?i=VzJ?6Wi0rW8Jhh zMw#6%cBubGtRFl-)9enh8nKS>{7kbu#cITQ!t*oD?h>mJ>k7}$G`m}@MyxM9Khx|U zu^O??@cc}(d&Tzh@4$M)^E1uv6WiO2b%*C?n%yt957@uyBM;yhoqc3@Xz3#lhL-2^ zheAsqc{sH6kw-!+=MVbGqg`l^g_b_@cxZXt5uv4zj0}zAijO=ITKdS7p{0*J6-jY4BhQ7FKJt8M=_4!GEOyb)UZ$eW?1kGvIH`pDa%rH{N5TFC?Y2=fomfpv~Qpd7Ce^AOL0 zH5)EgBjzKX18er6SdEyMcn+-DLt^{7rkJ024y@V3V*8mfPw^aBvq!`ZGh@EuIk0Ar ziXCpoyv1{1%^njw!i@Qg=fIjhE_S3D^BB*8H5(yzlo|6G&w(`?DaOyge9xHIcn+-D z6Jq@QOUC@h^E1t!6yxV#GUhp+pK11#7(f4#G2ik0OtYuO`1zNNd5`C3nmr@N&%b2M ze>^|a>{+p4Ug4K@fahnLJtua%8S4Sh&op~pjGvpiPu2yVpK11j*d5-E^?~PSn!PA? zry1)6tE-s3B*xDv+$ZY=>#3N%EXL0%WUL$5hTr*D#P0GwSwDDwrrE1v{0zhGSV!oV z@i&pLiQVn(SWoDdF?(I?9A6k0T2ce}meHdCfC()Ze z>O%WCwDhJ=Ld)ZR8d`eOXQ6Ri@uts1OKu z&!x;ubds69FUHUC+>ZH)PBOC(%64YVQ*@GH=2Xx?=eJ6HjFwQu*%Mq&t{Wu=^y+%&#r?s(K@a>q{4`P#;v1;(`nAwkF zHDdMP+cC4B#A?JU!nb2)KZ{N3eX^SH?U>mwVw0J%s_^ZY*{@?$)>9ljki`%~;{GgcqI9W(n&>>4vxA-+{G`&;Z$l zjhN5qz%d(LtVYahbl{lv5u4KcWPYOq$7~F-smz$?=)f@>Q|vH19P=F=IA(ptruKHs zdvxHKwTVq*#{5SIj@ejZHDVp01IKJ^u^O=+(1BytPpn3)3v}R^jUzUJ?PIQuaAf)H(Vb&9z1Uo4%zSj`m<hn0Zt9J3k3 z2Ai=W(4Av8qu4y&Co2QpIc777&1=RAL3fVX%wqGIu~N{TV>U!=J%5wMia~dd*-)|h zy&WqDb0N%T5nI5F6@$8dvutST zILn2WjY=6MtPxr| z&YGd6b`k|%cY!F&H&W53tJfPz+|IkV19A8K| zzPZms%tLgNnJp|fa_sVb3iA=2WM+$qjWA(nlgw-}u|>?7r|2Xz zTU=~WGv;es<3O_|#E$W&e&#JYaLkqzJJyW(iw+#KrNkEVKAFepz%g4|Y;iN@Gdgh0 zmJwURjCqX?9J6J`mNa92qXWlmIkBb8nCIxgFkU0OW*dmrh;@ga8?z0?82y`9E*s$(oqc5E z(9%cRL(B8|CZVN|Y#Lhn$Y!CH^9Oxo^DeY4LQ5anGPFGIR-vVjY#kcM6(89qwDgf} zLrWjoF0}NK?L$i+*&(#_ksU)zAK59i^pTxIOCQ-KwDgf(L*wsJd}O!K(nod=Eq!E< z(9%ct3@v?Ruh7y*_6{w5WS`K|NA?XZePqAT(nt0WEq&yG&`KWAN0@);9dnLvq#Umi z^ANpbW*dtwF+b5eX11wVjhLtC9W&cZY*`pMTKdRgp_TIoedO>iv?D@GA2~9#Jnm7UrH>pP8pjnMIVQC9kz+$k zA2}|x^pWF3OCLEQwDge^p>_TS?4;1rM@|kcedLtT(nn4WjlW0nk<&s;A2~g=^pP_{ zOCLEiwDgg)LQ5YxJGAtXb3#iWIXATQk@G@JA2~m?^pOifD|tX4VgBJ>taJQ8<@mGdo0V6EkKjI?2oq72DK|S&L3Gv%|zT zGh_Cm1IO%evCYkx#pu8>J3?#=GiEb7aLkSr+tQ3#jSd{Mqr|o{V|Jqh$Lwgat<9L_ z=)f^MMr<21W;;4?%#Ib?){I$?4ji-N#I`eI_O~@2H#=Tzdoxx+TVsUT31T~#u^QSM zBh5|}+tG|w(bjmv>?Et?{(ksbagDv1-~H z&zPMiwwoENr>*g<+38}to3V=88qb-XA@-QBzF19djpxnI6nor^Rn^vb!R#!t>HLi% ztE;W?qS@JEGnlc;+8QsJog=n~Ukj_Pt?{zixng^ovFh3yub7=DwwD>JudVT_+4*97 zo3RQpYuxMtv3vKv!Y@q5Hu(exY)FU*|vb5Zw=E7m4j>#(YHggW1Jm z`{ zFl*fG4zUxxPu3A;jho#mc9I$E3A4t{?h-rMjCF-s<7Rh@onprN!mM$#d&EvPW1V5v zxY@m8r zedLkQ%K3vn@@N;@W1*#wJRVvecSLCEBO^oOxZ)#EgqA+?WN7IlPlc8~@^onFBhQ4E zKJqNI&a;P~3oU)*`OwlwUI;CH<|{sidbZf3V&|JNZ_)i= z_L$fOX3XEVMvK|wVi%e*kJ}opW+TKdGGjht%`UT%Vi%h+uiF|u%$^Xt#Ekikr^1*$ zDR!wD^BhlwF?&kvGBf5oo(g03wAkfl%zHc)#_SofE6kYxcq)w9vtn18u@3N57_;ZZ zt}Zx5R41dP9eb+1p|@V%?!9#q1rijOtZ>^VLc7)y9AOGtcg$aKz5vdA%E2y2^W@ z<=OrH(9%^t2rXUZ!_dmvgvb4;3+?03(p5eQEsy(YXz41Sg~oBkRXz_bUFD0=(pA0; zEnVfS(9%`D4lP~f8)%)s^ZGWlbd~QyOIP_mv~-mpLgVjIT;<2m(p7#6EnVg3(9%_Y z2`yda*U-{cehV#K<@eCiRsIMqUFFZv(pCNnEnVgB&`KWARhWP1NpZ%HQpR8HGY|6+ zJt=1IijD9$49rLLq?o-YHqwlFiJla*_r{>JCDSA@OJ`}qy7_0Ak zN6cPysCeW@8hL{mvltyJW*>{)XvS#qKp@Eullj>?g7N%ve+CP%-;i?0z%W7G@rr{UY{&8EXt3DrUcm4L4)0p+m*& zH?arJSaax5G5cNYAv4wZiF=H*FL&fYbu}95Vlju+}`&;ZW zFnUZ`B|lx|pWlT2Q_0cgC!XsY*k9)>mu{h@$Fzi&=la&r(qp=ZmLAh1v~q6YaYySy z>ls>lOs~-LxV=M5j~P8Qjw>G1C$#jKF+xj^88fu>n7*N<$Fzl(9y1oS&Q~sDhn61G zFSPWSaY9Rv88rtE3oSin{Ls>4CI~G(X2Q_YV^3MQo%Q^Aa5@ zX02jRm@z-mp<>ou>`61`DLPcldWbz`#(YJGirHvlPn$7s(V=42Q|uWt<}W%_%zBAE zYsNfAhl*KmvFFT~&*)Gw8(r*qGv+lqRLuH_yo7-BD)G0)MVVm7AOOJ>Y> zbf}p16?@r?d5;bivo^6;%$Wb^P%#@z>{T`@sF+P4wuwKluzt{?Vm6`J zvu3O#bf}n3B=)xV$$CPEirK_s@0hW!(4k^BiCB$TU+7RVn^bI+w_}~5L&a<|u;!@Q z`B{DFSMkWnwU-*P3em4(Hia0Yf8)x9p2M?ye;lK;s|*M&U1eZsd3K*Nv~-oJLQ7Yf zI<#^&;c=(wLYp?Ubd~8s%i~TTTDr=h&^WHR%HYt_Rb~h+U1i45(p6>(EnQ{i(9%_g zg!bBIjc$MS;qNvyv~-nOLQ7YfHMDe<*+S#*QCwyA(9%`r2rXS@&d}0T<_fL23eVR3 zo1;g>dDUOpStI`K(Ia9uKsi?<<^Z}v%m#{`;0j|dpew{|O0jpL@p#M$bcL8rCH9^f za|3-KW>bs3Z^j%!ABfpBVjq|>SI`GyHm%r)X3QCMewa-s_K_KL2b~{g(~CXgbv&3u z==?AnB=)hlV=kfd!)&nFCuYnkbbgr4Aoi&la|@jxW;2R?X2u*t=ZD!$VxOBa*UWM8#Cr8IzPel)5@&7Jfprv19SYu#Iqp=Xms{S(>j?y|1k4;3S;eUTG*p1(5HhTBMhwahEYE0Vq z$(|z)#E;PWv|NdQmw)cTOIY&Qmd5*dF81wbwKR6Pu%$8W6)lZ-u4`!wzqO^Y{@pE& z&xf}(_QI2=7ks9rF%F(}JTIOVJmUS9#tC@-=U_ZP^KU$x@&!EGaq%9ljpO>XHeMRL zwK3U*t&PnlZ*5#RRcqtNL9LBthqg9OnX|R=#{8{~DHm&PY_m*jAt#V^R8$Hu=Kjj2% z?eojGue9KX(g#T&tbZRY^`&g+7v(aY^>G7SHD&Z`v3ob`iJie|MvWcKmVWh&n%5u{`r!S zp55@S)>mF$Ki?^RM*rt{WC5}o|C_DX*(mAWcxTH$-QssI`{1}u%{u;PRXF_r4gW0V z7g_(N|2Mqm|5sn*svB>&%Wm6m(SP~nW*j>E&>fh9A1M>w`4+QO4zmVeY(W`C%A7W{umH zl?_Yix9y_%BFpTvEJdW?FA9fpBei)|bl>PmDf1}&aC-B2HJ*a5h zwrJyrmg6P}Ek6uT7#e=?`!`W&{EFqqgLsUIL;DUN>dWh!B(!|ZlZJ*Lx_!4ex1Fqm zR{lnlhsL}r`=nEH(e90r3>6oPAs737Mh{*PF zLmsmf4FmpQ*Q)LIHDk7-VZf}r*nVcrT1*Y}K6{8|#83buTHw8mrjb`h)I5?I zjwyxSXHSj1$|HN?Z=Cz&XA(>>^vGTsd9_FO>M)YkfN7>)1irUMUW-)ad)B+dNbC$F zM|dQ@!a~#w2jWQV8qr9zK4QJiSTmS(YBq-0=w^5ez@9W4Q>>2}YY3B0&H9RsVa8g* zq*F88T1Pad8EXoYPR+&=>ubi^!lYBPvBgetF0sZi>C~*B*r{gYh&^vMj@W5ttT{|N zH5*s#bTif-GSX~3u`|qAgP3$`Hon-IW~@a_IyIX>>?||ZBr?lvLb0>WSewWYvx&sc zF=LG)C(I@mJJ*c0iphFrlZc&X#+t=sJ+n#0&NpN2VzQpuWMUVXv4$~O&untB3(Z)| zn5<_uh1f-4{Gz5TdzfGG=VFHcyNj0OJg@Y}G0OQiy=g#bJSP=z8Wd?4tIZsW~g*I(yJZ|x(=|bbS<-9k2Xz5LZLgP4pQ4?Bv(+r`dH_aGYdecmy zr8mtST6)uv(9)amZumV-Z{p|e@;>u-EAPRqp`|y?7Fv4F?4fbn;!SgemgD%@y&NOG z3Ga|K{NVR*?$FYk<_RsmY2MKCHP06sey}&q-$5&XqXj}sZ(1-kZd=ZY{qZ9vojS++ zE5|Q38z45yY=GD$W&_3EH5({)sTuPUlTOX16uZof`H4xVW>bk>ZpJ*tq*Jr0#jY@8 zzGBj;*)(ETnlW!N>C|jmv8&9OznFAtHl5hjX3S$uIyIYKETd*$W_Du=sz(me$c&mt z4%W!eJaVu`UhCt{AojW03}V-ru?FDvW;2Rq)a;t93`|e;$eA=UqvnyU7fe?5$eA@V zqvnyUB1~QNNPd`Uj+#fZwlI;^BZq2aM$IExahTTXk+W#z_5N*Hd6?E}HmleTW~@L= zYc-oqEF&JFep+H(Vv?&z&aRO+dM~U`Oma1wL+mGi(qNrplB?OAVmEm^)+;8tn$0Da zQS%}5F2L3a{wj|nk^`HI~YCfSbWIqYAIiO8(piT$5rpEtoRx|Z6O?^ zv!^W_8qa0L(-sL0Klt3ZXlUtai-ne+ws>gVww%wG=t5gEG#1nHl zmR_}bXxz4V+8UwdxHUsdPg^TA{NVR*?a7N*L2VO(#R*w zSa+B>Yqql3BWA2WOq?}aMeI>C)*&X&nyo7Km>KI46KBm<6MNi@b%}|yW~+;hFk^jU z;;h*kV)eDKPBC%TY)!F|-j4N(iL+*Fi9Kn?y2TVjv$e&ZGGqN>ilNy$Vo#f~jxoj1 zY+bQu%vjHuVraIW*t2G=YfLdTTVL!sGuAhz7@BP$_PiPE9Fq#oHWYgSjJ~y_eXICX zb*p-vRb8vbUH_N9wGocd*|#`Ob`LGb?Gak~)}Eo^2fu%Ng_gdxcWCKb`-GOS zdEe0RgMDki4qEve?H^kD)&Ze$+u}wW;YUo4b&hYO9DmVlW3ho|8;iYUhF65`rZj68 zd)bV6iOI2Mn}~hq&%w-3OpZ0F7}!k^A?k1 z&9)GG-HiE*>9A&7ie=P%mSdDQZmW?QHILj*BWLo+?KJWY|F*0eOsX~8UhGXXRu3lCn(ZL=mKm!ElWNU& z6noo@)r3j4W;=;>?^CjeRfS2lW;=_$7r2U(MtV(XE6YUBsr3u_Zo6V3J#`_POvim8ca zdy9Q!##+VHM6-RwJ~m^`Vrrt{|zg#`9J2t%F0u4?h1L5?cD!p`oR3 z9Tpn5E$8gRyU>mZjmIs%b!2GVwwx1>3N3x>=+HQ>_|`F@rEeV@TKd*;p`~vfA6oj> z38AHLofumB)=8nIZ=D<(f4A};oDy34)~TVTADtE&w=KSPdT2TBjL_1z&I}Dd`29O8 zwDhgBLrdQ}C$xOc=Z1zK>|5t`(8}NF{Ls?3E(nd=mNU`<|<%$TQ`ertA^*w<#vSG>-M=xN_L zV%}n!a71L^M#O6W&JnX2lZGSW$R8XrtMRHMBKzJEvm38EBC;PHG0X9)BO?3B5wjhW zh9e^T+0k)gOGQNXiz8+~CJjeK_NyaS0VWMcr0x8vfYpFW!)7Py9n6UD#BXM-5lkVD zh_b-M$IEx(U_L(k>_h_7R|Ki#V1_kwh-;#kGs=vx=!7@d9VqR`rLeks0nacKC#=f6ur zOW(RQwDhgZLgTjOoPBv0+7+SkxW%`w42|2CbK+H@rEgsw8pjpix+b*rt!qO|-?}ce z^sVbdOW(R7wDheTLrdSfDYW#hn?vL8R^EeKLQCJeHMI1j+d|{E#kYoqmg8;@Eq&{b z(C~xbzdJ)q-?}Tb^sT!?%h!BQX!yatb#Di){EhAlEq&|$(70`>unX}cCQL`fYVXlf z*hOONnq8#)AIRFJLgeln`d7Va%?!B<0FeTgU zda;a}UkmFDQ?fns293<9`FN~8OxO0v8#S_zkH;#+bZxVn#KtgVHDbE9+09~Onz1S| zUEAyyvA$-kPE6M}yH%{sj8%$jv9U_--X=Dd8LJi7VrIj{GHU*fSi`s$^T^vZa%}H~ zwTx>qvpd8xYJLY<;qXw8yi+6lc`vMVT$!2OB~~kd6^|=3v%AH{@pi0yT#K3ABQ~xX z&j7gkGP_r7d^4U2aP?(&pV%a3JR{)KpxOOm6M@m;&K|Afov^$nqpOwwb#%O{*Q>MA zhVuZ9QSRjMOw>=`_6-lM9cQBAa1VxtAAF{KD719AheJz;dn7b&Th8u}cA-5M8jo8X z?(xvLZ8>|62rV6MWM~{$9PWwG(&3&AEgkNu(9+?a4lNz-nb6YVo`qIEA*91S7g{>p z^P%x~EAPPzp{2vU7+N~lOQCVw;&3mAmg8OtEgkOF(C~xbzt=)bhkHG=bhtM{%h&v7 zX!yYn_f`k3{EglYEgkNi(70_m6Fh()aaH3Se?U1tVM}4mLtMw04Hui(>_M@`%pMdQ z&y0DA>lm|##3nUke&RaD>|wD9%$TRRjxl>gY%(+EE1Dn89u=G1jCqUe7_-O3rZ8jv z;yT9caj~h*n8&z|F&iP)-;DW;D;KkoV)Z*V<~6Qd%$^Xduao(WYZbF6#Rhnv%yV3; zm^~#n(2V(xYZbGn#ilf4-s4)u>>07C%$^ln#q3$J`unjCa6Mx7oLEN9XJl3fu17rb zd5xULM_`rU3dHOMv1x;GFVi_T z-_XdJe7rYsPS3lCtXX`j^T;n6ZZOInL~Dv02Sn%lPDG_Kw(W zVDzT{=>wOmBUPU&9#;H`S6`!WjLuhI?}pZnb4c-~_d>%DKF7TuT6)t5p`|x{7#g=N z=jD&O&^`{0$1UFUNod@*ocBHrExqZp&^WGm)90b3H+>OWdefJor8j*QT6)vhp`|x{ z6Iy!Hx1psseHR*kxAGo*A6k0T522;!{1_UyE#CA~XgTiZ(9)ZJ2@OB^{rfev^rqiJ zOK-wnoE!O?{|F5~*qi?Bpq0PTU!kQp{T&*&E&ekKKjNChIX+4`K6^`H%tKsdn7u1D z#Oyt>P0ijD8*0Y9#Fd2E`(ksLF+Xu7VfKO8oMy~ZTsxS3C^nZF^A*<)W*>>oZN|LC z)q>f_V)K|We{p?a_KDbhX3S$;ADDeAwpwfX-9PPcc42noYQZBv)5!U~m(MzkWX|K- z!6QG{$OSy|^A00f3AmE*$S*YVqA|&AXzs$Z9yTXhWghzgveJ^&U87m2o{4)DNETiVL zJnIV&0Q1NnHS#L&g>{ApfSLUyR^JKM8y)~=_Osa4-i~#L2Pc{RB6f`#>knNUX1|JE zYsNangOkjD6RYno>k$u5GW%WZI&a6i#5KR!A7a;=u|DzOB(p!oZZKn=wlxkk`%COb zGuCTc;~=xY#WJeyM>kqxw2oIw_4=pTZL0R49)w0W!Xf_QM%_Yd2QO~a5*l8j&uXoq zr5kk*E#0U`Xxz4(iAU=~>lqr4TimEuXnEY;p`{y*9va6LH|i5wy3rV+r5lYITDno+ z(9(_CLQ6LqE3|Z@u|rEY>K7V+xAGp06I!~_xS^%Xj29ZWEp9Y^XgO|z(9(@23@zWk zi9$;^nmDv{qe()`*F0%x+@E{2I%vg>CJ!y$Xo}FdZ8`7pzjz#&Grob;YmS=F8O%yN z9LyuTY2;0=8)hdS4rbOOcC#6?6b}b8YZbf2jM<8ZgPC;~yVZjYoxfWKWIk*}eSk%x!#+X4XqAqvqe88IK2td1P;m9Jf!|3o{=N z4l^5FY?xmsD*z7;GwUOEyBRA14-PXML+lPSRs))yWlW;UMK17@r-d)SOsiia_oO)B&F>N`1&<%|$RQe;QS(UF4<1J5kwY~yBaW>1?palMG?_=vqLDB7=&UY0n#^og zu@}u)Wq351*=%AjnX%gNXfm_e#a<4^qd$xhJU_Dr@t`t~oI@jD@krJp9#m#Fr&x_x zljw#pn@g-ltW7-N$!u=18nH(4NGG#-#4_S5tDk{bxp=^nN6xE}88we&J>zjt9yy;z zzUtqBb&bb8nawYj5%*H>NV3}T@F$O4KqHSvk@H<*)uaEx3`-OtItGj`w!g2bsyEgD zriYce6jiVPEo$*Ry2(N~MrRjWI5eKUii<508qYxGOtole>0*n8mM*qjGXz60>gqAM0ZfNkZ5SH2EjiBo!$ZuR;|nRrj|FD_GY|0)GqZ)oGHO1bFgtN}@yJCq zGNb0IWzOOOXCAqzMrPDpnapH7?#v?>)5zoe%9zo3+?m?c*(zeEnX&S)VujhNVrQAL0RNc2CLts!=<87mVjR+z0RcAgn46f0JkttFOG^E=PF#rhQWcA*)o9gm(e+d%9hGgdtw zJ!Q6`SVr~e^t9Sr-2A;@{W<-s+2QzeA(hixHo_4*d)mgK@my9stvxinRD0Scp{1v7 z8d`eVW}$K0@*UacU1(c`#^V-G+cLB~?pC3tr)?b?#}!Z8CbaalZ9_{>+b*>9wCzJn zPun51^t2sAOHbP=wDh!{LrZ_yCA9RkT|-N++ATD0TRd&|&~n@!p{1wo8Ct%7dxe&s zws&ahY5RnhuX*3lxWD3Q`*qNYr|lnFdfEY@aogfs%s;Gc;f&u%8GkV_J&k#YwJppx z7P}-^bG0)&vC@S{wrk|29?2}lN*89Eh-JjR)I0LbU95ZIk(+AdW!?*O80%h`Z6=mc ztxUdZW;RyA@W{Kfr7Uv5a{1ddL&HIHN!qFcZtchbmfeLPkpx(v*A7Q4=jRf$dl zvt7h8YJMkJtLQ86$XzwEMyy%%6`1WNmQnLwSjp%z@W|aYGNa~^tZ(!jc;p@$dA(mX z>l~c~W_yZd)cn4%`q5Y5k$Y)mM$IF6PC%D|NA9hWH~4rwH{c4{Y#*^3&3KMLUxC@a zVi`66Mm%$%%fKV|)5x2=7oI`d8d#K7=YsvkZZ_kYq^;4->;SQh>hD0G9MyE~N8h7I z7ALGfHEZ?f%F0;!mZ zjmIrMd1PpL+@nHEpFBD=jw?QSOlawo$A*?Zd0c4elgEdaK6yfD>60ghmOgn>Xz7zD zhnAjmN@(emr-qjPcUoxNw)o`fq2;(ULQ9`KGqimF&I&Dk^6b#kC(j8jU-P-4aeu`p z&+DKSpFBUb^vMfC9~}niysWiDlGWZ_G}tiQ$n4Yviro z%fZN`JkK&`F?-)557Ee3{EaDd7wd(Z9V&L4_re^;S{i1Di48MjE@LeXv%|%1H)Bp? zEe*3H#O^R-ZeuMCvm?dsG-HlqEe*4y#O^X z#4_Sv>_LxY z#(c!;8D8oV3uMn4UfD;BcJhJn5|e#!|YPAXU&+kSWCm~GO_2(n7z2#GrL^u zc{64)*3vM$LhJ=IW;0gLFuPJLBfjeToe*;zt7mxRRT`O5^GIesR?qOrt2HvC=8>!i zte)YK*J$L6er2o+JcQ2dTCtbRSRYs~!|Xb-m(5rwSTDouda+l`ST9&F!|VpJSIt;A zSTDouMzPn-SU*@V!|W!p*UeZ*STDouX0eR;+t%wlRu@*!@W@*ea_2}j@yI+j6ft&BA(Z|x4=vmEi@vf>>QvXXAdjQAi>|(=1Ib0(-$DJdYomiv7>_M@Q%$TL~XP-n$Kp; zaddil1FnWSVlZT{ic?yIY%~%=e`!ai4ETiV%f%SqeFpqpjBfs%pST|U)!t7bGZ_QXg=mIl)PK@*B`N~*F z==(BzUX1hR$yiV5`!ah$ETiUE#wtVKmq)&+k(^=Ay|CKQ_ht5y80XZJvFgz2W%jZd z=hTz2`q1fR_KFzi)RVCa(dlLOs@N}PtVVQtnY|{)IrZF*Rf*m%v)9Eqr=E<}iEb{l zH^fl)Vysg1Z<)O*#yR!ej@63(Ewi`8GHQO8Si|V%^2oO}lC$r*7uGVmxy;@XIq0rsZ%LmLXMc+&@=r8j*T z8n-Rp^idbu$D#4K#hX3}Esy(YXz5L#g~oBkn?4UMz3Ge4(wn{vExqZh(9)Z}4lTXu zo6ypmz6~wC>ATSKJpX-Y=}kX`mY(xtXxz4V(@&x0xSvByZ~7&)eE)t8ExqZt(9)ZJ z4=rEwAE9x7#hd=@pcQZWE41{czeD4;CC8b6=;m^ck5Z1ai-h^lJVZB_*}GzOJLV%+ zi7)1@5>{<(#VXOe|J_E zy1+d0YmMyby|BXY_&>96#Cn;r($EEF_N`cNGgchBz|6iA8{LeRhb}O)@5TC#Qr zX7+>F7-pum9>ue&i`6Tue}0=-NEugsjh=?4#eaAj z?8F++WyRB4Ld$a_SJ5hdI27ZGr*ZwN&evO9@261kYXrD*9@Tood>EuO~JS2~a5DiB3WPvc4yMa%b(E3gzT zJ&mhU6fHfCtGE=cJzg_cp~(FePvgoBsTEJ-$`VCOPveRbIj+<`^ABBM&hZ9p0(T*t z|I9;lfths^%c%Lh!0bd%m`Ao~Xyl~c3#$bEVrFBAO=8AsLBE*Um|~Nev1-sSX4Y3MqvoTt zme4)sk!>0|x%a}FLcf^VSYlI{v9{1JW;V81{oPq(=od5VC)VHFvDVNpW;Tx405jGc z`o+w~70ZaPx_$;?C8B%GBgfOojGF&OtWWfkdF1#SInc*rouYfpYyz<bnc1Xb)0wg6 z+Zq>`O(r(I8EYS%WoDC$4Km|70G(xKQ;0EY_B6Uwvyol$q(|j)Dak<`0XN~K;6s;ZmE1t&B zAvvy`FS$NT(bChnE=!Ipo;EnN^t2g5OHbpvEoIyEw3$LnPva^oWn6k1SAppKY!t5k zP_*T<=>5~MHDSP zjjKcyEj^8^=@hL!UNcvW$o&;hb54-K7V&hh@r@p=ws z9-_0%Y=GEcZ^wK@FPRyiu8n!rX3R_Ul9^2@HiH@S6TM_+Q;E%J#ymwYnc38088x3J zn7!yF^T=s5GNa~m8*>_+Wga=LMrPDJl9`S^Gmo53BWuKrN1vJ5^kOw)=A+NdY>-%u zSOMrWGaD>cBUS?X%*{nZ#z#mwdrs}U;@9b#tliq(jfh&!NO zrDZ;`8nGgA&(myvu^O>5anI9i0kImfLUGU2Y(X(bbeut+30SX)=qb%^QuY7Ue|hF# z2*=1XLvfsiLu<#Gp*YSWq2-xt(a?rsTydPmLQBV4JhXDA;c=JfLR&JlcI>Y>&QhV} zahDD)9cP))IIcL(vZ1BpEEifj&hnw9u$EPSdCZ@xLawqidcSYNm!X||qNjaX;6BWbq2SdCb3xCd#rfmn@Lcen>>wxJj!`beXbkNmIv z;y*E-&o{y`I{V1Rp|zvli;uL2mgl2QLQ5anG_>@Q%|a{Z4<2{(F0?H|YsYbmk8BxQ z9(SwI(nq!qjpK@sY!h1g$hM)Sk8BrO`pEX7rH||oTKdS2p{0-P6k7Vo&Y`vI9Lo1# zm(bEjb`354VYkq@ZSj%aL(6e{gqA+CXK4BU?G;-3$ljr)kL(j#d%Wg-L*xF6kL=e$ zD?YM+Xz3#dgvM=)k1+pmFWou5k#f97%tPEgH``dOM$AXtJvVC?s}b`O=hA-V2%Cu2 zi1~>->)vitu^KT?acA9ZGqD;mUvX#MY;&<1F>i4%-E0f78Zm!yFWqcQu^KUtaWCC$ zE3q0epK&kUY-_O^F|Tni-E14N8Zp0dFWqcgu^KVYaWCC$JFyxu-*GS9YGn(xoRwLFA?kt+^DOMxa5$-IS?Il(t))Ve5n(ZxC zBi0q}C7SIcRwLFI?jD-$D^?@c8SWRF?I%_v)*J2@n(Z%EBi0@67n&U)#^~Slkpppz z&OUNbXzi%?;v)x#mgl2GLQ5YxG_>@Q!$K?P51vC0??O8ww00b~_{fo=<#CS+Eq&zZ z&^WI6$T6X%j~p9X`p9virH>pRTKdQdp{0+U7+U(sNui~WoE%!a&Y^q{P6;i2RwLF6 z?(LbKE>=FVl`qO;|{XfRbn+_KI2@|x4cVNi@nyfM9gcP zYs{_@d)ffF9g!}qtcZt=Ab%p!-W_OF#i1md# z`DXWs)rfV5JNah!iq(kqhCBIY_lebrb%#6oX7`IR`Zs;#0UV>Vj|>m39ra#(|c|5c{?ugLRM@ELmam7cT2rYf&$PEq&zq(Asql<$Lf#Xz3#_hL-;DQfS<^_{htl<+xWu zOCNbPw0!?w3oU)*_0ZBs-UzKdUh|uwaeu`}-s+$gA9*{p^pST$2RfY`9pBn2)%VZ}y;AjhL6XlW+ErSdEyUxRY=8uvm?lr?``E_J~-Gn6J2# zZ}zBIjhMH%lW+EzSdEy!xOZ>%xLA#t$GBT>HbSgM%xB!6HybHdBjz>k&zn6VRwL#& z?$4V&DOMxqIquJ!JtbBn<~#1sn>{U7Bj!Es&zn6XRwL#=?$4V&D^?@c0q)P6JttNp z)&uU(n>{a9Bi04(&zrpo4qVnBi0S>&zrp> zRwLFA?$4XODpn)b5$?~My(U&8))Vf}o4qbpBi0q}&zrp=RwLFI?$4XODOMxa8Sc-U zy(Ly7)*IGrHG5mEMyxxm*=qKV7^8pFM@Hcooqgop(ArV&#Yf%?Ezd{qhn7C_L1^hC zABI-WA3TSC)P?qOXze&|@sUqL%j13;TKdRmp>bUCk>l+$Pb~VKl~UPw=F*MQ)oHv=g`teehDq#zh6U3 zANeh`^pW2~Yme9bM`+w%@sU3}XvIhV3N3x)@6fny@e$@9RvUJXk5Z1;h?^SvG4HWXs@d0KHDdl_om8`L#A?Jkz&fdB--^|U^?-F!&At<> z5$gi$q?&y%RwLF2)=4${L99ls6U^^3`%$b$tQV}4YW9;@jaWBWC)Mm{u^O>{uuiJk zFJd)f9buhRvtPw(#CpQYsAj*3)rfV4l~K)p7poEL3oE0V{UKH()*049HTzSnMyxli zg=+SfSdCbBSPRwcZ!t#yrjImmRb6Jivfj&lEm()OcGP?Ek(SW%eAF6R`bhWC(norP zR?Z(hhmO{T)-yC7xA;h}(DJywLrWhSJv5FhKGG+&^pP<_OCK3CwDgg_p{0+sg_b@t z7PR8S=_6x@mOj!iH2!X7zScOQrH_moTKdCyp>f;dBjbmb<0c3#ePqJW^8K4AwDggQ zLrWi-B(!|ZlZM9q6(5cmoZP88HvB`l(qru^KTS zvHGc5i&%}Amss!AtW~T=%ulR$YSvw>M$A*JaB9{=EF;e59qw1n?8SPg9yyvu)`(e* z6;921iq(kOj5STodWqGDS&cPK&3cQ~h}n%bP0dCZs}ZvtGoN~t_p^^!jhO9N;ndrW zAvUrdvBhe{ z>cG0CX8pu!#45o`rDo%Z)ri%Cl}gRV6{``e1}l}CjVD$kRu9%DH5*^7Myw*NO=>oQ zSdCasSdG+dLa`dLs<8g3*+gPBVs)Xz)ofz18nMc-;;7jqVl`s5VU1C%W}=%o$xgyZ6U2I$xa(2#sfx;wl3} z%d^vzp{1)#6&jlWxQm03eeSD7uebc@+T_B<_Imv%^6y{ z%3Pu4`!{!J=_>PtmaZ~yX!)Aw3yu3Lt}=fIt+>hpp{1)V7#g=N=QidaI^XgC?5ggs z9Ip}c5Ub;w4G^ml^AYQanhg}I5%Uu3h?-3)RwL#oRt`0rN~}iAQ>+zgHnmudn6FqX z)NC5D8ZmFNR;byuVl`s^Vy#fK>BMTpJjPm~X48w+i201QLd^z=)rfhGwL;AXi+%37 zYRqq}6>2tvSdEzHSS!?QMzI<(-?3Jx*-Tjmq9n$00rBi0Sp z12vmdtVXOKtOsf~mspKhM_3QkY;Lg{v7WF3sM$PXHDX<11yHkj#cIU*!U~{f^NH1n zb%qr{&E^-Y5$g>rfSN5JRwLFORsc0yP>j*Pd3CZ7j?vji77mT)kK!YXgqG){MMFy; zSuC{lk;OwR=MVbG5?yFZhQ{L-A6Y82Jnqt=rH?EV8pjnMSvIuvk>x^5A6Y)M^pO=p zOCMP=wDggcLQ5Z6IkfbVRYJ>i@~WYwkE|A2`orp>aoge}YlN2L)(kCuWUbKh{aZV< z^pSN!OCMP`w0zC$g~t6AA6dVHR(xcG(9%aX42|0s=V1P|HTpZp7gCPbh^CSdCa$=ms)dSFA>?FU(*!TTiS;tTS{2nXNBYBi0+bfy_1# zs}buC-9Tm=iZS{(ePkmXqqC1}92(Cb#Yfsh%k$ADp{0*(8e00uW}%hy2YqDoF0?H| z<8h0RY#CY}cdO9SN45@)4Pjt1JZ7NnH<|(?`%r+CN5%U#YZDyN`)rfhEt~RqR#A?L+MOT~ImSQzx9;2(x zY%8%EF`v=ZX129hjhNTyYBSqLtVYalbhVjnD^?@sIl9`+wiBxn^BrAnX4{L^h zSLpaL+efTMtS@x@nC&Z8Bi0!@e$4h0s}buB9Y1FKi`9sAhmIe!1H>5pn?7pP8pjnM zIVQC9kz+$kA2}|x^pWF3OCLEQwDge^LrWhyDYW#FlS9jM@+qOEkDMA>`on3Vaoge} zr-zo~&Im1iIA%wS)rfhG zYaFv<#A?L+#x;)Fv0^o1p5q$F>^QL+G2d~GV|Kh)jhOei#xXlVtVYa#T;rIXC{`oZ z0j_b(P7jBp|W+#i)h;@N$9J5ozYQ*}$HICV-Vl`r&;2Ov5G_e}7UT}?LcDh)N zSU0%FF*`%7MywxP4NSA67}(9%b)4K01- zy3o=`t`9AJ?W}qu^w=Z zV|KGxjaV1B#xc7^tVXO4T;rJCDpn)b39fO>ZWF5!>jl?1X2Zm4#Ja&Xj@j*EHDdkX z8prGou^O?CaE)Vjr&x_xPq@Z0yGyJ_tSemOnB6T_Bi0wLam?-!s}buA*EnYPiq(kq zhHD(N`^0L*y2CY&+5KXS{!Jfw0LSP&duw=TJbx4)c`!7*0Q<;8p{0*J99sIwBcXBI zat?j83+=Jcc--P6kB64W9T8gk$jHz*uK36kp{0*J8Cv?tQ=z4gJRMs4$TOj(k30*l z_;C8jbD^b=JRcf=xAGpm5L)`ki=m}Iyc8O@Ek5#cXgThc(9%a<4K3fl*FsAlc|ElB zkvBri*ZgK^++XpLw>oIWN8S!CedL|cxNUI`<{z%rA<#!2P>$D#d5CLuv*BVjVm{(p z-RwcJ8Zj^18XK8CBvvElC$4eK9u}(+^AxLdm^~s^Bjzhs=P-LztVYaRtj=NfnAn5< z{T^#=p7q6S##$X7`M5^bh*^!bI?P6h)ri@RwK~j3iq(i&jo)D`MvmI-7m^~?0 zBW69;>M(mstVYa!tkq%mv{;Q;1z4-Y>=`lqvike68n9MJM4XFPBUT00>M(mw+trBG zfi(`yo)>Fz#45oW2N7|fkaRp&3)VP@h^)IKRt?rTh={C4tRAd!VD_?(cX_|EPgW7u zI52xftVXORtZ`uWs#uL!RaoP|>@~3(vAVFvf!XU~Jsh#hu*N||e4V2?Vzpt7gNVp# z#Hzy@2WD?+pM4#%`mn}9MBJ`MtU|1DVD^r->w}1{(s}k4XJh@hGr0I|(&f5$`_%ft9%(+y2@9frK@}$TDrM;9AtVYaRtkq%mu~?0mzgVlo>=Ut`j+n<-t0N-TevO#VSgXVAGi_HR z<~7#pF#BArM$B)l)nWF9ST9G+bM(67@O-bo6zgrqd`GXl*;isUV&0?I-Rx_zD|`-S z{-f93>>IHfu@2CCF?u=Pw_-J7J)rl(>^rdk4z$&3+ea^J`&!Va~eQA7V9Pong+p*`H!HV!dIOy4hc1HDcXimb%&BVvPRHs}q`e zXCLVn8qXiaM_NL|FKi!a4K017duZt+JwoHQZ1?d2&;^khv>F2>n2ts<|Dc-%v!{1#JogDg;}dujhLV4s4(j;RwL#q zIx5V1h}DSsijE4i(Zp)RyhTTaSx>PVF@MofVb)8mM$BV$RG9S^s}b`V9TjGyi`9sE zjgAVlK4LXuexswpYz(m)G0)LaVK$~%jhOG~s4(j*RwL#;Ix5WC#A?L+M@NO(SYkC| z9iXGaY;3WNc-1!6I3){M9q6y{$bK4GBUTCeE6m0b%Sd}cI?)+fJLtCX$Z<8YMyw%p zTbPYknB9-Hgl-G7@x?M~J_0KYXMB8^=kX@c$QrTIFlXItLa`dL;xK33Y$CBwd~{YG zuD8r47ON2}5Z7B~lZe%bm54d(W|NB5h!u%z9J9&9GU9LanUBso#SC_joLnP&;)4f& zKh`T|u$xU$_5w!#nF|+C+qV3t)qzvzwN1Ic>3EgHh}SXwag5I2jtvNn=bhp|14GO6 z*p#8A|4bEH`p?v%mGcgdJ53kbw4w31#eb#?Esr~WXz4$LLgTpNKZ8R{|Cu4Q^q(0+ zOaGZEwDg~uLreb|5?cDt(9qI=_|8`#%+uL%n@3Sn=`cZpSeQI z_iygd(tqX&E&XTS(DF6U7aI3h{Ad0STJfI+LQDTyFf?vka-8{xP7LRGf8}^atdt(E z24*GtGCXpCM%IYgiM|Z8fnqgcmZC4iY)Y~5eBNWWqA$a2DzS{3kIo!Mmxf19t&!dR z%9zXO(lDDwtksM;jq|M8v|=r0%x!dOm`x|v&5SvYE)BEk#cIS{N0)}#AhC@2s*m>B zg%yCF4UZhGku_o^pl8Eu2C*8kBG9v8HltXLSQ+TqFq=uNMywF@Y?#d~RwGsldN$04 zh-JiAJvP#U=RMXBIygLXs7BU^b%YKMvsuJy#Ck#phuN%RHDX<%gTrh#u^O?y(7|Cg zyI74_XP6aYHiuY^SZ|mWVm7B(jaYY>6=F7*SdCbJm=$6+w^)r>hnN*&Hjh}1SdW+$ zVm7Z>jaZkM6=F7@SVnwzap9?Vm(_|nA|5%vMrPDJk~NGOBObYcM%IY6j2Ra)D)5ewlMoxN${(0EQN-n2+)Jg=1V&!VBFH!T)gdeh>em2(o0 zyF?e-lA-aq#haE2Eswi&Xz5MMgvN2jo0bhNy=l47(wmkKExl=l(9)Y$3@yEBrO?uw zRt_z_X_e6OJilsa=}oJJmY%bEXxz4V(;A`WxHUsdZ(1v~eE-%CExl=-(9)aM4J}{u zdZBTD#hcdepq1R%Ahh(R4MXF$rBaxGnEB)!Ur0G#BjzDyKA9~nRwL#kW-dbX zGKLn>G%O=cM9I?V;h9vNvrKT6)u_p`|x%78lz&)F?BZd<%*_t0|O9-*Z-?HO9We|v?N-n4gU=}r5Dmalo=(73f-C&S3swHkEUHBjxyC{?yMr#B3_Fjm2uje8g-jvv#o>F)uNj%4`#{8ZkdH zo62lcu^KT?F`LS4GqD;mUoo4?Y;&<1F>f)O%4`d<8Zmz{o62lUu^KUtF`LS4E3q0e zpD~-tY-_O^F|RS3%4{34jQ+p&&I8PfGFku43@E4wW{(06h@u2VL=h81&VnEUCgKp3 zBtbEgL`780IbqH@>l)VGHLhz!*PO$y*$wWx>;HZ0d%r3eXRrS66!%~@j}X@zV;15r6tQEB(PLGq z>8^sPA$jUQ{+Cr{9@bI)YS4VwIGUuYvcR<%off(lRb`QDQB{t0EsZ8z@8TM?<6Pr< zQ&l7u0>T@;u_~mRpmt2qN*%)Evm{%u0>Tj*|n%Dr??hXWtnU7jptO?qN<$c zT8z-AyB1aD4A-Jsoaq{uO;zPA*J8f2U5l!6j%%_1&UG!S%6YCuRXN|a*yamdW_B{tt!_85=2n@VhfvFtG}aW|FN zLSxxueB%Bou|>wR$2i5^RAR>(%O2wucTvv6GEu zk8zK?sl-k(wxQ|);~)1=i7hjhJ>~)KrV=~VSoW9?xPMCQG-KIgUf^yjvD1xZkNJVS zP{htKmObVP?m`he(^&SHFSrXu>?~v1W8O3>=82tcY<;~y=1-$yzSud&vd28aT_|Gb z8p|H@33s80oo6h2%q!f5B6hy9>@mM^7mC;g#!|+iy5 zm1|sYsv}ps7VEvnwWuT4y2klZ9l6f6s3X_A7IowX*P@Qx=vvf~n_P=Jad39G#h84XYf(pTcP;9}9j^g=dLq&dY4h>@m7|a;qg^A)vGX$@zfE`dA-e=&eAn|VBRac9x2tSBn+uJd10tgE~ke)1UO2kiSUb?V?AilRaN#wa9> zizaJ7wff`ptfmxembC;)f2ZP~`xliL-z+IFCY)Mc+<$g?QTL+q;>b(Oi-!36QKwi7 z{~wPR=kz-Ge^E3p>KET#^W}2`#}4i?%JkNzx3T{(Fl8R*$$wjvVNVp_7xO_LuFKQG zJTbY@=3Zp~zqDv!bJW2)>J)YBVB_m7X}aro|2X>1F8SX&Xm2V*`W}TX;$L6<_RwmW zmp+%GUk1M@<89$Z!FR^Omrj*&y84$X?x&=U#ZF5_knb;Pn8>%*xfVr`?lBFI}jlNLpg z`zmQs1bG`}(xM0=iljvmT*tL2g1oSpmgRd(`+%pmlNLpgQIIrDsNgXwV%by#d15+g zQ3QEPIB8J?d7>j;FYP}L_(_W*$RRpuQ3N^QCM~v^LtVUHdLJBQk`~+2%r!2Xws|wx zFoAu*qQgH7%4ON(t#!NU_Fu*!24ykEGA;m!L4+p?Qm@Il#V{k8zBFSFC}t z>~YUv;1yfLSU0^U;~E36*qX+=i!r`2@QQH+z$FGT#yJLFv4+NaiZR~t2pzGtjr9^^ z+~W~CVz_+_UT-nRKOUhY*4S7dG3Egtp(D1AvA$yX2kaWLb&d5CV_x79I%4Y?>o3Oq zz$0|T);BgljCq1b=!k7#Y@itP1&`1X+tAn^V$2&nLPu;PV}rz)KX`aeBR| zBU`w}Wz*QRWer*@*SOwPN49c}%cgN~YuBQVw04d2r8?5awWuR)U5h%>&b6o`+qf2W zWLwvwjZn5UZve&}cxjJ>y!r0RoVELMiOFSk@%WZCKm~x8oiN{2VwKSGJ#wi{XCANjJ z>@i;Pm?*I=jqR=1WZdF0QDUu(?IXtc#bctxwlX$SjB$*|M2T%}Y+o_PGaj!a*4o&9 zVvK7%ia@N5vHisu-*~)^SX*NUh%wIbcpb5J#zu)T-tl-Hv2Bcv7GvBuD)_KA?%i#T zjS*w~85<$i!5AOb#@Fm%EPKogJbFiLdt=#Se&EqNVjYcz z$FEK|C<>T0co2`~+`;AyZ{<0eOL#1g=G@Wd9INeQPT{dUVx5eQ6Ju`Su{>fs85=Lg z9K&OI#5xE{~f zOBJWTYf*6qxE2*>pleZa_HZpK&LG#K;tYmXz2fZYT2!1NuJOI4eK6Fus5pDMh6z=d zVXkr6RB`rpEk^m_u0_Qe;Tk5i|3}#q~#cwc-WL!cVkn;7@uf( z6zgGZsu<%G4Ub|yjZG6{yrSVzte3IrVvJifJc{);Hbac@i-t$BKE|@gI7Y*xSYKn= zV?3kbQLLY_>@lv<@F>>bSoRp-Xm}JGU@Uu#b2L1P4K$WL#yc7w#r80kJ;ps69>oS3 z%O2w&4Ub}jjUBA_&OAWFqu8FtvNyySAM3^_7-DRumSbL^HB4-%u~}lw545z1?PYAX z81n>;Vq(LLWsmuSMlrFyjb)E{gGMp2;l{#Sd6Z{1p>0faj<7ki$E-rznAk{ThiJ=~ zU1%E<+sD`(F=iRs#>DnDcBmM$4Q*p$`x%?03}DuwZA@%`V{^3}vkz@!Vh0#IOpIBG zwlT3$#tsMjv6~B`eylo`t4UT_RYqeS)vL-F*T!PxNL2+>nhz5ioyNHqRb{+uQB|s3 z4M689PRd@rs5=u?fcJ zi7{@`;wU!JSoRpdXmJ#qWGs7(W3)JmO*WQ2#&aVcu-K@3pt0;Ru5ngM>>y+FwJnTq zoc|V^Vr+pJ;~W`-G%#F#&5@e-SB>_jo<5n8;&4l|ZL<`Y`H#11!>J?0e}o5YSVwp6dl{6brf z*pbFg5@Vj>263^YjGZjTe8VmFVn-W0MT~ieo5016F}4is=R6-a59_F2N9MaW7Gp)K zBMV%^gvO(Vu0~Y`YlC;>d#p|M4Z>_Iat|8%$ldyu5h#>hhw^P36U`JIagu?kg|KA1N>TKUQ9x zj-Nj}A3sU66a4E zCNwGHyOT*HduEnsl zmTNIAHFPb8rL|p)VF`yDdcQF&HFhlyZ`W}x4sVgQEA7*?57u)n4sX|Y4HG()-M}^O zmvnf$p=)tSxshvec)PJ{n9%+!xfX}Fo46K-x0|}g^`>oZ;uUPTV;-RAP>h#*OT{^2_y=q!F<$O173Yd!lfXKQ z@p5me*h1UM{6Np47%%shiY>*MC+Im8$#f4(bBlH!D@p5meXr*moKB1FPjF)>$#a3d>EA$SE@p5meXf4M4 zLhqm$FZY&;He$>(^bU&ga&M`)NZZ1E!-ah@UhXXwZM7Wp4!wh7yxdzVF2-^{=izMy z)=~ZNwz+E@15zDn;Tk419&PSg)RC61MIG6~H7=XRqb+ODTDivcraH2fYg{(fk*!^e zI?~!T&X?*)8`q+av~?}&NITb}j%?#v)RApni#o!ikhK4zj$m&{i#pQ5HNLmB54LwL z>PSb|Frk{UgKJziF88MO#@OA-=ZiXmJ)~{n>!tnI*|n%6JG&NjWEambJXMz^3?TVvT{oTFP%tevs#wH)Ie z-GXA<7|R~x9{qu0+ZxLr;~)KjV(pD(k9mNLzhb=HTXL_1u@Pdt+*>L-YFoB9Hd2h2 zdrQR*V$2Wp2a54>Z>iW(jCq3oKrvq6Eft-_b~Lu17%%CTik-xmH|P%(<0aiv(OHc7 zgZ@AtwqOS+|E7cu4&`UAyyNw-w&D#pA*f1nsI>6VJ!#F$^`4;14? z+)}Z-81oGMfnvOfTPnJUG2hT1D8`GprJ_=dd58W$FE{~fOLe5b zYf(oAxE6I}pleY__HZrg$RO9Ejtq7!>d2n1MI9O98sA&m2SZ(pIc|M!_nX-K z#Z9bYJ&pAeW4xk2P^_1+-eQbf^aqOdHr7Xs@r(XIu|CH7iZPDSA1Kz>SU)kwGx`I? z`Wed};~M>eV*QO}kMWKEK(PVFvd1__f1ubvW7%W8qd!n=4`bP5+@n8GY>=_+G5*mX zC^pzw_Lv9g4;14?+>(3D2lNMu@gi=?y`jbq6XQkPQjtC82l@lWcoDbc9`gkKfnvOf zTXJu2V@HbdB5tY39`gqMfnvOfTPphNb720UKTwR9ZA--fG3F8a1I2jRwp0uhV?H&q zPH9FtFWZ)iJ;az-=nvF#ylh)428l7h&>twq%eJLruo&|U{efbv{zqK?dTjqfehky)-q9hvPKCR8)#xW;AwH(s_~tQa3{F+NQ3&p1S%tJoN0dy6q1 z(dQ~Q*4S_{#wGd<#l{&MAvWIF60z~dhKMmv(QhbLWo)Dv;}so-ViSz*BgVKzhoRU+ zWBZCRe$inlHp$q2VvJ*S7>Z3cw!awT89jw!2O2v-jB$;gLa~F4jS^#gqo+`8im}mR zjB|7micK{(MvU=}E<&+s#>R>BX8#*S-_`MhjfDh?8xYm6P&WV~!!DyE1XW{e%zWV~!!D#kQS-r>gB`AWviwxwdM z*b&Cq`AWviwxwd6*pbGTi}A8;sTePIl(Eaic-a>3LF{N_>~-a9^0IBIn5ykO#u$5D z$#~heR7?Z=IqS$gtfP7zneQ6MtyD)AxP}Rh=L=nnIc}asMIBk@TGWwKU5h$$ znrnP-X&;>KTGWvsovtInTBDK61Wm zvCS8_h6%lo3tfwCxyZHH=8IiR%QC9xVG^xYit%|CDIg~qbC$k?@Fi;T_Ga*R{7T8SNNY?c_~6|Gici;c||W8C8Qd9mY+%@Je# zqSZ?5cw>i(F^lJ5 zHWaaQj13ZF9-$3I>|A4m#h6cMLlHaA*q&m{E3~1Aoo_6A%rCT|h+SYTd(1Pmp@>~* zY=~Zy`Gz(Wv5Sli6=U9^4Mpr?V|#)9oOR?9tfP7zxzsg|0jZ8GcMTI7k1lg9>d57; zMIE`qH7=XR&?{@uu5yj*O?BjI*SKt|BiFbVb>v#tIA5wG*SQvTj9+3gK1}h? zI7B;@*rmqy7F%xYF|p;whKn&S(M~0HnX&9$ZtMxM%Z-iDa*R_nP>Ee(Y@`_D6)jU@ zR~pM6;}$JbVpkc<9^)4+Q({*e%O2wxEmLCG7|R~x87)&{*BZ+n;~FhfV%HhV9^)HL zQexK|%iayfo)^2pSoRq2Xp$1U(OC8v_h^z5yUAGg82@N45xdz~_Lv7~E)l!MSoW9? zjf$7WZZ)=#_BHbY%_U;D8Ot8?1I;C3w;RhI^90Q$Vs{wJ9`gmwC1Q6P%O3Lv%_U-Y z8Ot8?2hAm7cN@zd^9ao)V)q!!9`gy!C1Up)+h6aGd4=W@vHOf=kNJh>60!S@WsiA= z<`S_7jAf7chUOBnUl_|C^A61=Vh+7b>v~!I0mFT@`!7g(0KGq*P@O* z>RQy1U%AF*(-`{e8noZI#`UH;@|bH}Hr0{GU5h&Mgln8H)sZJ%i#qa@Yf(p@b}j12 zZ(WNz@{DUyM}Fs8)RAXhi#qb0YkY5MA3X0`)R7ll!-Q(ai>`6mR7YNNEynH@u0dP|GnZ`)REu27IoxR*J7Jra}5)EAFsO>+wz8MvCVI~mX>85c?gqel2VL6WHFvS z#vz)d#2z-5y+@3FB=(50>@hCUBqjDsW7&Ju*e7C-8p|Hz6irfMzcQ9R#w(hn#C~lo zdyHE&Ns0Z&SoRpdXp0hi%vkmq$7qWZd)(Lo8fzHOXp0hi!dUhg*Jz6pd(v3;7~g1% z5_`&6_88}AixPXtn_Fro42UDu+H zyysffk@sEWvS|$cpa$(j*SOwPM?P|m%ceT=v1?IBK5>onr8@El*P@R6(Y2@}pSl)x zRZro-?l#Ux9l^|9zPef35mUJ zEPMQX@U%0rcZ_9^pA*`I#NIWQJ$_zj6B2vRSoYpGwx-zo#KJfZ@4)A|pQ^Y{KZEGmDWGWujJ_nDEpIB5B1B(GgyJEXy z2Uz=JRM83lZx4NFQB};uqwcFP?<#+F2Ny3Ci^|KV^Zhr#k2H3yKOR%77bD8b@b8E+ z?BV~SzcRco_dEYM{Xgxm1AaH<2Y-#Z&7B~pEl>aFp0cX>gV`Cn_*F$%$NK!q%Ldr9 z>93Bz_w*W^Z@k#5{|rTa`FHs1qm4}O=igzA|L<<&&@oeI&6zf_V&H&w+wHJj`%#_R zx33slHFI*6h6nz_W&^|{qZB`piE&^=S^j0s{BQMN*eo_;%T<~E;-*D6{4!>?eqnQr z?QV`I{6zu&RsWf3Mo!YkBEiz37e|JqVM2#Me2t{Vp%;#4rNyBaYQ{>-ruD8?gT|bU z^`=9w`mSL@>t!CN`Qp%P4c9ndI`l%KYrZ)2TFbRK^g6b1j?m&w3T+08Vv_ zH8l1oG3EkJb&IWS>_jo<1Wt8};fpD}rDDttoaz>9Y%IK$w~QHs6W^M19h);e&gqZ2 zwmF~Goa@@0;jR3d%r2Z1*PQFwoZ+oJCvy(JBc?gmw>iJjdtmP26uH<2#tz5M;-|tK z#3^#I4UK)R<(P{&MJ~3HvG7)2J2Mm~%r)o6HfMM%&&j;S>2uA=qh;(ft&jPO)8}HF z7<*QXd5qKNVw)O!PK^1C)8}GMj6E;LyvFHsv8KktPjB{9Y$F8qkKF!q%g;}REs#5Onfr5NKA7kUsQH*Mw2G^Wh+nnL8 zJSSrvC&e{qYnwB?mFHvz;B>a;Y?EG7TgFVl>1?sK=~cv-5jdSK*3Q@)V$2Mj&KBFo z*qdU^5S-2y+t%1yV$2kr&K7HL>}@e-3{Gc@ZD;HqF=h^Gwpa&a?}{;laP%U!y|MSi zm`OP55$kB|eKBSfj+VrBFqS=L7EWi2?Px4}%rKnJ7VBgzd(1SP&KBFrSoWB4IGrul z*;w|Nc{rUdwzIM9F#~a&fI}}<&0UOTkC}+02C-d@Wsez&?=E7y8Ot6s6Q{Gqb~lzi zW++Z)i*+&f0rnXyPR+mXx#}ZA|JCn%WSteK66>g5ak{$35h;Cd>gF0IG)i@MEhP&H&e<;tX^xD$X9R zMa3E9T2!3D(5hFQJza~6GsHE%x3mw2x)v2@FV`@kiZg5#EiJpZYf*8AyA~B^glkc8 zM!LprN&9r4RkT!b_H`{P&VH_8LKSEK8ngpki;6SKH7=X7s1lR7ETb5&v>5+T;{xLl z=K#dI8Vipj>&Kdt(TS7!nzNhDnLS1+PUeesH@kXQGGDB>vFtILaWY@5kFo4As&O)3tgo@`F}iUwU#y?8>@mvmy+W+NvFtJ0 zaWY?QfU)c`>Txn(Y@o61G5T>bUu+L!*<%*qWWLxSW7%Ui;AFnoU}M>1R^Vj5*q+9+ z$Lzq#e6b@lnGyHa8!jb)G7h2NDD+s9b;m}U4~DY1QxWslj0-<1;E&sg@D zb@*K=vHgu@kJ*Rcl@dF^SoWBO_+2TnQO4-8s^o`<#&?!nD}MUFtSY0ijx;K!?=h^G z)bN{CTJLCEFTE8w%g3XULXQ@zhp9@s`m;+aJc(gr#*bW5X_A*JY)JUDyqJt*qX%)^ zF%d@;|9zKJ{xgphDmGj7H>U1{&qoR^!y}K#gTn6!Z06!^BD_ zLDM>@rO$0cpD&8}My^FM-`KS%<|Ws-EvcAqvWk|9`KGQ#F=w_^-{0i~o{+~qgD*zzk$vkP4`i;Ex2Dbcgtj`J1pS-XTE_nA9$zJU*sbs$6icT)pO&|_ zv1{Gqa=(|yEWpDz+#`Ec9|=S%CUk?iNA{6CW)(V2+#`Ei z9N@-{PeyL)8s z!dtnR|FCrb^zzP;tpe+){uQygYa9_$RcYZGCNvUl?%HrGz~c~U3lOCump-z04(%-6xz+uAiu)Si^|{fs@NDiBqrvuoVXX`k-A zik7O%F0MsY+0`{n=(F6-wWun)yT)~-s?x=^v@FN`3QQu~H6~VARryR2&p5>0qwX>O zzmUgx#ECig$Uc?FxJ0(=HPcDS--$6kF-nM~lakMhF-~#$%ssy5EAkkxI925yS$G`f z^Ti)VF;4oZ`lVBp*<&>0qMu$RouYhB9-|t4XzpBQp$?vXt&ubsW->e|k9;xT*a#AAK2bmB34+uCxE=vC5*#})E;sE-S6?s0w3$io-` z4+rg5>(hzH@5MS8``SG&m%Z(c@eqvhl1@CXDX*ikGWWP#LwV`MV;%R%){?iQEmzMy zvPSYc8EfDkS@xJsIB6%APCTwHk6DGUY$&?i&UE52d(18zA8F2X;xT*7GMtJKOD7() z$85v#k@ibE@t8ek9WDfmr4x@Y%VYN8o^0*wbmH+FF=ipMN-Ujt{1aHsRpqBwlU#{d zRVuNLbo?0KRl2&y5ux1n66eE-Ty0sUWq*JwDcAwsA ztf7^#{Fk0r%hAa!|Cn*cwg3Lt?16vcyJ_7u%6{;T-B5mDj(na@o5)5UZ)a#UW*Iw8@2p#gky}#gf<1n@Ab1`JQr{zjF*WP!FY~f zDU9a~UWcuGj)1SpKYq`@tzmt8E&6;-{#F0C8CJrJiQJy5xihBEoLx2EPFVD+nlpJy z2b-KahUXU8_Fhy?n={q6w`%U}nPV!(%$zuD%R|P@w3nED*bH<_t%Vol2JwUiH{4!l zO4Y22@l_S$#!MMEXNqkb*U57u`FunLrn&7rY01TTa*sZzdGT@7;J!UZ^&Zx@hripd zPhqZuh4r>YH?OeQVi#KHP#w*@n#T%*Gz}mui0~Bv`;tfsh zVZ1@918jR3Z!F>sMEuUp8-jL%@dh8>$io|Ucw-K4z~Ogs-cVBslvN*xs<=FrEV$3EKy@FKj>9{;&gJ zqhO<9V_;)p<6z@qRj>)LiLgnq$*==q2f?PmroyJdro(2y4u;Ky&4TgV${g4sutQ;U zVTZvEhaCaqITxN2I2v{gY#wYrYyoT`Y!U2O*kagmu;XDTz?Q&Hge`@g1Unga3Tzqd zRM=^-(_v@8&V-!>I~#Tm>|EG+u=8OTz%GPc1iKh^3G7nXa@b|C%VAf*u7q6$yBc;4 z>{{4$u9)`T~J zu&-g?!2SgLGwd(0zrwzS{SEea*mtmh!2SvQ9>x<=bzo(%a#&qhJ=kin)nRsC5C5(K zTNAbxtRZY|SR+_t*gCLvVe7%xhiw4c5VjF)V^|5c32akX6IfGNGuURZ3RrVk3)tqc zmar{gTf$nwwt{U9YYl4yYYS@!+Xl8RtUYWySO?hlu#T`DU^~J(!FGamhV2a71-2_} zH`wm5F0e`%8h46rupfu)eTLTf>l_H%12zaY7`7*D2y7^9FW4~H z-mu}Y5wMZ4ePH{-_Ji#YI{-EcHX1etHWoGxHXc?5n*f^#n*^H-I}mmdYzk~DY#MAj zYzFLL*i6_g*lgGw*dee(VRK=J!48KV0Xq_Q6zpi&F|c{C`LG4Bg|J1iV_}P7$H9(= zod8<`I}x@Nb`tDl*eS4Ouv1~D!A^&r0Xq|R7VK=;Ik0nK=fTd0T>!ffb`k7i*d?$_ zVas8c!7hhg0lN}*73^x*HLz=8*TJrb-2l50b`$Jo*e$SIVYk6~VUNIm340XwE7-4LzkxjldmQ!z>`B;Du%}_ag*^lN9qd`y zbFk-OFTh@ey#!kUdl~i$?Dw!&VXwhnhrI!N6ZRJDZP+`ocVX|r-iLhv`w;dK>|@v` zus^{52>TTF8SHb|7qBm3U%|eHeFOUw?9Z^j!2SyR7WOyT-(lau{sH^v_xQuVJoSt_ z_KPxDIjk0?K5$7GuF1_pe+C7f7eCz z%IoL9KXt)N_;VKctA``EIXJ4CT8y#x-WPjef^8F(**N~1ZpT~y>UFom`k6|6wV%5F le{zAw=@skYsB=1w{ à 64 lignes fct(Menu_Facteur) word Nb_couleurs =(Debut_block<=Fin_block)?Fin_block-Debut_block+1:Debut_block-Fin_block+1; word Ligne_en_cours=(Debut_block<=Fin_block)?0:Total_lignes-1; - word Debut_X =Fenetre_Pos_X+(Menu_Facteur_X*Pos_X); + word Debut_X =Fenetre_Pos_X+(Menu_Facteur_X*x_pos); word Largeur_ligne =Menu_Facteur_X<<4; // <=> à 16 pixels fct(Menu_Facteur) - word Debut_Y =Fenetre_Pos_Y+(Menu_Facteur_Y*Pos_Y); + word Debut_Y =Fenetre_Pos_Y+(Menu_Facteur_Y*y_pos); word Fin_Y =Debut_Y+Total_lignes; word Indice; @@ -972,21 +972,21 @@ void Bloc_degrade_dans_fenetre(word Pos_X,word Pos_Y,word Debut_block,word Fin_b for (Indice=Debut_Y;Indice=0&&Pos_Y>=0) - Pixel_fond(Pos_X,Pos_Y,Vraie_couleur); + for (y_pos=relative_y;y_pos<(relative_y+height)&&y_pos=0&&y_pos>=0) + Pixel_fond(x_pos,y_pos,Vraie_couleur); } } } @@ -1186,7 +1186,7 @@ void Calculer_coordonnees_pinceau(void) void Afficher_limites_de_l_image(void) { short start; - short Pos; + short pos; short end; byte Droite_visible; byte Bas_visible; @@ -1211,8 +1211,8 @@ void Afficher_limites_de_l_image(void) Ancienne_Limite_Zoom=Limite_Droite_Zoom; Limite_Droite_Zoom=Limite_visible_Droite_Zoom; - for (Pos=start;Pos<=end;Pos++) - Pixel_Preview(Principal_Largeur_image,Pos,((Pos+Principal_Hauteur_image)&1)?CM_Blanc:CM_Noir); + for (pos=start;pos<=end;pos++) + Pixel_Preview(Principal_Largeur_image,pos,((pos+Principal_Hauteur_image)&1)?CM_Blanc:CM_Noir); UpdateRect(Principal_Largeur_image,start,1,end-start + 1); // On restaure la bonne valeur des limites @@ -1230,8 +1230,8 @@ void Afficher_limites_de_l_image(void) Ancienne_Limite_Zoom=Limite_Bas_Zoom; Limite_Bas_Zoom=Limite_visible_Bas_Zoom; - for (Pos=start;Pos<=end;Pos++) - Pixel_Preview(Pos,Principal_Hauteur_image,((Pos+Principal_Hauteur_image)&1)?CM_Blanc:CM_Noir); + for (pos=start;pos<=end;pos++) + Pixel_Preview(pos,Principal_Hauteur_image,((pos+Principal_Hauteur_image)&1)?CM_Blanc:CM_Noir); UpdateRect(start,Principal_Hauteur_image,end-start + 1,1); @@ -1425,10 +1425,10 @@ void Afficher_barre_de_split(void) // -- Afficher une barre horizontale XOR zoomée -void Ligne_horizontale_XOR_Zoom(short Pos_X, short Pos_Y, short width) +void Ligne_horizontale_XOR_Zoom(short x_pos, short y_pos, short width) { - short Pos_X_reelle=Principal_X_Zoom+(Pos_X-Loupe_Decalage_X)*Loupe_Facteur; - short Pos_Y_reelle=(Pos_Y-Loupe_Decalage_Y)*Loupe_Facteur; + short Pos_X_reelle=Principal_X_Zoom+(x_pos-Loupe_Decalage_X)*Loupe_Facteur; + short Pos_Y_reelle=(y_pos-Loupe_Decalage_Y)*Loupe_Facteur; short Largeur_reelle=width*Loupe_Facteur; short Pos_Y_Fin=(Pos_Y_reelle+Loupe_Facteur= Hauteur_ecran) continue; + if( y_pos < 0 || y_pos >= Hauteur_ecran) continue; Couleur=SPRITE_CURSEUR[Temp][Compteur_Y][Compteur_X]; - FOND_CURSEUR[Compteur_Y][Compteur_X]=Lit_pixel(Pos_X,Pos_Y); + FOND_CURSEUR[Compteur_Y][Compteur_X]=Lit_pixel(x_pos,y_pos); if (Couleur!=CM_Trans) - Pixel(Pos_X,Pos_Y,Couleur); + Pixel(x_pos,y_pos,Couleur); } } @@ -1583,16 +1583,16 @@ void Afficher_curseur(void) Debut_X=Mouse_X-Curseur_Decalage_X[Temp]; Debut_Y=Mouse_Y-Curseur_Decalage_Y[Temp]; - for (Pos_X=Debut_X,Compteur_X=0;Compteur_X<15;Pos_X++,Compteur_X++) - for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) + for (x_pos=Debut_X,Compteur_X=0;Compteur_X<15;x_pos++,Compteur_X++) + for (y_pos=Debut_Y,Compteur_Y=0;Compteur_Y<15;y_pos++,Compteur_Y++) { Couleur=SPRITE_CURSEUR[Temp][Compteur_Y][Compteur_X]; - if ( (Pos_X>=0) && (Pos_X=0) && (Pos_Y=0) && (x_pos=0) && (y_pos=Largeur_ecran) break; - for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) + if(x_pos<0) continue; + if(x_pos>=Largeur_ecran) break; + for (y_pos=Debut_Y,Compteur_Y=0;Compteur_Y<15;y_pos++,Compteur_Y++) { - if(Pos_Y<0) continue; - if(Pos_Y>=Hauteur_ecran) break; + if(y_pos<0) continue; + if(y_pos>=Hauteur_ecran) break; Couleur=SPRITE_CURSEUR[shape][Compteur_Y][Compteur_X]; // On sauvegarde dans FOND_CURSEUR pour restaurer plus tard - FOND_CURSEUR[Compteur_Y][Compteur_X]=Lit_pixel(Pos_X,Pos_Y); + FOND_CURSEUR[Compteur_Y][Compteur_X]=Lit_pixel(x_pos,y_pos); if (Couleur!=CM_Trans) - Pixel(Pos_X,Pos_Y,Couleur); + Pixel(x_pos,y_pos,Couleur); } } UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),Compteur_X,Compteur_Y); break; case FORME_CURSEUR_CIBLE_XOR : - Pos_X=Pinceau_X-Principal_Decalage_X; - Pos_Y=Pinceau_Y-Principal_Decalage_Y; + x_pos=Pinceau_X-Principal_Decalage_X; + y_pos=Pinceau_Y-Principal_Decalage_Y; Compteur_X=(Loupe_Mode)?Principal_Split:Largeur_ecran; // width de la barre XOR - if ((Pos_Y=Limite_Haut)) + if ((y_pos=Limite_Haut)) { Ligne_horizontale_XOR(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X); UpdateRect(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X,1); } - if ((Pos_X=Limite_Gauche)) + if ((x_pos=Limite_Gauche)) { Ligne_verticale_XOR(Pinceau_X-Principal_Decalage_X,0,Menu_Ordonnee); UpdateRect(Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); @@ -1711,11 +1711,11 @@ void Afficher_curseur(void) } else { - Pos_X=Pinceau_X-Brosse_Centre_rotation_X; - Pos_Y=Pinceau_Y-Brosse_Centre_rotation_Y; - cosA=(float)Pos_X/sqrt((Pos_X*Pos_X)+(Pos_Y*Pos_Y)); + x_pos=Pinceau_X-Brosse_Centre_rotation_X; + y_pos=Pinceau_Y-Brosse_Centre_rotation_Y; + cosA=(float)x_pos/sqrt((x_pos*x_pos)+(y_pos*y_pos)); sinA=sin(acos(cosA)); - if (Pos_Y>0) sinA=-sinA; + if (y_pos>0) sinA=-sinA; } Transformer_point(Debut_X,Debut_Y, cosA,sinA, &X1,&Y1); @@ -1767,8 +1767,8 @@ void Effacer_curseur(void) int Debut_Y; short Fin_X; short Fin_Y; - int Pos_X; - int Pos_Y; + int x_pos; + int y_pos; short Compteur_X; short Compteur_Y; //short Fin_Compteur_X; // Position X ou s'arrête l'affichage de la brosse/pinceau @@ -1817,18 +1817,18 @@ void Effacer_curseur(void) Debut_X=Mouse_X-Curseur_Decalage_X[Temp]; Debut_Y=Mouse_Y-Curseur_Decalage_Y[Temp]; - for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) + for (y_pos=Debut_Y,Compteur_Y=0;Compteur_Y<15;y_pos++,Compteur_Y++) { - if(Pos_Y>=Hauteur_ecran) break; - for (Pos_X=Debut_X,Compteur_X=0;Compteur_X<15;Pos_X++,Compteur_X++) + if(y_pos>=Hauteur_ecran) break; + for (x_pos=Debut_X,Compteur_X=0;Compteur_X<15;x_pos++,Compteur_X++) { - if ( (Pos_X<0) || (Pos_Y < 0)) continue; - else if (Pos_X>=Largeur_ecran) break; - Pixel(Pos_X,Pos_Y,FOND_CURSEUR[Compteur_Y][Compteur_X]); + if ( (x_pos<0) || (y_pos < 0)) continue; + else if (x_pos>=Largeur_ecran) break; + Pixel(x_pos,y_pos,FOND_CURSEUR[Compteur_Y][Compteur_X]); } } - UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),Pos_X-Debut_X,Pos_Y-Debut_Y); + UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),x_pos-Debut_X,y_pos-Debut_Y); } } if (!Cacher_pinceau) @@ -1885,10 +1885,10 @@ void Effacer_curseur(void) Debut_X=Mouse_X-Curseur_Decalage_X[Temp]; Debut_Y=Mouse_Y-Curseur_Decalage_Y[Temp]; - for (Pos_X=Debut_X,Compteur_X=0;Compteur_X<15;Pos_X++,Compteur_X++) - for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) - if ( (Pos_X>=0) && (Pos_X=0) && (Pos_Y=0) && (x_pos=0) && (y_pos=Largeur_ecran) break; - for (Pos_Y=Debut_Y,Compteur_Y=0;Compteur_Y<15;Pos_Y++,Compteur_Y++) + if(x_pos<0) continue; + if(x_pos>=Largeur_ecran) break; + for (y_pos=Debut_Y,Compteur_Y=0;Compteur_Y<15;y_pos++,Compteur_Y++) { - if(Pos_Y<0) continue; - if(Pos_Y>=Hauteur_ecran) break; - Pixel(Pos_X,Pos_Y,FOND_CURSEUR[Compteur_Y][Compteur_X]); + if(y_pos<0) continue; + if(y_pos>=Hauteur_ecran) break; + Pixel(x_pos,y_pos,FOND_CURSEUR[Compteur_Y][Compteur_X]); } } UpdateRect(Max(Debut_X,0),Max(Debut_Y,0),Compteur_X,Compteur_Y); break; case FORME_CURSEUR_CIBLE_XOR : - Pos_X=Pinceau_X-Principal_Decalage_X; - Pos_Y=Pinceau_Y-Principal_Decalage_Y; + x_pos=Pinceau_X-Principal_Decalage_X; + y_pos=Pinceau_Y-Principal_Decalage_Y; Compteur_X=(Loupe_Mode)?Principal_Split:Largeur_ecran; // width de la barre XOR - if ((Pos_Y=Limite_Haut)) + if ((y_pos=Limite_Haut)) { Ligne_horizontale_XOR(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X); UpdateRect(0,Pinceau_Y-Principal_Decalage_Y,Compteur_X,1); } - if ((Pos_X=Limite_Gauche)) + if ((x_pos=Limite_Gauche)) { Ligne_verticale_XOR(Pinceau_X-Principal_Decalage_X,0,Menu_Ordonnee); UpdateRect(Pinceau_X-Principal_Decalage_X,0,1,Menu_Ordonnee); @@ -2008,11 +2008,11 @@ void Effacer_curseur(void) } else { - Pos_X=Pinceau_X-Brosse_Centre_rotation_X; - Pos_Y=Pinceau_Y-Brosse_Centre_rotation_Y; - cosA=(float)Pos_X/sqrt((Pos_X*Pos_X)+(Pos_Y*Pos_Y)); + x_pos=Pinceau_X-Brosse_Centre_rotation_X; + y_pos=Pinceau_Y-Brosse_Centre_rotation_Y; + cosA=(float)x_pos/sqrt((x_pos*x_pos)+(y_pos*y_pos)); sinA=sin(acos(cosA)); - if (Pos_Y>0) sinA=-sinA; + if (y_pos>0) sinA=-sinA; } Transformer_point(Debut_X,Debut_Y, cosA,sinA, &X1,&Y1); @@ -2151,7 +2151,7 @@ byte Meilleure_couleur(byte r,byte g,byte b) if (!Exclude_color[Coul]) { Delta_R=(int)Principal_Palette[Coul].R-r; - Delta_V=(int)Principal_Palette[Coul].V-g; + Delta_V=(int)Principal_Palette[Coul].G-g; Delta_B=(int)Principal_Palette[Coul].B-b; if (!(Dist=(Delta_R*Delta_R*30)+(Delta_V*Delta_V*59)+(Delta_B*Delta_B*11))) @@ -2179,7 +2179,7 @@ byte Meilleure_couleur_sans_exclusion(byte Rouge,byte Vert,byte Bleu) for (Coul=0; Coul<256; Coul++) { Delta_R=(int)Principal_Palette[Coul].R-Rouge; - Delta_V=(int)Principal_Palette[Coul].V-Vert; + Delta_V=(int)Principal_Palette[Coul].G-Vert; Delta_B=(int)Principal_Palette[Coul].B-Bleu; if (!(Dist=(Delta_R*Delta_R*30)+(Delta_V*Delta_V*59)+(Delta_B*Delta_B*11))) @@ -2195,7 +2195,7 @@ byte Meilleure_couleur_sans_exclusion(byte Rouge,byte Vert,byte Bleu) } void Calculer_les_4_meilleures_couleurs_pour_1_couleur_du_menu - (byte Rouge, byte Vert, byte Bleu, Composantes * Palette, byte * Table) + (byte Rouge, byte Vert, byte Bleu, Composantes * palette, byte * Table) { short Coul; int Delta_R,Delta_V,Delta_B; @@ -2205,9 +2205,9 @@ void Calculer_les_4_meilleures_couleurs_pour_1_couleur_du_menu for (Coul=0; Coul<256; Coul++) { - Delta_R=(int)Palette[Coul].R-Rouge; - Delta_V=(int)Palette[Coul].V-Vert; - Delta_B=(int)Palette[Coul].B-Bleu; + Delta_R=(int)palette[Coul].R-Rouge; + Delta_V=(int)palette[Coul].G-Vert; + Delta_B=(int)palette[Coul].B-Bleu; Dist=(Delta_R*Delta_R*30)+(Delta_V*Delta_V*59)+(Delta_B*Delta_B*11); @@ -2338,7 +2338,7 @@ void Remapper_ecran_apres_changement_couleurs_menu(void) -void Calculer_couleurs_menu_optimales(Composantes * Palette) +void Calculer_couleurs_menu_optimales(Composantes * palette) { byte Table[4]; short i,j,k; @@ -2352,12 +2352,12 @@ void Calculer_couleurs_menu_optimales(Composantes * Palette) // Recherche du noir Calculer_les_4_meilleures_couleurs_pour_1_couleur_du_menu - (Coul_menu_pref[0].R, Coul_menu_pref[0].V, Coul_menu_pref[0].B,Palette,Table); + (Coul_menu_pref[0].R, Coul_menu_pref[0].G, Coul_menu_pref[0].B,palette,Table); CM_Noir=Table[0]; // Recherche du blanc Calculer_les_4_meilleures_couleurs_pour_1_couleur_du_menu - (Coul_menu_pref[3].R, Coul_menu_pref[3].V, Coul_menu_pref[3].B,Palette,Table); + (Coul_menu_pref[3].R, Coul_menu_pref[3].G, Coul_menu_pref[3].B,palette,Table); if (CM_Noir!=Table[0]) CM_Blanc=Table[0]; else @@ -2365,7 +2365,7 @@ void Calculer_couleurs_menu_optimales(Composantes * Palette) // Recherche du gris clair Calculer_les_4_meilleures_couleurs_pour_1_couleur_du_menu - (Coul_menu_pref[2].R, Coul_menu_pref[2].V, Coul_menu_pref[2].B,Palette,Table); + (Coul_menu_pref[2].R, Coul_menu_pref[2].G, Coul_menu_pref[2].B,palette,Table); if ( (CM_Noir!=Table[0]) && (CM_Blanc!=Table[0]) ) CM_Clair=Table[0]; else @@ -2378,7 +2378,7 @@ void Calculer_couleurs_menu_optimales(Composantes * Palette) // Recherche du gris foncé Calculer_les_4_meilleures_couleurs_pour_1_couleur_du_menu - (Coul_menu_pref[1].R, Coul_menu_pref[1].V, Coul_menu_pref[1].B,Palette,Table); + (Coul_menu_pref[1].R, Coul_menu_pref[1].G, Coul_menu_pref[1].B,palette,Table); if ( (CM_Noir!=Table[0]) && (CM_Blanc!=Table[0]) && (CM_Clair!=Table[0]) ) CM_Fonce=Table[0]; else @@ -2396,8 +2396,8 @@ void Calculer_couleurs_menu_optimales(Composantes * Palette) // C'est peu probable mais il est possible que CM_Clair soit plus foncée que // CM_Fonce. Dans ce cas, on les inverse. - if ( ((Palette[CM_Clair].R*30)+(Palette[CM_Clair].V*59)+(Palette[CM_Clair].B*11)) < - ((Palette[CM_Fonce].R*30)+(Palette[CM_Fonce].V*59)+(Palette[CM_Fonce].B*11)) ) + if ( ((palette[CM_Clair].R*30)+(palette[CM_Clair].G*59)+(palette[CM_Clair].B*11)) < + ((palette[CM_Fonce].R*30)+(palette[CM_Fonce].G*59)+(palette[CM_Fonce].B*11)) ) { i=CM_Clair; CM_Clair=CM_Fonce; diff --git a/windows.h b/windows.h index bb0626bd..083067fb 100644 --- a/windows.h +++ b/windows.h @@ -28,7 +28,7 @@ void Afficher_curseur(void); void Effacer_curseur(void); void Remapper_ecran_apres_changement_couleurs_menu(void); -void Calculer_couleurs_menu_optimales(Composantes * Palette); +void Calculer_couleurs_menu_optimales(Composantes * palette); void Recadrer_ecran_par_rapport_au_zoom(void); void Calculer_split(void); @@ -50,9 +50,9 @@ word Palette_Cells_Y(void); void Print_general(short X,short Y,const char * Chaine,byte Couleur_texte,byte Couleur_fond); void Print_dans_fenetre(short X,short Y,const char * Chaine,byte Couleur_texte,byte Couleur_fond); void Print_dans_fenetre_limite(short X,short Y,const char * Chaine,byte Taille,byte Couleur_texte,byte Couleur_fond); -void Print_char_dans_fenetre(short Pos_X,short Pos_Y,const unsigned char c,byte Couleur_texte,byte Couleur_fond); -void Print_char_transparent_dans_fenetre(short Pos_X,short Pos_Y,const unsigned char c,byte Couleur); -void Print_dans_menu(const char * Chaine, short Position); +void Print_char_dans_fenetre(short x_pos,short y_pos,const unsigned char c,byte Couleur_texte,byte Couleur_fond); +void Print_char_transparent_dans_fenetre(short x_pos,short y_pos,const unsigned char c,byte Couleur); +void Print_dans_menu(const char * Chaine, short position); void Print_coordonnees(void); void Print_nom_fichier(void); void Print_compteur(short X,short Y,const char * Chaine,byte Couleur_texte,byte Couleur_fond); @@ -62,25 +62,25 @@ void Warning_message(char * Message); void Afficher_limites_de_l_image(void); void Afficher_ecran(void); -void Fenetre_Afficher_cadre_general(word Pos_X,word Pos_Y,word width,word height, +void Fenetre_Afficher_cadre_general(word x_pos,word y_pos,word width,word height, byte Couleur_HG,byte Couleur_BD,byte Couleur_S,byte Couleur_CHG,byte Couleur_CBD); -void Fenetre_Afficher_cadre_mono(word Pos_X,word Pos_Y,word width,word height,byte Couleur); -void Fenetre_Afficher_cadre_creux(word Pos_X,word Pos_Y,word width,word height); -void Fenetre_Afficher_cadre_bombe(word Pos_X,word Pos_Y,word width,word height); -void Fenetre_Afficher_cadre(word Pos_X,word Pos_Y,word width,word height); +void Fenetre_Afficher_cadre_mono(word x_pos,word y_pos,word width,word height,byte Couleur); +void Fenetre_Afficher_cadre_creux(word x_pos,word y_pos,word width,word height); +void Fenetre_Afficher_cadre_bombe(word x_pos,word y_pos,word width,word height); +void Fenetre_Afficher_cadre(word x_pos,word y_pos,word width,word height); void Afficher_sprite_dans_menu(int Numero_bouton,int Numero_sprite); void Afficher_pinceau_dans_menu(void); -void Afficher_pinceau_dans_fenetre(word X,word Y,int Numero); +void Afficher_pinceau_dans_fenetre(word X,word Y,int number); void Dessiner_zigouigoui(word X,word Y, byte Couleur, short Sens); -void Bloc_degrade_dans_fenetre(word Pos_X,word Pos_Y,word Debut_block,word Fin_block); -void Fenetre_Afficher_sprite_drive(word Pos_X,word Pos_Y,byte Type); +void Bloc_degrade_dans_fenetre(word x_pos,word y_pos,word Debut_block,word Fin_block); +void Fenetre_Afficher_sprite_drive(word x_pos,word y_pos,byte Type); byte Meilleure_couleur(byte Rouge,byte Vert,byte Bleu); byte Meilleure_couleur_sans_exclusion(byte Rouge,byte Vert,byte Bleu); -void Ligne_horizontale_XOR_Zoom(short Pos_X, short Pos_Y, short width); -void Ligne_verticale_XOR_Zoom(short Pos_X, short Pos_Y, short height); +void Ligne_horizontale_XOR_Zoom(short x_pos, short y_pos, short width); +void Ligne_verticale_XOR_Zoom(short x_pos, short y_pos, short height); #endif