Menu: Palette size is now free, 1-256 on X and 1-16 on Y (non-powers-of-two are accepted)
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@622 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
990e016381
commit
82dc541a3c
69
boutons.c
69
boutons.c
@ -257,11 +257,13 @@ void Bouton_Redo(void)
|
||||
//---------------------------- SCROLL PALETTE LEFT ---------------------------
|
||||
void Bouton_Pal_left(void)
|
||||
{
|
||||
short Cells_Y = Palette_Cells_Y();
|
||||
|
||||
Effacer_curseur();
|
||||
if (Couleur_debut_palette)
|
||||
{
|
||||
if (Couleur_debut_palette>=Config.Palette_Cells_Y)
|
||||
Couleur_debut_palette-=Config.Palette_Cells_Y;
|
||||
if (Couleur_debut_palette>=Cells_Y)
|
||||
Couleur_debut_palette-=Cells_Y;
|
||||
else
|
||||
Couleur_debut_palette=0;
|
||||
Afficher_palette_du_menu();
|
||||
@ -272,11 +274,14 @@ void Bouton_Pal_left(void)
|
||||
|
||||
void Bouton_Pal_left_fast(void)
|
||||
{
|
||||
short Cells_X = Palette_Cells_X();
|
||||
short Cells_Y = Palette_Cells_Y();
|
||||
|
||||
Effacer_curseur();
|
||||
if (Couleur_debut_palette)
|
||||
{
|
||||
if (Couleur_debut_palette>=Config.Palette_Cells_Y*Config.Palette_Cells_X)
|
||||
Couleur_debut_palette-=Config.Palette_Cells_Y*Config.Palette_Cells_X;
|
||||
if (Couleur_debut_palette>=Cells_Y*Cells_X)
|
||||
Couleur_debut_palette-=Cells_Y*Cells_X;
|
||||
else
|
||||
Couleur_debut_palette=0;
|
||||
Afficher_palette_du_menu();
|
||||
@ -289,13 +294,12 @@ void Bouton_Pal_left_fast(void)
|
||||
//--------------------------- SCROLL PALETTE RIGHT ---------------------------
|
||||
void Bouton_Pal_right(void)
|
||||
{
|
||||
short Cells_Y = Palette_Cells_Y();
|
||||
|
||||
Effacer_curseur();
|
||||
if ((int)Couleur_debut_palette+Config.Palette_Cells_Y*Config.Palette_Cells_X<256)
|
||||
if ((int)Couleur_debut_palette+Cells_Y*Palette_Cells_X()<256)
|
||||
{
|
||||
if ((int)Couleur_debut_palette+(Config.Palette_Cells_Y+1)*Config.Palette_Cells_X<256)
|
||||
Couleur_debut_palette+=Config.Palette_Cells_Y;
|
||||
else
|
||||
Couleur_debut_palette=256-Config.Palette_Cells_Y*Config.Palette_Cells_X;
|
||||
Couleur_debut_palette+=Cells_Y;
|
||||
Afficher_palette_du_menu();
|
||||
}
|
||||
Desenclencher_bouton(BOUTON_PAL_RIGHT);
|
||||
@ -304,13 +308,16 @@ void Bouton_Pal_right(void)
|
||||
|
||||
void Bouton_Pal_right_fast(void)
|
||||
{
|
||||
short Cells_X = Palette_Cells_X();
|
||||
short Cells_Y = Palette_Cells_Y();
|
||||
|
||||
Effacer_curseur();
|
||||
if ((int)Couleur_debut_palette+Config.Palette_Cells_Y*Config.Palette_Cells_X<256)
|
||||
if ((int)Couleur_debut_palette+Cells_Y*Cells_X<256)
|
||||
{
|
||||
if ((int)Couleur_debut_palette+(Config.Palette_Cells_Y)*Config.Palette_Cells_X*2<256)
|
||||
Couleur_debut_palette+=Config.Palette_Cells_X*Config.Palette_Cells_Y;
|
||||
if ((int)Couleur_debut_palette+(Cells_Y)*Cells_X*2<256)
|
||||
Couleur_debut_palette+=Cells_X*Cells_Y;
|
||||
else
|
||||
Couleur_debut_palette=256-Config.Palette_Cells_Y*Config.Palette_Cells_X;
|
||||
Couleur_debut_palette=255/Cells_Y*Cells_Y-(Cells_X-1)*Cells_Y;
|
||||
Afficher_palette_du_menu();
|
||||
}
|
||||
Desenclencher_bouton(BOUTON_PAL_RIGHT);
|
||||
@ -320,31 +327,31 @@ void Bouton_Pal_right_fast(void)
|
||||
//-------------------- Choix de la forecolor dans le menu --------------------
|
||||
void Bouton_Choix_forecolor(void)
|
||||
{
|
||||
word Pos_X, Pos_Y;
|
||||
int Couleur=Couleur_palette();
|
||||
|
||||
Pos_X=(Mouse_X/Menu_Facteur_X)-(LARGEUR_MENU+1);
|
||||
Pos_Y=((Mouse_Y-Menu_Ordonnee)/Menu_Facteur_Y)-2;
|
||||
|
||||
Effacer_curseur();
|
||||
Encadrer_couleur_menu(CM_Noir);
|
||||
Fore_color=Couleur_debut_palette+((Pos_X/Menu_Taille_couleur)*Config.Palette_Cells_Y)+(Pos_Y/(32/Config.Palette_Cells_Y));
|
||||
Encadrer_couleur_menu(CM_Blanc);
|
||||
Afficher_foreback();
|
||||
Afficher_curseur();
|
||||
if (Couleur!=-1)
|
||||
{
|
||||
Effacer_curseur();
|
||||
Encadrer_couleur_menu(CM_Noir);
|
||||
Fore_color=Couleur;
|
||||
Encadrer_couleur_menu(CM_Blanc);
|
||||
Afficher_foreback();
|
||||
Afficher_curseur();
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------- Choix de la backcolor dans le menu --------------------
|
||||
void Bouton_Choix_backcolor(void)
|
||||
{
|
||||
word Pos_X, Pos_Y;
|
||||
int Couleur=Couleur_palette();
|
||||
|
||||
Pos_X=(Mouse_X/Menu_Facteur_X)-(LARGEUR_MENU+1);
|
||||
Pos_Y=((Mouse_Y-Menu_Ordonnee)/Menu_Facteur_Y)-2;
|
||||
|
||||
Effacer_curseur();
|
||||
Back_color=Couleur_debut_palette+((Pos_X/Menu_Taille_couleur)*Config.Palette_Cells_Y)+(Pos_Y/(32/Config.Palette_Cells_Y));
|
||||
Afficher_foreback();
|
||||
Afficher_curseur();
|
||||
if (Couleur!=-1)
|
||||
{
|
||||
Effacer_curseur();
|
||||
Back_color=Couleur;
|
||||
Afficher_foreback();
|
||||
Afficher_curseur();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
11
gfx2def.ini
11
gfx2def.ini
@ -297,7 +297,14 @@
|
||||
; steps into a single one.
|
||||
Merge_movement = 100 ; (default 100)
|
||||
|
||||
; Number of lines in the menu's palette. Can be 1,2,4,8 or 16
|
||||
; Number of columns in the palette of the menu bar. Can be any number from
|
||||
; 1 to 256. If there is not enough room, the program will display less
|
||||
; columns. But your preference will be kept, and as soon as there is more
|
||||
; space in the screen, more columns will be shown.
|
||||
;
|
||||
Palette_Cells_X = 8; (Default 8)
|
||||
; Number of columns in the menu's palette. Can be 1 to 21
|
||||
|
||||
; Number of lines in the palette of the menu. Can be any number from
|
||||
; 1 to 16. The menu can always display the number of lines you request.
|
||||
;
|
||||
Palette_Cells_Y = 8; (Default 8)
|
||||
|
||||
4
global.h
4
global.h
@ -73,8 +73,8 @@ GFX2_GLOBAL struct S_Config
|
||||
byte Fast_zoom;
|
||||
byte Find_file_fast;
|
||||
byte Couleurs_separees;
|
||||
short Palette_Cells_X;
|
||||
short Palette_Cells_Y;
|
||||
word Palette_Cells_X;
|
||||
word Palette_Cells_Y;
|
||||
byte FX_Feedback;
|
||||
byte Safety_colors;
|
||||
byte Opening_message;
|
||||
|
||||
11
graph.c
11
graph.c
@ -337,17 +337,8 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
|
||||
}
|
||||
}
|
||||
|
||||
while (1)
|
||||
{
|
||||
Changer_cellules_palette(Config.Palette_Cells_X, Config.Palette_Cells_Y);
|
||||
if (Menu_Taille_couleur>2)
|
||||
break;
|
||||
Config.Palette_Cells_X--;
|
||||
}
|
||||
Changer_cellules_palette();
|
||||
|
||||
Menu_Taille_couleur = ((Largeur_ecran/Menu_Facteur_X)-(LARGEUR_MENU+2)) / Config.Palette_Cells_X;
|
||||
Bouton[BOUTON_CHOIX_COL].Largeur=(Menu_Taille_couleur*Config.Palette_Cells_X)-1;
|
||||
|
||||
Menu_Ordonnee = Hauteur_ecran;
|
||||
if (Menu_visible)
|
||||
Menu_Ordonnee -= HAUTEUR_MENU * Menu_Facteur_Y;
|
||||
|
||||
12
moteur.c
12
moteur.c
@ -494,7 +494,6 @@ void Deplacer_Split(void)
|
||||
}
|
||||
|
||||
|
||||
|
||||
//======================= Gestion principale du moteur =======================
|
||||
void Gestion_principale(void)
|
||||
{
|
||||
@ -984,16 +983,12 @@ void Gestion_principale(void)
|
||||
}
|
||||
else
|
||||
{ // Le curseur est-il sur une couleur de la palette?
|
||||
if (1)
|
||||
int Couleur;
|
||||
if ((Couleur=Couleur_palette())!=-1)
|
||||
{
|
||||
Effacer_curseur();
|
||||
Temp_color=Couleur_debut_palette;
|
||||
Temp=Temp_color+
|
||||
((((Mouse_X/Menu_Facteur_X)-(LARGEUR_MENU+1))/Menu_Taille_couleur)*Config.Palette_Cells_Y)+
|
||||
((((Mouse_Y-Menu_Ordonnee)/Menu_Facteur_Y)-2)/(32/Config.Palette_Cells_Y));
|
||||
|
||||
strcpy(Chaine,TITRE_BOUTON[Indice_bouton]);
|
||||
sprintf(Chaine+strlen(Chaine),"%d (%d,%d,%d)",Temp,Principal_Palette[Temp].R,Principal_Palette[Temp].V,Principal_Palette[Temp].B);
|
||||
sprintf(Chaine+strlen(Chaine),"%d (%d,%d,%d)",Couleur,Principal_Palette[Couleur].R,Principal_Palette[Couleur].V,Principal_Palette[Couleur].B);
|
||||
for (Temp=strlen(Chaine); Temp<24; Temp++)
|
||||
Chaine[Temp]=' ';
|
||||
Chaine[24]=0;
|
||||
@ -1006,6 +1001,7 @@ void Gestion_principale(void)
|
||||
{
|
||||
Effacer_curseur();
|
||||
Block(18*Menu_Facteur_X,Menu_Ordonnee_Texte,192*Menu_Facteur_X,Menu_Facteur_Y<<3,CM_Clair);
|
||||
UpdateRect(18*Menu_Facteur_X,Menu_Ordonnee_Texte,192*Menu_Facteur_X,8*Menu_Facteur_Y);
|
||||
Afficher_curseur();
|
||||
}
|
||||
}
|
||||
|
||||
@ -709,7 +709,7 @@ int Charger_INI(struct S_Config * Conf)
|
||||
// Optionnel, nombre de colonnes dans la palette (>98.0%)
|
||||
if (!Charger_INI_Get_values (Fichier,Buffer,"Palette_Cells_X",1,Valeurs))
|
||||
{
|
||||
if ((Valeurs[0]<1) || (Valeurs[0]>32))
|
||||
if ((Valeurs[0]<1) || (Valeurs[0]>256))
|
||||
goto Erreur_ERREUR_INI_CORROMPU;
|
||||
Conf->Palette_Cells_X=Valeurs[0];
|
||||
}
|
||||
@ -717,12 +717,10 @@ int Charger_INI(struct S_Config * Conf)
|
||||
// Optionnel, nombre de lignes dans la palette (>98.0%)
|
||||
if (!Charger_INI_Get_values (Fichier,Buffer,"Palette_Cells_Y",1,Valeurs))
|
||||
{
|
||||
if (Valeurs[0]!=1 && Valeurs[0]!=2 && Valeurs[0]!=4 && Valeurs[0]!=8 && Valeurs[0]!=16)
|
||||
if (Valeurs[0]<1 || Valeurs[0]>16)
|
||||
goto Erreur_ERREUR_INI_CORROMPU;
|
||||
Conf->Palette_Cells_Y=Valeurs[0];
|
||||
}
|
||||
if (Conf->Palette_Cells_X*Conf->Palette_Cells_Y>256)
|
||||
Conf->Palette_Cells_X=256/Conf->Palette_Cells_Y;
|
||||
|
||||
fclose(Fichier);
|
||||
|
||||
|
||||
115
windows.c
115
windows.c
@ -35,6 +35,20 @@
|
||||
#include "sdlscreen.h"
|
||||
#include "erreurs.h"
|
||||
|
||||
// L'encapsulation tente une percée...ou un dernier combat.
|
||||
|
||||
// Nombre de cellules réel dans la palette du menu
|
||||
word Menu_Cellules_X;
|
||||
word Palette_Cells_X()
|
||||
{
|
||||
return Menu_Cellules_X;
|
||||
}
|
||||
word Menu_Cellules_Y;
|
||||
word Palette_Cells_Y()
|
||||
{
|
||||
return Menu_Cellules_Y;
|
||||
}
|
||||
|
||||
// Affichage d'un pixel dans le menu (le menu doit être visible)
|
||||
void Pixel_dans_barre_d_outil(word X,word Y,byte Couleur)
|
||||
{
|
||||
@ -143,14 +157,14 @@ void Encadrer_couleur_menu(byte Couleur)
|
||||
{
|
||||
word Debut_X,Debut_Y,Fin_X,Fin_Y;
|
||||
word Indice;
|
||||
word Hauteur_cellule=32/Config.Palette_Cells_Y;
|
||||
word Hauteur_cellule=32/Menu_Cellules_Y;
|
||||
|
||||
if ((Fore_color>=Couleur_debut_palette) && (Fore_color<Couleur_debut_palette+Config.Palette_Cells_X*Config.Palette_Cells_Y) && (Menu_visible))
|
||||
if ((Fore_color>=Couleur_debut_palette) && (Fore_color<Couleur_debut_palette+Menu_Cellules_X*Menu_Cellules_Y) && (Menu_visible))
|
||||
{
|
||||
if (Config.Couleurs_separees)
|
||||
{
|
||||
Debut_X=(LARGEUR_MENU+((Fore_color-Couleur_debut_palette)/Config.Palette_Cells_Y)*Menu_Taille_couleur)*Menu_Facteur_X;
|
||||
Debut_Y=Menu_Ordonnee+((1+(((Fore_color-Couleur_debut_palette)%Config.Palette_Cells_Y)*Hauteur_cellule))*Menu_Facteur_Y);
|
||||
Debut_X=(LARGEUR_MENU+((Fore_color-Couleur_debut_palette)/Menu_Cellules_Y)*Menu_Taille_couleur)*Menu_Facteur_X;
|
||||
Debut_Y=Menu_Ordonnee+((1+(((Fore_color-Couleur_debut_palette)%Menu_Cellules_Y)*Hauteur_cellule))*Menu_Facteur_Y);
|
||||
|
||||
Block(Debut_X,Debut_Y,(Menu_Taille_couleur+1)*Menu_Facteur_X,Menu_Facteur_Y,Couleur);
|
||||
Block(Debut_X,Debut_Y+(Menu_Facteur_Y*Hauteur_cellule),(Menu_Taille_couleur+1)*Menu_Facteur_X,Menu_Facteur_Y,Couleur);
|
||||
@ -164,8 +178,8 @@ void Encadrer_couleur_menu(byte Couleur)
|
||||
{
|
||||
if (Couleur==CM_Noir)
|
||||
{
|
||||
Debut_X=(LARGEUR_MENU+1+((Fore_color-Couleur_debut_palette)/Config.Palette_Cells_Y)*Menu_Taille_couleur)*Menu_Facteur_X;
|
||||
Debut_Y=Menu_Ordonnee+((2+(((Fore_color-Couleur_debut_palette)%Config.Palette_Cells_Y)*Hauteur_cellule))*Menu_Facteur_Y);
|
||||
Debut_X=(LARGEUR_MENU+1+((Fore_color-Couleur_debut_palette)/Menu_Cellules_Y)*Menu_Taille_couleur)*Menu_Facteur_X;
|
||||
Debut_Y=Menu_Ordonnee+((2+(((Fore_color-Couleur_debut_palette)%Menu_Cellules_Y)*Hauteur_cellule))*Menu_Facteur_Y);
|
||||
|
||||
Block(Debut_X,Debut_Y,Menu_Taille_couleur*Menu_Facteur_X,
|
||||
Menu_Facteur_Y*Hauteur_cellule,Fore_color);
|
||||
@ -174,8 +188,8 @@ void Encadrer_couleur_menu(byte Couleur)
|
||||
}
|
||||
else
|
||||
{
|
||||
Debut_X=LARGEUR_MENU+1+((Fore_color-Couleur_debut_palette)/Config.Palette_Cells_Y)*Menu_Taille_couleur;
|
||||
Debut_Y=2+(((Fore_color-Couleur_debut_palette)%Config.Palette_Cells_Y)*Hauteur_cellule);
|
||||
Debut_X=LARGEUR_MENU+1+((Fore_color-Couleur_debut_palette)/Menu_Cellules_Y)*Menu_Taille_couleur;
|
||||
Debut_Y=2+(((Fore_color-Couleur_debut_palette)%Menu_Cellules_Y)*Hauteur_cellule);
|
||||
|
||||
Fin_X=Debut_X+Menu_Taille_couleur-1;
|
||||
Fin_Y=Debut_Y+Hauteur_cellule-1;
|
||||
@ -211,7 +225,7 @@ void Encadrer_couleur_menu(byte Couleur)
|
||||
void Afficher_palette_du_menu(void)
|
||||
{
|
||||
int Couleur;
|
||||
byte Hauteur_cellule=32/Config.Palette_Cells_Y;
|
||||
byte Hauteur_cellule=32/Menu_Cellules_Y;
|
||||
// Largeur: Menu_Taille_couleur
|
||||
|
||||
if (Menu_visible)
|
||||
@ -219,16 +233,16 @@ void Afficher_palette_du_menu(void)
|
||||
Block(LARGEUR_MENU*Menu_Facteur_X,Menu_Ordonnee,Largeur_ecran-(LARGEUR_MENU*Menu_Facteur_X),(HAUTEUR_MENU-9)*Menu_Facteur_Y,CM_Noir);
|
||||
|
||||
if (Config.Couleurs_separees)
|
||||
for (Couleur=0;Couleur<Config.Palette_Cells_X*Config.Palette_Cells_Y;Couleur++)
|
||||
Block((LARGEUR_MENU+1+(Couleur/Config.Palette_Cells_Y)*Menu_Taille_couleur)*Menu_Facteur_X,
|
||||
Menu_Ordonnee+((2+((Couleur%Config.Palette_Cells_Y)*Hauteur_cellule))*Menu_Facteur_Y),
|
||||
for (Couleur=0;Couleur_debut_palette+Couleur<256&&Couleur<Menu_Cellules_X*Menu_Cellules_Y;Couleur++)
|
||||
Block((LARGEUR_MENU+1+(Couleur/Menu_Cellules_Y)*Menu_Taille_couleur)*Menu_Facteur_X,
|
||||
Menu_Ordonnee+((2+((Couleur%Menu_Cellules_Y)*Hauteur_cellule))*Menu_Facteur_Y),
|
||||
(Menu_Taille_couleur-1)*Menu_Facteur_X,
|
||||
Menu_Facteur_Y*(Hauteur_cellule-1),
|
||||
Couleur_debut_palette+Couleur);
|
||||
else
|
||||
for (Couleur=0;Couleur<Config.Palette_Cells_X*Config.Palette_Cells_Y;Couleur++)
|
||||
Block((LARGEUR_MENU+1+(Couleur/Config.Palette_Cells_Y)*Menu_Taille_couleur)*Menu_Facteur_X,
|
||||
Menu_Ordonnee+((2+((Couleur%Config.Palette_Cells_Y)*Hauteur_cellule))*Menu_Facteur_Y),
|
||||
for (Couleur=0;Couleur_debut_palette+Couleur<256&&Couleur<Menu_Cellules_X*Menu_Cellules_Y;Couleur++)
|
||||
Block((LARGEUR_MENU+1+(Couleur/Menu_Cellules_Y)*Menu_Taille_couleur)*Menu_Facteur_X,
|
||||
Menu_Ordonnee+((2+((Couleur%Menu_Cellules_Y)*Hauteur_cellule))*Menu_Facteur_Y),
|
||||
Menu_Taille_couleur*Menu_Facteur_X,
|
||||
Menu_Facteur_Y*Hauteur_cellule,
|
||||
Couleur_debut_palette+Couleur);
|
||||
@ -248,30 +262,71 @@ void Recadrer_palette(void)
|
||||
if (Fore_color<Couleur_debut_palette)
|
||||
{
|
||||
while (Fore_color<Couleur_debut_palette)
|
||||
Couleur_debut_palette-=Config.Palette_Cells_Y;
|
||||
Couleur_debut_palette-=Menu_Cellules_Y;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (Fore_color>=Couleur_debut_palette+Config.Palette_Cells_X*Config.Palette_Cells_Y)
|
||||
Couleur_debut_palette+=Config.Palette_Cells_Y;
|
||||
while (Fore_color>=Couleur_debut_palette+Menu_Cellules_X*Menu_Cellules_Y)
|
||||
Couleur_debut_palette+=Menu_Cellules_Y;
|
||||
}
|
||||
if (Ancienne_couleur!=Couleur_debut_palette)
|
||||
Afficher_palette_du_menu();
|
||||
}
|
||||
|
||||
void Changer_cellules_palette(byte Cells_X, byte Cells_Y)
|
||||
void Changer_cellules_palette()
|
||||
{
|
||||
Config.Palette_Cells_X=Cells_X;
|
||||
Config.Palette_Cells_Y=Cells_Y;
|
||||
// On initialise avec la configuration de l'utilisateur
|
||||
Menu_Cellules_X=Config.Palette_Cells_X;
|
||||
Menu_Cellules_Y=Config.Palette_Cells_Y;
|
||||
// Mais on sait jamais
|
||||
if (Menu_Cellules_X<1)
|
||||
Menu_Cellules_X=1;
|
||||
if (Menu_Cellules_Y<1)
|
||||
Menu_Cellules_Y=1;
|
||||
|
||||
while (1)
|
||||
{
|
||||
Menu_Taille_couleur = ((Largeur_ecran/Menu_Facteur_X)-(LARGEUR_MENU+2)) / Menu_Cellules_X;
|
||||
|
||||
// Si ça tient, c'est bon. Sinon, on retente avec une colonne de moins
|
||||
if (Menu_Taille_couleur>2)
|
||||
break;
|
||||
Menu_Cellules_X--;
|
||||
}
|
||||
|
||||
// Cale Couleur_debut_palette sur un multiple de Cells_Y (arrondi inférieur)
|
||||
Couleur_debut_palette=Couleur_debut_palette/Cells_Y*Cells_Y;
|
||||
Couleur_debut_palette=Couleur_debut_palette/Menu_Cellules_Y*Menu_Cellules_Y;
|
||||
|
||||
// Mise à jour du menu
|
||||
Menu_Taille_couleur = ((Largeur_ecran/Menu_Facteur_X)-(LARGEUR_MENU+2)) / Cells_X;
|
||||
Bouton[BOUTON_CHOIX_COL].Largeur=(Menu_Taille_couleur*Config.Palette_Cells_X)-1;
|
||||
// Si le nombre de cellules a beaucoup augmenté et qu'on était près de
|
||||
// la fin, il faut reculer Couleur_debut_palette pour montrer plein
|
||||
// de couleurs.
|
||||
if ((int)Couleur_debut_palette+(Menu_Cellules_Y)*Menu_Cellules_X*2>=256)
|
||||
Couleur_debut_palette=255/Menu_Cellules_Y*Menu_Cellules_Y-(Menu_Cellules_X-1)*Menu_Cellules_Y;
|
||||
|
||||
// Mise à jour de la taille du bouton dans le menu. C'est pour pas que
|
||||
// la bordure noire soit active.
|
||||
Bouton[BOUTON_CHOIX_COL].Largeur=(Menu_Taille_couleur*Menu_Cellules_X)-1;
|
||||
Bouton[BOUTON_CHOIX_COL].Hauteur=32/Menu_Cellules_Y*Menu_Cellules_Y-1;
|
||||
}
|
||||
|
||||
// Retrouve la couleur sur laquelle pointe le curseur souris.
|
||||
// Cette fonction suppose qu'on a déja vérifié que le curseur est dans
|
||||
// la zone rectangulaire du BOUTON_CHOIX_COL
|
||||
// La fonction renvoie -1 si on est "trop à gauche" (pas possible)
|
||||
// ou après la couleur 255 (Ce qui peut arriver si la palette est affichée
|
||||
// avec un nombre de lignes qui n'est pas une puissance de deux.)
|
||||
int Couleur_palette()
|
||||
{
|
||||
int Col;
|
||||
int Ligne;
|
||||
Ligne=(((Mouse_Y-Menu_Ordonnee)/Menu_Facteur_Y)-2)/(32/Menu_Cellules_Y);
|
||||
|
||||
Col=Couleur_debut_palette+Ligne+
|
||||
((((Mouse_X/Menu_Facteur_X)-(LARGEUR_MENU+1))/Menu_Taille_couleur)*Menu_Cellules_Y);
|
||||
if (Col<0 || Col>255)
|
||||
return -1;
|
||||
return Col;
|
||||
}
|
||||
|
||||
// -- Afficher tout le menu --
|
||||
|
||||
@ -948,20 +1003,20 @@ void Afficher_palette_du_menu_en_evitant_la_fenetre(byte * Table)
|
||||
if (Config.Couleurs_separees)
|
||||
{
|
||||
Largeur=(Menu_Taille_couleur-1)*Menu_Facteur_X;
|
||||
Hauteur=Menu_Facteur_Y*(32/Config.Palette_Cells_Y-1);
|
||||
Hauteur=Menu_Facteur_Y*(32/Menu_Cellules_Y-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Largeur=Menu_Taille_couleur*Menu_Facteur_X;
|
||||
Hauteur=Menu_Facteur_Y*(32/Config.Palette_Cells_Y);
|
||||
Hauteur=Menu_Facteur_Y*(32/Menu_Cellules_Y);
|
||||
}
|
||||
|
||||
for (Couleur=0,Vraie_couleur=Couleur_debut_palette;Couleur<Config.Palette_Cells_X*Config.Palette_Cells_Y;Couleur++,Vraie_couleur++)
|
||||
for (Couleur=0,Vraie_couleur=Couleur_debut_palette;Couleur<Menu_Cellules_X*Menu_Cellules_Y;Couleur++,Vraie_couleur++)
|
||||
{
|
||||
if (Table[Vraie_couleur]!=Vraie_couleur)
|
||||
{
|
||||
Debut_X=(LARGEUR_MENU+1+(Couleur/Config.Palette_Cells_Y)*Menu_Taille_couleur)*Menu_Facteur_X;
|
||||
Debut_Y=Menu_Ordonnee_avant_fenetre+((2+((Couleur%Config.Palette_Cells_Y)*(32/Config.Palette_Cells_Y)))*Menu_Facteur_Y);
|
||||
Debut_X=(LARGEUR_MENU+1+(Couleur/Menu_Cellules_Y)*Menu_Taille_couleur)*Menu_Facteur_X;
|
||||
Debut_Y=Menu_Ordonnee_avant_fenetre+((2+((Couleur%Menu_Cellules_Y)*(32/Menu_Cellules_Y)))*Menu_Facteur_Y);
|
||||
Fin_X=Debut_X+Largeur;
|
||||
Fin_Y=Debut_Y+Hauteur;
|
||||
|
||||
|
||||
@ -39,7 +39,10 @@ void Encadrer_couleur_menu(byte Couleur);
|
||||
void Afficher_palette_du_menu(void);
|
||||
void Afficher_menu(void);
|
||||
void Recadrer_palette(void);
|
||||
void Changer_cellules_palette(byte Cells_X, byte Cells_Y);
|
||||
void Changer_cellules_palette(void);
|
||||
int Couleur_palette(void);
|
||||
word Palette_Cells_X(void);
|
||||
word Palette_Cells_Y(void);
|
||||
|
||||
void Print_general(short X,short Y,char * Chaine,byte Couleur_texte,byte Couleur_fond);
|
||||
void Print_dans_fenetre(short X,short Y,char * Chaine,byte Couleur_texte,byte Couleur_fond);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user