Some fixes to get_input : allows to move windows.
Touche is now resetted to 0 only when a shortcut is processed. So you can let it at the key value for cursor moves, for example. But it does not work, i must have missed something :/ git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@577 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									0f4776d4a6
								
							
						
					
					
						commit
						6dd54a1686
					
				
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							@ -145,7 +145,7 @@ else
 | 
			
		||||
    ZIP = zip
 | 
			
		||||
  else
 | 
			
		||||
  
 | 
			
		||||
    # Linux specific
 | 
			
		||||
    # Linux and FreeBSD specific (default rules)
 | 
			
		||||
    DELCOMMAND = rm -rf
 | 
			
		||||
    MKDIR = mkdir -p
 | 
			
		||||
    RMDIR = rmdir
 | 
			
		||||
@ -183,6 +183,7 @@ else
 | 
			
		||||
        COPT = -W -Wall -Wdeclaration-after-statement -pedantic -std=c99 -c -g `sdl-config --cflags` $(TTFCOPT)
 | 
			
		||||
        LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT)
 | 
			
		||||
        CC = gcc
 | 
			
		||||
        #CC = nccgen -ncgcc -ncld -ncfabs #ncc makes callgraphs
 | 
			
		||||
        OBJDIR = obj/unix
 | 
			
		||||
        X11LOPT = -lX11
 | 
			
		||||
      endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								aide.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								aide.c
									
									
									
									
									
								
							@ -323,11 +323,13 @@ void Fenetre_aide(int Section, const char *Sous_section)
 | 
			
		||||
        if (Position_d_aide_en_cours>0)
 | 
			
		||||
          Position_d_aide_en_cours--;
 | 
			
		||||
        Scroller_aide();
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_DOWN : // Bas
 | 
			
		||||
        if (Position_d_aide_en_cours<Nb_lignes-16)
 | 
			
		||||
          Position_d_aide_en_cours++;
 | 
			
		||||
        Scroller_aide();
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_PAGEUP : // PageUp
 | 
			
		||||
        if (Position_d_aide_en_cours>15)
 | 
			
		||||
@ -335,6 +337,7 @@ void Fenetre_aide(int Section, const char *Sous_section)
 | 
			
		||||
        else
 | 
			
		||||
          Position_d_aide_en_cours=0;
 | 
			
		||||
        Scroller_aide();
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_PAGEDOWN : // PageDown
 | 
			
		||||
        if (Position_d_aide_en_cours<Nb_lignes-31)
 | 
			
		||||
@ -342,20 +345,24 @@ void Fenetre_aide(int Section, const char *Sous_section)
 | 
			
		||||
        else
 | 
			
		||||
          Position_d_aide_en_cours=Nb_lignes-16;
 | 
			
		||||
        Scroller_aide();
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_HOME : // Home
 | 
			
		||||
        Position_d_aide_en_cours=0;
 | 
			
		||||
        Scroller_aide();
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_END : // End
 | 
			
		||||
        Position_d_aide_en_cours=Nb_lignes-16;
 | 
			
		||||
        Scroller_aide();
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  while ((Bouton_clicke!=1) && (Touche!=SDLK_RETURN));
 | 
			
		||||
 | 
			
		||||
  if(Touche==SDLK_RETURN) Touche=0;
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
  Desenclencher_bouton(BOUTON_AIDE);
 | 
			
		||||
  Afficher_curseur();
 | 
			
		||||
@ -469,6 +476,8 @@ void Bouton_Stats(void)
 | 
			
		||||
  }
 | 
			
		||||
  while ( (Bouton_clicke!=1) && (Touche!=SDLK_RETURN) );
 | 
			
		||||
 | 
			
		||||
  if(Touche==SDLK_RETURN)Touche=0;
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
  Desenclencher_bouton(BOUTON_AIDE);
 | 
			
		||||
  Afficher_curseur();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								boutons.c
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								boutons.c
									
									
									
									
									
								
							@ -112,6 +112,8 @@ void Message_Non_disponible(void)
 | 
			
		||||
    Bouton_clicke=Fenetre_Bouton_clicke();
 | 
			
		||||
  while ((Bouton_clicke<=0) && (Touche!=SDLK_ESCAPE) && (Touche!=SDLK_o));
 | 
			
		||||
 | 
			
		||||
  if(Bouton_clicke<=0) Touche=0;
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
 | 
			
		||||
  //   Puisque cette fonction peut être appelée par plusieurs boutons et qu'on
 | 
			
		||||
@ -142,6 +144,7 @@ void Message_Memoire_insuffisante(void)
 | 
			
		||||
    Bouton_clicke=Fenetre_Bouton_clicke();
 | 
			
		||||
  while ((Bouton_clicke<=0) && (Touche!=SDLK_ESCAPE) && (Touche!=SDLK_o));
 | 
			
		||||
 | 
			
		||||
  if(Bouton_clicke<=0) Touche=0;
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
  Afficher_curseur();
 | 
			
		||||
}
 | 
			
		||||
@ -184,6 +187,7 @@ void Bouton_Message_initial(void)
 | 
			
		||||
  }
 | 
			
		||||
  while (Bouton_clicke==0 && Touche==0);
 | 
			
		||||
 | 
			
		||||
  if(Bouton_clicke!=0) Touche=0;
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
  Afficher_curseur();
 | 
			
		||||
 | 
			
		||||
