Get_input now returns 1 if something happened, and 0 if not. So we can chose what to do depending on that. We should try not to wait if the operation needs to be asynchronous, but there is no way to know that for now, and it may be quite complex to determine (i think the shade effect can be asynchronous for example, so it'll affect pretty much all operations). The other solution would be to drop events to react to the more recent ones. It would look smoother but the mouse will do strange things. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@378 416bcca6-2ee7-4201-b75f-2eb2f807beb1
		
			
				
	
	
		
			107 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*  Grafx2 - The Ultimate 256-color bitmap paint program
 | 
						||
 | 
						||
    Copyright 2007 Adrien Destugues
 | 
						||
    Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
 | 
						||
 | 
						||
    Grafx2 is free software; you can redistribute it and/or
 | 
						||
    modify it under the terms of the GNU General Public License
 | 
						||
    as published by the Free Software Foundation; version 2
 | 
						||
    of the License.
 | 
						||
 | 
						||
    Grafx2 is distributed in the hope that it will be useful,
 | 
						||
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						||
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						||
    GNU General Public License for more details.
 | 
						||
 | 
						||
    You should have received a copy of the GNU General Public License
 | 
						||
    along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
 | 
						||
    write to the Free Software Foundation, Inc.,
 | 
						||
    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 | 
						||
*/
 | 
						||
void Effacer_ecran_courant(void);
 | 
						||
void Copier_ecran_sur_brouillon(void);
 | 
						||
void Copier_image_dans_brosse(short Debut_X,short Debut_Y,short Brosse_Largeur,short Brosse_Hauteur,word Largeur_image);
 | 
						||
void Permuter_dans_l_image_les_couleurs(byte Couleur_1,byte Couleur_2);
 | 
						||
void Remap_general_LOWLEVEL(byte * Table_conv,byte * Buffer,short Largeur,short Hauteur,short Largeur_buffer);
 | 
						||
void Scroll_picture(short Decalage_X,short Decalage_Y);
 | 
						||
void Set_mouse_video_mode_number(void);
 | 
						||
int  Get_input(void);
 | 
						||
void Set_mouse_position(void);
 | 
						||
void Attendre_fin_de_click(void);
 | 
						||
void Sensibilite_souris(word X,word Y);
 | 
						||
void Set_color(byte Couleur, byte Rouge, byte Vert, byte Bleu);
 | 
						||
void Set_palette(T_Palette Palette);
 | 
						||
void Palette_256_to_64(T_Palette Palette);
 | 
						||
void Palette_64_to_256(T_Palette Palette);
 | 
						||
void Effacer_image_courante(byte Couleur);
 | 
						||
void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir);
 | 
						||
void Wait_VBL(void);
 | 
						||
void Tempo_jauge(byte Vitesse);
 | 
						||
dword Round_div(dword Numerateur,dword Diviseur);
 | 
						||
word Palette_Compter_nb_couleurs_utilisees(dword * Tableau);
 | 
						||
word Get_key(void);
 | 
						||
 | 
						||
void Pixel_dans_ecran_courant      (word X,word Y,byte Couleur);
 | 
						||
void Pixel_dans_brosse             (word X,word Y,byte Couleur);
 | 
						||
byte Lit_pixel_dans_ecran_courant  (word X,word Y);
 | 
						||
byte Lit_pixel_dans_ecran_brouillon(word X,word Y);
 | 
						||
byte Lit_pixel_dans_ecran_backup   (word X,word Y);
 | 
						||
byte Lit_pixel_dans_ecran_feedback (word X,word Y);
 | 
						||
byte Lit_pixel_dans_brosse         (word X,word Y);
 | 
						||
 | 
						||
void Ellipse_Calculer_limites(short Rayon_horizontal,short Rayon_vertical);
 | 
						||
// Calcule les valeurs suivantes en fonction des deux param<61>tres:
 | 
						||
//
 | 
						||
