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