@ -623,11 +627,13 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, c
 | 
			
		||||
          Stencil_Actualiser_couleur(Couleur_taggee);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
      if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
      {
 | 
			
		||||
        Fenetre_aide(BOUTON_EFFETS, Section_aide);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@ -1544,6 +1550,7 @@ void Bouton_Resol(void)
 | 
			
		||||
          if (Debut_liste>0)
 | 
			
		||||
            Debut_liste--;
 | 
			
		||||
        Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_DOWN : // Bas
 | 
			
		||||
        if (Position_curseur<11 && Position_curseur<(Nb_modes_video-1))
 | 
			
		||||
@ -1552,6 +1559,7 @@ void Bouton_Resol(void)
 | 
			
		||||
          if (Debut_liste<Nb_modes_video-12)
 | 
			
		||||
            Debut_liste++;
 | 
			
		||||
        Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_PAGEUP : // PageUp
 | 
			
		||||
        if (Position_curseur>0)
 | 
			
		||||
@ -1564,6 +1572,7 @@ void Bouton_Resol(void)
 | 
			
		||||
            Debut_liste=0;
 | 
			
		||||
        }
 | 
			
		||||
        Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_PAGEDOWN : // PageDown
 | 
			
		||||
        if (Nb_modes_video<12)
 | 
			
		||||
@ -1578,11 +1587,13 @@ void Bouton_Resol(void)
 | 
			
		||||
            Debut_liste=Nb_modes_video-12;
 | 
			
		||||
        }
 | 
			
		||||
        Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_HOME : // Home
 | 
			
		||||
        Debut_liste=0;
 | 
			
		||||
        Position_curseur=0;
 | 
			
		||||
        Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_END : // End
 | 
			
		||||
        if (Nb_modes_video<12)
 | 
			
		||||