// Ellipse_Rayon_vertical_au_carre
 | 
						||
// Ellipse_Rayon_horizontal_au_carre
 | 
						||
// Ellipse_Limite_High
 | 
						||
// Ellipse_Limite_Low
 | 
						||
 | 
						||
 | 
						||
byte Pixel_dans_ellipse(void);
 | 
						||
//   Indique si le pixel se trouvant <20> Ellipse_Curseur_X pixels
 | 
						||
// (Ellipse_Curseur_X>0 = <20> droite, Ellipse_Curseur_X<0 = <20> gauche) et <20>
 | 
						||
// Ellipse_Curseur_Y pixels (Ellipse_Curseur_Y>0 = en bas,
 | 
						||
// Ellipse_Curseur_Y<0 = en haut) du centre se trouve dans l'ellipse en
 | 
						||
// cours.
 | 
						||
 | 
						||
byte Pixel_dans_cercle(void);
 | 
						||
//   Indique si le pixel se trouvant <20> Cercle_Curseur_X pixels
 | 
						||
// (Cercle_Curseur_X>0 = <20> droite, Cercle_Curseur_X<0 = <20> gauche) et <20>
 | 
						||
// Cercle_Curseur_Y pixels (Cercle_Curseur_Y>0 = en bas,
 | 
						||
// Cercle_Curseur_Y<0 = en haut) du centre se trouve dans le cercle en
 | 
						||
// cours.
 | 
						||
 | 
						||
byte Bit(byte Octet, byte Rang);
 | 
						||
// Extrait un bit d'un certain rang <20> partir d'un octet.
 | 
						||
 | 
						||
byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne, byte HBPm1);
 | 
						||
// Renvoie la couleur du pixel (ILBM) en Pos_X.
 | 
						||
 | 
						||
// Gestion du chrono dans les fileselects
 | 
						||
void Initialiser_chrono(dword Delai);
 | 
						||
void Tester_chrono(void);
 | 
						||
 | 
						||
void Remplacer_une_couleur(byte Ancienne_couleur, byte Nouvelle_couleur);
 | 
						||
void Remplacer_toutes_les_couleurs_dans_limites(byte * Table_de_remplacement);
 | 
						||
 | 
						||
byte Effet_Colorize_interpole  (word X,word Y,byte Couleur);
 | 
						||
byte Effet_Colorize_additif    (word X,word Y,byte Couleur);
 | 
						||
byte Effet_Colorize_soustractif(word X,word Y,byte Couleur);
 | 
						||
byte Effet_Trame(word X,word Y);
 | 
						||
 | 
						||
void Flip_Y_LOWLEVEL(void);
 | 
						||
void Flip_X_LOWLEVEL(void);
 | 
						||
void Rotate_90_deg_LOWLEVEL(byte * Source,byte * Destination);
 | 
						||
void Rotate_180_deg_LOWLEVEL(void);
 | 
						||
void Zoomer_une_ligne(byte * Ligne_originale,byte * Ligne_zoomee,word Facteur,word Largeur);
 | 
						||
void Copier_une_partie_d_image_dans_une_autre(byte * Source,word S_Pos_X,word S_Pos_Y,word Largeur,word Hauteur,word Largeur_source,byte * Destination,word D_Pos_X,word D_Pos_Y,word Largeur_destination);
 | 
						||
 | 
						||
// -- Gestion du chrono --
 | 
						||
byte Etat_chrono; // Etat du chrono: 0=Attente d'un X<>me de seconde
 | 
						||
                  //                 1=Il faut afficher la preview
 | 
						||
                  //                 2=Plus de chrono <20> gerer pour l'instant
 | 
						||
dword Chrono_delay;     // Nombre de 18.2<EFBFBD>me de secondes demand<6E>s
 | 
						||
dword Chrono_cmp;       // Heure de d<>part du chrono
 | 
						||
byte Nouvelle_preview; // Bool<6F>en "Il faut relancer le chrono de preview"
 |