@ -1593,11 +1604,13 @@ void Bouton_Resol(void)
 | 
			
		||||
          Position_curseur=11;
 | 
			
		||||
        }
 | 
			
		||||
        Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
        if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
        {
 | 
			
		||||
          Fenetre_aide(BOUTON_RESOL, NULL);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -2058,11 +2071,13 @@ void Bouton_Degrades(void)
 | 
			
		||||
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
        if (Touche==Bouton[BOUTON_GRADMENU].Raccourci_gauche)
 | 
			
		||||
        {
 | 
			
		||||
          Fenetre_aide(BOUTON_PINCEAUX, NULL);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -2865,36 +2880,42 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
 | 
			
		||||
        Effacer_curseur();
 | 
			
		||||
        Select_Scroll_Down(&Principal_File_list_Position,&Principal_File_list_Decalage);
 | 
			
		||||
        On_vient_de_scroller_dans_le_fileselect(Scroller_de_fichiers);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_UP : // Haut
 | 
			
		||||
        *Fichier_recherche=0;
 | 
			
		||||
        Effacer_curseur();
 | 
			
		||||
        Select_Scroll_Up(&Principal_File_list_Position,&Principal_File_list_Decalage);
 | 
			
		||||
        On_vient_de_scroller_dans_le_fileselect(Scroller_de_fichiers);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_PAGEDOWN : // Page Down
 | 
			
		||||
        *Fichier_recherche=0;
 | 
			
		||||
        Effacer_curseur();
 | 
			
		||||
        Select_Page_Down(&Principal_File_list_Position,&Principal_File_list_Decalage);
 | 
			
		||||
        On_vient_de_scroller_dans_le_fileselect(Scroller_de_fichiers);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_PAGEUP : // Page Up
 | 
			
		||||
        *Fichier_recherche=0;
 | 
			
		||||
        Effacer_curseur();
 | 
			
		||||
        Select_Page_Up(&Principal_File_list_Position,&Principal_File_list_Decalage);
 | 
			
		||||
        On_vient_de_scroller_dans_le_fileselect(Scroller_de_fichiers);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_END : // End
 | 
			
		||||
        *Fichier_recherche=0;
 | 
			
		||||
        Effacer_curseur();
 | 
			
		||||
        Select_End(&Principal_File_list_Position,&Principal_File_list_Decalage);
 | 
			
		||||
        On_vient_de_scroller_dans_le_fileselect(Scroller_de_fichiers);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_HOME : // Home
 | 
			
		||||
        *Fichier_recherche=0;
 | 
			
		||||
        Effacer_curseur();
 | 
			
		||||
        Select_Home(&Principal_File_list_Position,&Principal_File_list_Decalage);
 | 
			
		||||
        On_vient_de_scroller_dans_le_fileselect(Scroller_de_fichiers);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      case SDLK_BACKSPACE : // Backspace
 | 
			
		||||
        *Fichier_recherche=0;
 | 
			
		||||
@ -2906,6 +2927,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
 | 
			
		||||
          Type_selectionne=1;
 | 
			
		||||
          On_a_clicke_sur_OK=1;
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      default: // Autre => On se place sur le nom de fichier qui correspond
 | 
			
		||||
        if (Bouton_clicke<=0)
 | 
			
		||||
@ -2933,6 +2955,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
              *Fichier_recherche=0;
 | 
			
		||||
            Touche=0;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
@ -4185,8 +4208,11 @@ void Bouton_Brush_FX(void)
 | 
			
		||||
  {
 | 
			
		||||
    Bouton_clicke=Fenetre_Bouton_clicke();
 | 
			
		||||
    if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
    {
 | 
			
		||||
      Touche=0;
 | 
			
		||||
      Fenetre_aide(BOUTON_EFFETS_BROSSE, NULL);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  while (Bouton_clicke<=0);
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
@ -5008,11 +5034,13 @@ void Bouton_Spray_Menu(void)
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Stencil_Actualiser_couleur(Couleur_selectionnee);
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
      if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
      {
 | 
			
		||||
        Fenetre_aide(BOUTON_SPRAY, NULL);
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
        
 | 
			
		||||
@ -5472,8 +5500,11 @@ void Bouton_Trame_Menu(void)
 | 
			
		||||
        Mettre_a_jour_trame(Orig_X, Orig_Y);
 | 
			
		||||
    }
 | 
			
		||||
    if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
    {
 | 
			
		||||
      Touche=0;
 | 
			
		||||
      Fenetre_aide(BOUTON_EFFETS, "SIEVE");
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  while ( (Bouton_clicke!=2) && (Bouton_clicke!=3) );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5628,9 +5659,13 @@ void Bouton_Effets(void)
 | 
			
		||||
    Bouton_clicke=Fenetre_Bouton_clicke();
 | 
			
		||||
 | 
			
		||||
    if (Touche==SDLK_ESCAPE)
 | 
			
		||||
    {
 | 
			
		||||
      Bouton_clicke=11;
 | 
			
		||||
      Touche=0;
 | 
			
		||||
    }
 | 
			
		||||
    else if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
    {
 | 
			
		||||
      Touche=0;
 | 
			
		||||
      // Aide contextuelle
 | 
			
		||||
      switch(Fenetre_Numero_bouton_clicke())
 | 
			
		||||
      {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								const.h
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								const.h
									
									
									
									
									
								
							@ -294,22 +294,22 @@ enum NUMEROS_DE_BOUTONS
 | 
			
		||||
 | 
			
		||||
enum ACTIONS_SPECIALES
 | 
			
		||||
{
 | 
			
		||||
  SPECIAL_MOUSE_UP,                // |
 | 
			
		||||
  SPECIAL_MOUSE_DOWN,              // |
 | 
			
		||||
  SPECIAL_MOUSE_LEFT,              // |
 | 
			
		||||
  SPECIAL_MOUSE_RIGHT,             // |
 | 
			
		||||
  SPECIAL_CLICK_LEFT,              // |  Il faut garder
 | 
			
		||||
  SPECIAL_CLICK_RIGHT,             // |  ces constantes
 | 
			
		||||
  SPECIAL_NEXT_FORECOLOR,          // |  au début de la
 | 
			
		||||
  SPECIAL_PREVIOUS_FORECOLOR,      // |_ liste car elles
 | 
			
		||||
  SPECIAL_NEXT_BACKCOLOR,          // |  sont réutilisées
 | 
			
		||||
  SPECIAL_PREVIOUS_BACKCOLOR,      // |  avec leurs valeurs
 | 
			
		||||
  SPECIAL_RETRECIR_PINCEAU,        // |  brutes en ASM dans
 | 
			
		||||
  SPECIAL_GROSSIR_PINCEAU,         // |  Get_input !!!
 | 
			
		||||
  SPECIAL_NEXT_USER_FORECOLOR,     // |
 | 
			
		||||
  SPECIAL_PREVIOUS_USER_FORECOLOR, // |
 | 
			
		||||
  SPECIAL_NEXT_USER_BACKCOLOR,     // |
 | 
			
		||||
  SPECIAL_PREVIOUS_USER_BACKCOLOR, // |
 | 
			
		||||
  SPECIAL_MOUSE_UP,                
 | 
			
		||||
  SPECIAL_MOUSE_DOWN,              
 | 
			
		||||
  SPECIAL_MOUSE_LEFT,              
 | 
			
		||||
  SPECIAL_MOUSE_RIGHT,             
 | 
			
		||||
  SPECIAL_CLICK_LEFT,               
 | 
			
		||||
  SPECIAL_CLICK_RIGHT,             
 | 
			
		||||
  SPECIAL_NEXT_FORECOLOR,         
 | 
			
		||||
  SPECIAL_PREVIOUS_FORECOLOR,      
 | 
			
		||||
  SPECIAL_NEXT_BACKCOLOR,          
 | 
			
		||||
  SPECIAL_PREVIOUS_BACKCOLOR,      
 | 
			
		||||
  SPECIAL_RETRECIR_PINCEAU,         
 | 
			
		||||
  SPECIAL_GROSSIR_PINCEAU,          
 | 
			
		||||
  SPECIAL_NEXT_USER_FORECOLOR,     
 | 
			
		||||
  SPECIAL_PREVIOUS_USER_FORECOLOR, 
 | 
			
		||||
  SPECIAL_NEXT_USER_BACKCOLOR,     
 | 
			
		||||
  SPECIAL_PREVIOUS_USER_BACKCOLOR, 
 | 
			
		||||
  SPECIAL_SCROLL_UP,
 | 
			
		||||
  SPECIAL_SCROLL_DOWN,
 | 
			
		||||
  SPECIAL_SCROLL_LEFT,
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										72
									
								
								input.c
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								input.c
									
									
									
									
									
								
							@ -133,9 +133,7 @@ int Handle_Mouse_Move(SDL_Event* event)
 | 
			
		||||
    INPUT_Nouveau_Mouse_X = event->motion.x/Pixel_width;
 | 
			
		||||
    INPUT_Nouveau_Mouse_Y = event->motion.y/Pixel_height;
 | 
			
		||||
 | 
			
		||||
    if(Move_cursor_with_constraints()) return 0;
 | 
			
		||||
 | 
			
		||||
    return 1;
 | 
			
		||||
    return Move_cursor_with_constraints();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Handle_Mouse_Click(SDL_Event* event)
 | 
			
		||||
@ -190,10 +188,8 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
    Touche = Conversion_Touche(event->key.keysym);
 | 
			
		||||
    Touche_ANSI = Conversion_ANSI(event->key.keysym);
 | 
			
		||||
 | 
			
		||||
    // Instead of all this mess, send back a mouse event !
 | 
			
		||||
    if(Touche == Config_Touche[0])
 | 
			
		||||
    if(Touche == Config_Touche[SPECIAL_MOUSE_UP])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE UP
 | 
			
		||||
        //si on est déjà en haut on peut plus bouger
 | 
			
		||||
        if(INPUT_Nouveau_Mouse_Y!=0)
 | 
			
		||||
        {
 | 
			
		||||
@ -205,9 +201,8 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if(Touche == Config_Touche[1])
 | 
			
		||||
    else if(Touche == Config_Touche[SPECIAL_MOUSE_DOWN])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE DOWN
 | 
			
		||||
        if(INPUT_Nouveau_Mouse_Y<Hauteur_ecran-1)
 | 
			
		||||
        {
 | 
			
		||||
            if(Loupe_Mode && INPUT_Nouveau_Mouse_Y < Menu_Ordonnee && INPUT_Nouveau_Mouse_X > Principal_Split)
 | 
			
		||||
@ -222,9 +217,8 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if(Touche == Config_Touche[2])
 | 
			
		||||
    else if(Touche == Config_Touche[SPECIAL_MOUSE_LEFT])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE LEFT
 | 
			
		||||
        if(INPUT_Nouveau_Mouse_X!=0)
 | 
			
		||||
        {
 | 
			
		||||
            if(Loupe_Mode && INPUT_Nouveau_Mouse_Y < Menu_Ordonnee && INPUT_Nouveau_Mouse_X > Principal_Split)
 | 
			
		||||
@ -235,10 +229,8 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if(Touche == Config_Touche[3])
 | 
			
		||||
    else if(Touche == Config_Touche[SPECIAL_MOUSE_RIGHT])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE RIGHT
 | 
			
		||||
 | 
			
		||||
        if(INPUT_Nouveau_Mouse_X<Largeur_ecran-1)
 | 
			
		||||
        {
 | 
			
		||||
            if(Loupe_Mode && INPUT_Nouveau_Mouse_Y < Menu_Ordonnee && INPUT_Nouveau_Mouse_X > Principal_Split)
 | 
			
		||||
@ -253,24 +245,20 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if(Touche == Config_Touche[4])
 | 
			
		||||
    else if(Touche == Config_Touche[SPECIAL_CLICK_LEFT])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE CLICK LEFT
 | 
			
		||||
        INPUT_Nouveau_Mouse_K=1;
 | 
			
		||||
        Move_cursor_with_constraints();
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
    else if(Touche == Config_Touche[5])
 | 
			
		||||
    else if(Touche == Config_Touche[SPECIAL_CLICK_RIGHT])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE CLICK RIGHT
 | 
			
		||||
        INPUT_Nouveau_Mouse_K=2;
 | 
			
		||||
        Move_cursor_with_constraints();
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(Operation_Taille_pile!=0)
 | 
			
		||||
    {
 | 
			
		||||
        if (Touche != 0)
 | 
			
		||||
    if (Operation_Taille_pile!=0 && Touche != 0)
 | 
			
		||||
    {
 | 
			
		||||
        //Enfin, on inhibe les touches (sauf si c'est un changement de couleur
 | 
			
		||||
        //ou de taille de pinceau lors d'une des operations suivantes:
 | 
			
		||||
@ -281,16 +269,16 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
            //supportant le changement de couleur ou de taille de pinceau.
 | 
			
		||||
 | 
			
		||||
            if(
 | 
			
		||||
                        (Touche != Config_Touche[6]) &&
 | 
			
		||||
                        (Touche != Config_Touche[7]) &&
 | 
			
		||||
                        (Touche != Config_Touche[8]) &&
 | 
			
		||||
                        (Touche != Config_Touche[9]) &&
 | 
			
		||||
                        (Touche != Config_Touche[10]) &&
 | 
			
		||||
                        (Touche != Config_Touche[11]) &&
 | 
			
		||||
                        (Touche != Config_Touche[12]) &&
 | 
			
		||||
                        (Touche != Config_Touche[13]) &&
 | 
			
		||||
                        (Touche != Config_Touche[14]) &&
 | 
			
		||||
                        (Touche != Config_Touche[15])
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_NEXT_FORECOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_PREVIOUS_FORECOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_NEXT_BACKCOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_PREVIOUS_BACKCOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_RETRECIR_PINCEAU]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_GROSSIR_PINCEAU]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_NEXT_USER_FORECOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_PREVIOUS_USER_FORECOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_NEXT_USER_BACKCOLOR]) &&
 | 
			
		||||
                    (Touche != Config_Touche[SPECIAL_PREVIOUS_USER_BACKCOLOR])
 | 
			
		||||
              )
 | 
			
		||||
            {
 | 
			
		||||
                Touche=0;
 | 
			
		||||
@ -298,7 +286,6 @@ int Handle_Key_Press(SDL_Event* event)
 | 
			
		||||
        }
 | 
			
		||||
        else Touche = 0;
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -306,21 +293,20 @@ void Handle_Key_Release(SDL_Event* event)
 | 
			
		||||
{
 | 
			
		||||
    int ToucheR = Conversion_Touche(event->key.keysym);
 | 
			
		||||
 | 
			
		||||
    // Send back a mouse event instead. Or extract the code and put it in common.
 | 
			
		||||
    if(ToucheR == Config_Touche[4])
 | 
			
		||||
    if(ToucheR == Config_Touche[SPECIAL_CLICK_LEFT])
 | 
			
		||||
    {
 | 
			
		||||
        INPUT_Nouveau_Mouse_K=0;
 | 
			
		||||
        INPUT_Nouveau_Mouse_K &= ~1;
 | 
			
		||||
        Move_cursor_with_constraints();
 | 
			
		||||
    }
 | 
			
		||||
    else if(ToucheR == Config_Touche[5])
 | 
			
		||||
    else if(ToucheR == Config_Touche[SPECIAL_CLICK_RIGHT])
 | 
			
		||||
    {
 | 
			
		||||
        //[Touche] = Emulation de MOUSE CLICK RIGHT
 | 
			
		||||
        INPUT_Nouveau_Mouse_K=0;
 | 
			
		||||
        INPUT_Nouveau_Mouse_K &= ~2;
 | 
			
		||||
        Move_cursor_with_constraints();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Touche = 0;
 | 
			
		||||
    Touche_ANSI=0;
 | 
			
		||||
    // Other keys don't need to be released : they are handled as "events" and procesed only once.
 | 
			
		||||
    // These clicks are apart because they need to be continuous (ie move while key pressed)
 | 
			
		||||
    // We are relying on "hardware" keyrepeat to achieve that.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -343,10 +329,12 @@ int Get_input(void)
 | 
			
		||||
    SDL_Event event;
 | 
			
		||||
    int User_Feedback_Required = 0; // Flag qui indique si on doit arrêter de traiter les évènements ou si on peut enchainer
 | 
			
		||||
 | 
			
		||||
    /*Touche =*/ Touche_ANSI = 0;
 | 
			
		||||
 | 
			
		||||
    // Process as much events as possible without redrawing the screen.
 | 
			
		||||
    // This mostly allows us to merge mouse events for people with an high
 | 
			
		||||
    // resolution mouse
 | 
			
		||||
    while( !User_Feedback_Required && SDL_PollEvent(&event))
 | 
			
		||||
    while( (!User_Feedback_Required) && SDL_PollEvent(&event))
 | 
			
		||||
    {
 | 
			
		||||
        switch(event.type)
 | 
			
		||||
        {
 | 
			
		||||
@ -361,7 +349,7 @@ int Get_input(void)
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case SDL_MOUSEMOTION:
 | 
			
		||||
                Handle_Mouse_Move(&event);
 | 
			
		||||
                User_Feedback_Required = Handle_Mouse_Move(&event); // On ne sort que si la souris a vraiment bougé
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case SDL_MOUSEBUTTONDOWN:
 | 
			
		||||
@ -393,7 +381,7 @@ int Get_input(void)
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                DEBUG("Unhandled SDL event !",0);
 | 
			
		||||
                DEBUG("Unhandled SDL event number : ",event.type);
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								main.c
									
									
									
									
									
								
							@ -372,7 +372,10 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
  joystick = SDL_JoystickOpen(0);
 | 
			
		||||
  SDL_EnableKeyRepeat(250, 32);
 | 
			
		||||
  SDL_EnableUNICODE(SDL_ENABLE);
 | 
			
		||||
  SDL_WM_SetCaption("GrafX2 beta "POURCENTAGE_VERSION" - USE AT YOUR OWN RISK","GrafX2");
 | 
			
		||||
  if(ALPHA_BETA[0]=='ß')
 | 
			
		||||
    SDL_WM_SetCaption("GrafX2 beta "POURCENTAGE_VERSION""" - USE AT YOUR OWN RISK","GrafX2");
 | 
			
		||||
  else
 | 
			
		||||
    SDL_WM_SetCaption("GrafX2 v2.00 final","GrafX2");
 | 
			
		||||
  {
 | 
			
		||||
    // Routine pour définir l'icone.
 | 
			
		||||
    char Chemin_icone[TAILLE_CHEMIN_FICHIER];
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										113
									
								
								moteur.c
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								moteur.c
									
									
									
									
									
								
							@ -527,111 +527,134 @@ void Gestion_principale(void)
 | 
			
		||||
            Scroller_loupe(0,-(Loupe_Hauteur>>2));
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(0,-(Hauteur_ecran>>3));
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_DOWN : // Scroll down
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(0,(Loupe_Hauteur>>2));
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(0,(Hauteur_ecran>>3));
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_LEFT : // Scroll left
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(-(Loupe_Largeur>>2),0);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(-(Largeur_ecran>>3),0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_RIGHT : // Scroll right
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe((Loupe_Largeur>>2),0);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran((Largeur_ecran>>3),0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_UP_FAST : // Scroll up faster
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(0,-(Loupe_Hauteur>>1));
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(0,-(Hauteur_ecran>>2));
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_DOWN_FAST : // Scroll down faster
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(0,(Loupe_Hauteur>>1));
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(0,(Hauteur_ecran>>2));
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_LEFT_FAST : // Scroll left faster
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(-(Loupe_Largeur>>1),0);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(-(Largeur_ecran>>2),0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_RIGHT_FAST : // Scroll right faster
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe((Loupe_Largeur>>1),0);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran((Largeur_ecran>>2),0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_UP_SLOW : // Scroll up slower
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(0,-1);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(0,-1);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_DOWN_SLOW : // Scroll down slower
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(0,1);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(0,1);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_LEFT_SLOW : // Scroll left slower
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(-1,0);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(-1,0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SCROLL_RIGHT_SLOW : // Scroll right slower
 | 
			
		||||
          if (Loupe_Mode)
 | 
			
		||||
            Scroller_loupe(1,0);
 | 
			
		||||
          else
 | 
			
		||||
            Scroller_ecran(1,0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_NEXT_FORECOLOR : // Next foreground color
 | 
			
		||||
          Special_Next_forecolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_PREVIOUS_FORECOLOR : // Previous foreground color
 | 
			
		||||
          Special_Previous_forecolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_NEXT_BACKCOLOR : // Next background color
 | 
			
		||||
          Special_Next_backcolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_PREVIOUS_BACKCOLOR : // Previous background color
 | 
			
		||||
          Special_Previous_backcolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_RETRECIR_PINCEAU: // Rétrécir le pinceau
 | 
			
		||||
          Retrecir_pinceau();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_GROSSIR_PINCEAU: // Grossir le pinceau
 | 
			
		||||
          Grossir_pinceau();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_NEXT_USER_FORECOLOR : // Next user-defined foreground color
 | 
			
		||||
          Message_Non_disponible(); // !!! TEMPORAIRE !!!
 | 
			
		||||
          //Special_Next_user_forecolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_PREVIOUS_USER_FORECOLOR : // Previous user-defined foreground color
 | 
			
		||||
          Message_Non_disponible(); // !!! TEMPORAIRE !!!
 | 
			
		||||
          //Special_Previous_user_forecolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_NEXT_USER_BACKCOLOR : // Next user-defined background color
 | 
			
		||||
          Message_Non_disponible(); // !!! TEMPORAIRE !!!
 | 
			
		||||
          //Special_Next_user_backcolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_PREVIOUS_USER_BACKCOLOR : // Previous user-defined background color
 | 
			
		||||
          Message_Non_disponible(); // !!! TEMPORAIRE !!!
 | 
			
		||||
          //Special_Previous_user_backcolor();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SHOW_HIDE_CURSOR : // Show / Hide cursor
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Cacher_curseur=!Cacher_curseur;
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_PINCEAU_POINT : // Paintbrush = "."
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
@ -639,26 +662,32 @@ void Gestion_principale(void)
 | 
			
		||||
          Modifier_pinceau(1,1);
 | 
			
		||||
          Changer_la_forme_du_pinceau(FORME_PINCEAU_ROND);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_DESSIN_CONTINU : // Continuous freehand drawing
 | 
			
		||||
          Enclencher_bouton(BOUTON_DESSIN,A_GAUCHE);
 | 
			
		||||
          // ATTENTION CE TRUC EST MOCHE ET VA MERDER SI ON SE MET A UTILISER DES BOUTONS POPUPS
 | 
			
		||||
          while (Operation_en_cours!=OPERATION_DESSIN_CONTINU)
 | 
			
		||||
            Enclencher_bouton(BOUTON_DESSIN,A_DROITE);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_FLIP_X : // Flip X
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Flip_X_LOWLEVEL();
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_FLIP_Y : // Flip Y
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Flip_Y_LOWLEVEL();
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_ROTATE_90 : // 90° brush rotation
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Rotate_90_deg();
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_ROTATE_180 : // 180° brush rotation
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
@ -673,142 +702,180 @@ void Gestion_principale(void)
 | 
			
		||||
          Brosse_Decalage_X=(Brosse_Largeur>>1);
 | 
			
		||||
          Brosse_Decalage_Y=(Brosse_Hauteur>>1);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_STRETCH : // Stretch brush
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Demarrer_pile_operation(OPERATION_ETIRER_BROSSE);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_DISTORT : // Distort brush
 | 
			
		||||
          Message_Non_disponible(); // !!! TEMPORAIRE !!!
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_ROTATE_ANY_ANGLE : // Rotate brush by any angle
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Demarrer_pile_operation(OPERATION_TOURNER_BROSSE);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_OUTLINE : // Outline brush
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Outline_brush();
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_NIBBLE : // Nibble brush
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Nibble_brush();
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_GET_BRUSH_COLORS : // Get colors from brush
 | 
			
		||||
          Get_colors_from_brush();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_RECOLORIZE_BRUSH : // Recolorize brush
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Remap_brosse();
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_LOAD_BRUSH :
 | 
			
		||||
          Load_picture(0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SAVE_BRUSH :
 | 
			
		||||
          Save_picture(0);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_ZOOM_IN : // Zoom in
 | 
			
		||||
          Zoom(+1);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_ZOOM_OUT : // Zoom out
 | 
			
		||||
          Zoom(-1);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_CENTER_ATTACHMENT : // Center brush attachment
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Brosse_Decalage_X=(Brosse_Largeur>>1);
 | 
			
		||||
          Brosse_Decalage_Y=(Brosse_Hauteur>>1);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_TOP_LEFT_ATTACHMENT : // Top-left brush attachment
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Brosse_Decalage_X=0;
 | 
			
		||||
          Brosse_Decalage_Y=0;
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_TOP_RIGHT_ATTACHMENT : // Top-right brush attachment
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Brosse_Decalage_X=(Brosse_Largeur-1);
 | 
			
		||||
          Brosse_Decalage_Y=0;
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_BOTTOM_LEFT_ATTACHMENT : // Bottom-left brush attachment
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Brosse_Decalage_X=0;
 | 
			
		||||
          Brosse_Decalage_Y=(Brosse_Hauteur-1);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_BOTTOM_RIGHT_ATTACHMENT : // Bottom right brush attachment
 | 
			
		||||
          Effacer_curseur();
 | 
			
		||||
          Brosse_Decalage_X=(Brosse_Largeur-1);
 | 
			
		||||
          Brosse_Decalage_Y=(Brosse_Hauteur-1);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_EXCLUDE_COLORS_MENU : // Exclude colors menu
 | 
			
		||||
          Menu_Tag_couleurs("Tag colors to exclude",Exclude_color,&Temp,1, NULL);
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_INVERT_SIEVE :
 | 
			
		||||
          Inverser_trame();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SHADE_MODE :
 | 
			
		||||
          Bouton_Shade_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SHADE_MENU :
 | 
			
		||||
          Bouton_Shade_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_QUICK_SHADE_MODE :
 | 
			
		||||
          Bouton_Quick_shade_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_QUICK_SHADE_MENU :
 | 
			
		||||
          Bouton_Quick_shade_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_STENCIL_MODE :
 | 
			
		||||
          Bouton_Stencil_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_STENCIL_MENU :
 | 
			
		||||
          Bouton_Menu_Stencil();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_MASK_MODE :
 | 
			
		||||
          Bouton_Mask_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_MASK_MENU :
 | 
			
		||||
          Bouton_Mask_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_GRID_MODE :
 | 
			
		||||
          Bouton_Snap_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_GRID_MENU :
 | 
			
		||||
          Bouton_Menu_Grille();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SIEVE_MODE :
 | 
			
		||||
          Bouton_Trame_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SIEVE_MENU :
 | 
			
		||||
          Bouton_Trame_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_COLORIZE_MODE :
 | 
			
		||||
          Bouton_Colorize_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_COLORIZE_MENU :
 | 
			
		||||
          Bouton_Colorize_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SMOOTH_MODE :
 | 
			
		||||
          Bouton_Smooth_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SMOOTH_MENU :
 | 
			
		||||
          Bouton_Smooth_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_SMEAR_MODE :
 | 
			
		||||
          Bouton_Smear_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_TILING_MODE :
 | 
			
		||||
          Bouton_Tiling_Mode();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        case SPECIAL_TILING_MENU :
 | 
			
		||||
          Bouton_Tiling_Menu();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        default   : // Gestion des touches de raccourci de bouton:
 | 
			
		||||
          // Pour chaque bouton
 | 
			
		||||
@ -834,6 +901,7 @@ void Gestion_principale(void)
 | 
			
		||||
          {
 | 
			
		||||
            Enclencher_bouton(Bouton_Touche,Bouton_Cote);
 | 
			
		||||
            Indice_bouton_precedent=-1;
 | 
			
		||||
            Touche=0;
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -1105,6 +1173,7 @@ void Fermer_fenetre(void)
 | 
			
		||||
  {
 | 
			
		||||
    // Restore de ce que la fenêtre cachait
 | 
			
		||||
    Restaure_fond(Fond_fenetre[Fenetre-1], Fenetre_Pos_X, Fenetre_Pos_Y, Fenetre_Largeur, Fenetre_Hauteur);
 | 
			
		||||
    Fond_fenetre[Fenetre-1]=NULL;
 | 
			
		||||
    UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Fenetre_Largeur*Menu_Facteur_X,Fenetre_Hauteur*Menu_Facteur_Y);
 | 
			
		||||
    Fenetre--;
 | 
			
		||||
  }
 | 
			
		||||
@ -1540,6 +1609,7 @@ void Fermer_popup(void)
 | 
			
		||||
  {
 | 
			
		||||
    // Restore de ce que la fenêtre cachait
 | 
			
		||||
    Restaure_fond(Fond_fenetre[Fenetre-1], Fenetre_Pos_X, Fenetre_Pos_Y, Fenetre_Largeur, Fenetre_Hauteur);
 | 
			
		||||
    Fond_fenetre[Fenetre-1]=NULL;
 | 
			
		||||
    UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Fenetre_Largeur*Menu_Facteur_X,Fenetre_Hauteur*Menu_Facteur_Y);
 | 
			
		||||
    Fenetre--;
 | 
			
		||||
  }
 | 
			
		||||
@ -1798,37 +1868,56 @@ void Deplacer_fenetre(short Dx, short Dy)
 | 
			
		||||
    Ancien_X=Nouveau_X;
 | 
			
		||||
    Ancien_Y=Nouveau_Y;
 | 
			
		||||
 | 
			
		||||
    while(!Get_input())Wait_VBL();
 | 
			
		||||
    while(!Get_input())
 | 
			
		||||
    {
 | 
			
		||||
        Wait_VBL();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Nouveau_X=Mouse_X-Dx;
 | 
			
		||||
 | 
			
		||||
    if (Nouveau_X<0)
 | 
			
		||||
    {
 | 
			
		||||
      Nouveau_X=0;
 | 
			
		||||
      Dx = Mouse_X;
 | 
			
		||||
    }
 | 
			
		||||
    if (Nouveau_X>Largeur_ecran-Largeur)
 | 
			
		||||
    {
 | 
			
		||||
      Nouveau_X=Largeur_ecran-Largeur;
 | 
			
		||||
      Dx = Mouse_X - Nouveau_X;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Nouveau_Y=Mouse_Y-Dy;
 | 
			
		||||
    if (Nouveau_Y<0)
 | 
			
		||||
      Nouveau_Y=0;
 | 
			
		||||
    if (Nouveau_Y>Hauteur_ecran-Hauteur)
 | 
			
		||||
      Nouveau_Y=Hauteur_ecran-Hauteur;
 | 
			
		||||
 | 
			
		||||
    if ((Nouveau_X!=Ancien_X)
 | 
			
		||||
     || (Nouveau_Y!=Ancien_Y))
 | 
			
		||||
    if (Nouveau_Y<0)
 | 
			
		||||
    {
 | 
			
		||||
      Nouveau_Y=0;
 | 
			
		||||
      Dy = Mouse_Y;
 | 
			
		||||
    }
 | 
			
		||||
    if (Nouveau_Y>Hauteur_ecran-Hauteur)
 | 
			
		||||
    {
 | 
			
		||||
      Nouveau_Y=Hauteur_ecran-Hauteur;
 | 
			
		||||
      Dy = Mouse_Y - Nouveau_Y;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((Nouveau_X!=Ancien_X) || (Nouveau_Y!=Ancien_Y))
 | 
			
		||||
    {
 | 
			
		||||
      Effacer_curseur();
 | 
			
		||||
 | 
			
		||||
      Ligne_horizontale_XOR(Ancien_X,Ancien_Y,Largeur);
 | 
			
		||||
      Ligne_verticale_XOR(Ancien_X,Ancien_Y+1,Hauteur-2);
 | 
			
		||||
      Ligne_verticale_XOR(Ancien_X+Largeur-1,Ancien_Y+1,Hauteur-2);
 | 
			
		||||
      Ligne_horizontale_XOR(Ancien_X,Ancien_Y+Hauteur-1,Largeur);
 | 
			
		||||
 | 
			
		||||
      Ligne_horizontale_XOR(Nouveau_X,Nouveau_Y,Largeur);
 | 
			
		||||
      Ligne_verticale_XOR(Nouveau_X,Nouveau_Y+1,Hauteur-2);
 | 
			
		||||
      Ligne_verticale_XOR(Nouveau_X+Largeur-1,Nouveau_Y+1,Hauteur-2);
 | 
			
		||||
      Ligne_horizontale_XOR(Nouveau_X,Nouveau_Y+Hauteur-1,Largeur);
 | 
			
		||||
 | 
			
		||||
      Afficher_curseur();
 | 
			
		||||
    }
 | 
			
		||||
      UpdateRect(Ancien_X,Ancien_Y,Largeur,Hauteur);
 | 
			
		||||
      UpdateRect(Nouveau_X,Nouveau_Y,Largeur,Hauteur);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Effacer_curseur();
 | 
			
		||||
  Ligne_horizontale_XOR(Nouveau_X,Nouveau_Y,Largeur);
 | 
			
		||||
@ -1853,12 +1942,14 @@ void Deplacer_fenetre(short Dx, short Dy)
 | 
			
		||||
    
 | 
			
		||||
    // Restore de ce que la fenêtre cachait
 | 
			
		||||
    Restaure_fond(Fond_fenetre[Fenetre-1], Fenetre_Pos_X, Fenetre_Pos_Y, Fenetre_Largeur, Fenetre_Hauteur);
 | 
			
		||||
    Fond_fenetre[Fenetre-1] = NULL;
 | 
			
		||||
 | 
			
		||||
    // Sauvegarde de ce que la fenêtre remplace
 | 
			
		||||
    Sauve_fond(&(Fond_fenetre[Fenetre-1]), Nouveau_X, Nouveau_Y, Fenetre_Largeur, Fenetre_Hauteur);
 | 
			
		||||
 | 
			
		||||
    // Raffichage de la fenêtre
 | 
			
		||||
    Restaure_fond(Buffer, Nouveau_X, Nouveau_Y, Fenetre_Largeur, Fenetre_Hauteur);
 | 
			
		||||
    Buffer = NULL;
 | 
			
		||||
 | 
			
		||||
    // Mise à jour du rectangle englobant
 | 
			
		||||
    UpdateRect(
 | 
			
		||||
@ -2100,7 +2191,11 @@ short Fenetre_Bouton_clicke(void)
 | 
			
		||||
  if (Touche)
 | 
			
		||||
  {
 | 
			
		||||
    Bouton=Fenetre_Numero_bouton_touche();
 | 
			
		||||
    if (Bouton) return Bouton;
 | 
			
		||||
    if (Bouton)
 | 
			
		||||
    {
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        return Bouton;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
 | 
			
		||||
@ -1896,6 +1896,7 @@ void Bouton_Palette(void)
 | 
			
		||||
            UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X*264),Fenetre_Pos_Y+(Menu_Facteur_Y*93),Menu_Facteur_X<<4,Menu_Facteur_Y*64);
 | 
			
		||||
            Afficher_curseur();
 | 
			
		||||
          }
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        case SDLK_RIGHTBRACKET : // Décaler Forecolor vers la droite
 | 
			
		||||
@ -1917,6 +1918,7 @@ void Bouton_Palette(void)
 | 
			
		||||
            UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X*264),Fenetre_Pos_Y+(Menu_Facteur_Y*93),Menu_Facteur_X<<4,Menu_Facteur_Y*64);
 | 
			
		||||
            Afficher_curseur();
 | 
			
		||||
          }
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        case (SDLK_LEFTBRACKET|MOD_SHIFT) : // Decaler Backcolor vers la gauche
 | 
			
		||||
@ -1932,6 +1934,7 @@ void Bouton_Palette(void)
 | 
			
		||||
          Block(Fenetre_Pos_X+(Menu_Facteur_X*280),Fenetre_Pos_Y+(Menu_Facteur_Y* 93),Menu_Facteur_X<<2,Menu_Facteur_Y<<6,Back_color);
 | 
			
		||||
          UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X*260),Fenetre_Pos_Y+(Menu_Facteur_Y* 89),Menu_Facteur_X*32,Menu_Facteur_Y*72);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        case SDLK_BACKSPACE : // Remise des couleurs du menu à l'état normal en essayant
 | 
			
		||||
@ -1955,6 +1958,7 @@ void Bouton_Palette(void)
 | 
			
		||||
          Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
 | 
			
		||||
          Compter_nb_couleurs_utilisees(&Nb_couleurs_utilisees,Utilisation_couleur);
 | 
			
		||||
          Il_faut_remapper=1;
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu
 | 
			
		||||
@ -1998,10 +2002,12 @@ void Bouton_Palette(void)
 | 
			
		||||
            }
 | 
			
		||||
            Afficher_curseur();
 | 
			
		||||
          }
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
          if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
          {
 | 
			
		||||
            Touche=0;
 | 
			
		||||
            Fenetre_aide(BOUTON_PALETTE, NULL);
 | 
			
		||||
            break;
 | 
			
		||||
          }
 | 
			
		||||
@ -2091,8 +2097,11 @@ void Bouton_Palette_secondaire(void)
 | 
			
		||||
  {
 | 
			
		||||
    Bouton_clicke=Fenetre_Bouton_clicke();
 | 
			
		||||
    if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
    {
 | 
			
		||||
      Touche=0;
 | 
			
		||||
      Fenetre_aide(BOUTON_PALETTE, NULL);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  while (Bouton_clicke<=0);
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								shade.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								shade.c
									
									
									
									
									
								
							@ -901,6 +901,7 @@ int Menu_Shade(void)
 | 
			
		||||
          Afficher_couleur_selectionnee(Premiere_couleur,Derniere_couleur);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case SDLK_UP    : // Select Haut
 | 
			
		||||
@ -948,6 +949,7 @@ int Menu_Shade(void)
 | 
			
		||||
          Afficher_couleur_case_selectionnee(Select_Debut,Select_Debut);
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu
 | 
			
		||||
@ -970,12 +972,16 @@ int Menu_Shade(void)
 | 
			
		||||
 | 
			
		||||
          Afficher_curseur();
 | 
			
		||||
        }
 | 
			
		||||
        Touche=0;
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
        if (Touche==Bouton[BOUTON_AIDE].Raccourci_gauche)
 | 
			
		||||
        {
 | 
			
		||||
          Touche=0;
 | 
			
		||||
          Fenetre_aide(BOUTON_EFFETS, "SHADE");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  while ((Bouton_clicke!=4) && (Bouton_clicke!=5));
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
 | 
			
		||||
@ -699,6 +699,7 @@ byte Demande_de_confirmation(char * Message)
 | 
			
		||||
    if (Touche==SDLK_ESCAPE) Bouton_clicke=2;
 | 
			
		||||
  }
 | 
			
		||||
  while (Bouton_clicke<=0);
 | 
			
		||||
  Touche=0;
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
  Afficher_curseur();
 | 
			
		||||
@ -728,6 +729,7 @@ void Warning_message(char * Message)
 | 
			
		||||
  do
 | 
			
		||||
    Bouton_clicke=Fenetre_Bouton_clicke();
 | 
			
		||||
  while ((Bouton_clicke<=0) && (Touche!=SDLK_ESCAPE) && (Touche!=SDLK_o));
 | 
			
		||||
  Touche=0;
 | 
			
		||||
 | 
			
		||||
  Fermer_fenetre();
 | 
			
		||||
  Afficher_curseur();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user