First compile-able version!

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@16 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2007-08-14 07:35:32 +00:00
parent 7c4b0858da
commit 635f8e5154
10 changed files with 864 additions and 597 deletions

4
aide.c
View File

@ -220,7 +220,7 @@ void Bouton_Stats(void)
// Affichage de la mmoire restante
Print_dans_fenetre(10,35,"Free memory:",STATS_COULEUR_TITRES,CM_Noir);
sprintf(Buffer,"%d bytes",Memoire_libre());
sprintf(Buffer,"%ld bytes",Memoire_libre());
Print_dans_fenetre(114,35,Buffer,STATS_COULEUR_DONNEES,CM_Noir);
// Affichage de l'espace disque libre
@ -230,7 +230,7 @@ void Bouton_Stats(void)
Taille=Informations_Disque->f_bfree;
if (Taille>=0)
{
sprintf(Buffer,"%d bytes",Taille);
sprintf(Buffer,"%ld bytes",Taille);
Print_dans_fenetre(146,51,Buffer,STATS_COULEUR_DONNEES,CM_Noir);
}
else

135
const.h
View File

@ -3,27 +3,26 @@
// Dclaration des constantes ////////////////////////////////////////////////
// Déclaration des constantes ////////////////////////////////////////////////
#define M_PI 3.14159265358979323846264338328
#define M_2PI 6.28318530717958647692528676656
// Note: La taille du fichier GFX2.DAT est dfinie au dbut de INIT.C !
#define POURCENTAGE_VERSION "96.5%" // Libell du pourcentage de la version á
// Note: La taille du fichier GFX2.DAT est définie au début de INIT.C !
#define POURCENTAGE_VERSION "96.5%" // Libellé du pourcentage de la version á
#define VERSION1 2 // |
#define VERSION2 0 // |_ Numro de version dcoup en
#define VERSION2 0 // |_ Numéro de version découpé en
#define BETA1 96 // | plusieurs parties => 2.0 á95.5%
#define BETA2 5 // |
#define ALPHA_BETA "á" // Type de la version "à" ou "á"
#define TAILLE_FICHIER_CONFIG 10351 // Taille du fichier GFX2.CFG
#define NB_MODES_VIDEO 60 // Nombre de modes vido
#define NB_BOUTONS 38 // Nombre de boutons … grer
#define NB_MODES_VIDEO 60 // Nombre de modes vidéo
#define NB_BOUTONS 38 // Nombre de boutons à gérer
#define NB_TOUCHES 134 // Nombre de combinaisons de touches
#define NB_TOUCHES_SPECIALES 72 // Nombre de touches spciales
#define NB_OPERATIONS 32 // Nombre d'oprations gres par le moteur
#define NB_TOUCHES_SPECIALES 72 // Nombre de touches spéciales
#define NB_OPERATIONS 32 // Nombre d'opérations gérées par le moteur
#define NB_FACTEURS_DE_ZOOM 12 // Nombre de facteurs de zoom
#define LARGEUR_MENU 254 // Largeur du menu en taille relle
#define HAUTEUR_MENU 44 // Hauteur du menu en taille relle
#define LARGEUR_MENU 254 // Largeur du menu en taille réelle
#define HAUTEUR_MENU 44 // Hauteur du menu en taille réelle
#define NB_SPRITES_CURSEUR 8 // Nombre de sprites de curseur
#define LARGEUR_SPRITE_CURSEUR 15 // Largeur d'un sprite de curseur en pixels
#define HAUTEUR_SPRITE_CURSEUR 15 // Hauteur d'un sprite de curseur en pixels
@ -31,37 +30,37 @@
#define NB_SPRITES_MENU 9 // Nombre de sprites de menu
#define LARGEUR_SPRITE_MENU 14 // Largeur d'un sprite de menu en pixels
#define HAUTEUR_SPRITE_MENU 14 // Hauteur d'un sprite de menu en pixels
#define LARGEUR_PINCEAU 16 // Largeur d'un sprite de pinceau prdfini
#define HAUTEUR_PINCEAU 16 // Hauteur d'un sprite de pinceau prdfini
#define LARGEUR_PINCEAU 16 // Largeur d'un sprite de pinceau prédéfini
#define HAUTEUR_PINCEAU 16 // Hauteur d'un sprite de pinceau prédéfini
#define TAILLE_MAXI_PINCEAU 127 // Taille maxi des pinceaux
#define NB_SPRITES_DRIVES 5 // Nombre de sprites de drives
#define LARGEUR_SPRITE_DRIVE 7 // Largeur d'un sprite de drive en pixels
#define HAUTEUR_SPRITE_DRIVE 7 // Hauteur d'un sprite de drive en pixels
#define NB_SPRITES_PINCEAU 48 // Nombre de sprites de pinceau
#define NB_TRAMES_PREDEFINIES 12 // Nombre de trames prdfinies
#define TAILLE_PILE_OPERATIONS 16 // Nombre maximum d'lments utiliss par les oprations
#define TAILLE_MAXI_PATH 37 // Taille maximum affichable du rpertoire courant dans les fenˆtres du fileselect
#define NB_TRAMES_PREDEFINIES 12 // Nombre de trames prédéfinies
#define TAILLE_PILE_OPERATIONS 16 // Nombre maximum d'éléments utilisés par les opérations
#define TAILLE_MAXI_PATH 37 // Taille maximum affichable du répertoire courant dans les fenêtres du fileselect
#define TAILLE_COMMENTAIRE 32 // Taille maxi des commentaires pour le PKM
#define TAILLE_NOM_CONSTRUCTEUR 24 // Taille maxi du nom de constructeur VESA dans la fenˆtre de stats.
#define TAILLE_NOM_CONSTRUCTEUR 24 // Taille maxi du nom de constructeur VESA dans la fenêtre de stats.
#define NB_PAGES_UNDO_MAX 99 // Nombre maximal de pages d'undo
#define FACTEUR_DE_ZOOM_PAR_DEFAUT 4 // Facteur de zoom initial
#define NB_SECTIONS_AIDE 3 // Nombre de sections dans l'aide
// On impose l'allocation dynamique des pages de backups de conserver un
// minimum de 256 Ko pour que le reste du programme puisse continuer
// On impose à l'allocation dynamique des pages de backups de conserver un
// minimum de 256 Ko pour que le reste du programme puisse continuer à
// fonctionner.
#define QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER (256*1024)
#define A_GAUCHE 1 // Indique une direction (ou click) gauche
#define A_DROITE 2 // Indique une direction (ou click) droite
#define A_GAUCHE 1 // Indique une direction (ou click) à gauche
#define A_DROITE 2 // Indique une direction (ou click) à droite
#define LARGEUR_BARRE_SPLIT 6 // [ Û±±° ]
#define PROPORTION_SPLIT 0.3 // proportion de la zone non-zoome en largeur par rapport … l'cran
#define NB_PIXELS_ZOOMES_MIN 4 // Nombre minimal de pixels zooms en largeur (Note: En dessous de 4, on ne peut plus scroller!)
#define PROPORTION_SPLIT 0.3 // proportion de la zone non-zoomée en largeur par rapport à l'écran
#define NB_PIXELS_ZOOMES_MIN 4 // Nombre minimal de pixels zoomés en largeur (Note: En dessous de 4, on ne peut plus scroller!)
// Les diffrents formats de fichiers:
// Les différents formats de fichiers:
#define NB_FORMATS_CONNUS 12 // Nombre de formats connus (devrait ˆtre la valeur maximale de NB_FORMATS_LOAD et NB_FORMATS_SAVE, mais plus gnralement: Card({NB_FORMATS_LOAD} UNION {NB_FORMATS_SAVE}))
#define NB_FORMATS_CONNUS 12 // Nombre de formats connus (devrait être la valeur maximale de NB_FORMATS_LOAD et NB_FORMATS_SAVE, mais plus généralement: Card({NB_FORMATS_LOAD} UNION {NB_FORMATS_SAVE}))
#define NB_FORMATS_LOAD 12 // Nombre de formats que l'on sait charger
#define NB_FORMATS_SAVE 12 // Nombre de formats que l'on sait sauver
@ -69,21 +68,21 @@ enum FORMATS_RECONNUS
{
FORMAT_PKM=1, // |
FORMAT_LBM, // |
FORMAT_GIF, // | Il faudra penser … rordonner
FORMAT_BMP, // | les donnes sur les formats dans
FORMAT_GIF, // | Il faudra penser à réordonner
FORMAT_BMP, // | les données sur les formats dans
FORMAT_PCX, // | GLOBAL.H si on modifie ces cons-
FORMAT_IMG, // |_ tantes.
FORMAT_SCx, // |
FORMAT_PI1, // | Elles reprsentent l'indice o—
FORMAT_PI1, // | Elles représentent l'indice o—
FORMAT_PC1, // | l'on doit aller piocher ces
FORMAT_CEL, // | donnes.
FORMAT_CEL, // | données.
FORMAT_KCF, // |
FORMAT_PAL // |
};
#define FORMAT_PAR_DEFAUT FORMAT_PKM // Format par dfaut (ah bon? oh!)
#define FORMAT_PAR_DEFAUT FORMAT_PKM // Format par défaut (ah bon? oh!)
// Les diffrentes erreurs:
// Les différentes erreurs:
enum CODES_D_ERREURS
{
@ -92,32 +91,32 @@ enum CODES_D_ERREURS
ERREUR_CFG_ABSENT, // Le fichier GFX2.CFG est absent
ERREUR_CFG_CORROMPU, // Mauvais fichier GFX2.CFG
ERREUR_CFG_ANCIEN, // Ancienne version du fichier GFX2.CFG
ERREUR_MEMOIRE, // Plus de mmoire
ERREUR_MEMOIRE, // Plus de mémoire
ERREUR_LIGNE_COMMANDE, // Erreur sur la ligne de commande
ERREUR_DRIVER_SOURIS, // Pas de driver souris install
ERREUR_MODE_VESA_INVALIDE, // Mode VESA demand sur la ligne de commande invalide
ERREUR_MODE_INTERDIT, // Mode demand sur la ligne de commande interdit (coch en noir)
ERREUR_DRIVER_SOURIS, // Pas de driver souris installé
ERREUR_MODE_VESA_INVALIDE, // Mode VESA demandé sur la ligne de commande invalide
ERREUR_MODE_INTERDIT, // Mode demandé sur la ligne de commande interdit (coché en noir)
ERREUR_NUMERO_MODE, // Erreur de choix de mode sur la ligne de commande
ERREUR_SAUVEGARDE_CFG, // Erreur en criture pour GFX2.CFG
ERREUR_REPERTOIRE_DISPARU, // Le rpertoire de lancement n'existe plus
ERREUR_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG
ERREUR_REPERTOIRE_DISPARU, // Le répertoire de lancement n'existe plus
ERREUR_INI_ABSENT, // Le fichier GFX2.INI est absent
ERREUR_INI_CORROMPU, // Le fichier GFX2.INI est corrompu
ERREUR_SAUVEGARDE_INI, // Le fichier GFX2.INI n'est pas inscriptible
ERREUR_SORRY_SORRY_SORRY // On le refera plus, promis
};
// Les diffrents types de modes vidos
// Les différents types de modes vidéos
enum TYPES_DE_MODES_VIDEO
{
MODE_SDL
/*MODE_MCGA,
MODE_X,
MODE_VESA, // Attention! Si on change la numrotation, il faut
MODE_VESA, // Attention! Si on change la numérotation, il faut
MODE_XVESA // que les 2 plus grandes valeurs soient ces 2 modes!*/
};
// Les diffrents modes vidos (avec leur nø d'ordre)
// Les différents modes vidéos (avec leur nø d'ordre)
enum MODES_VIDEO
{
@ -183,18 +182,18 @@ enum MODES_VIDEO
MODE_1024_768 // 59
};
// Les diffrentes catgories de bouton:
// Les différentes catégories de bouton:
enum FAMILLES_DE_BOUTONS
{
FAMILLE_OUTIL=1, // Outils de dessin
FAMILLE_INTERRUPTION, // Opration phmŠre
FAMILLE_INTERRUPTION, // Opération éphémŠre
FAMILLE_INSTANTANE, // Pif paf
FAMILLE_TOOLBAR, // Cache/Montre la barre d'outils
FAMILLE_EFFETS // Effets
};
// Les diffrentes formes de bouton:
// Les différentes formes de bouton:
enum FORMES_DE_BOUTONS
{
@ -204,7 +203,7 @@ enum FORMES_DE_BOUTONS
FORME_BOUTON_TRIANGLE_BAS_DROITE // Ex: Rectangles pleins
};
// Les diffrentes formes de curseur:
// Les différentes formes de curseur:
enum FORMES_DE_CURSEUR
{
@ -221,7 +220,7 @@ enum FORMES_DE_CURSEUR
FORME_CURSEUR_ROTATE_XOR
};
// Les diffrentes formes de pinceaux (les types de pinceaux doivent ˆtre au dbut)
// Les différentes formes de pinceaux (les types de pinceaux doivent être au début)
enum FORMES_DE_PINCEAUX
{
@ -237,18 +236,18 @@ enum FORMES_DE_PINCEAUX
FORME_PINCEAU_LOSANGE,
FORME_PINCEAU_ROND_TRAME,
FORME_PINCEAU_CARRE_TRAME,
FORME_PINCEAU_DIVERS,// Ce doit ˆtre le dernier des types de pinceaux, comme ‡a il indique le nombre de types de pinceaux (-1)
FORME_PINCEAU_POINT, // Utilis pour rduire de pinceau … 1 point dans certaines oprations
FORME_PINCEAU_DIVERS,// Ce doit être le dernier des types de pinceaux, comme ‡a il indique le nombre de types de pinceaux (-1)
FORME_PINCEAU_POINT, // Utilisé pour réduire de pinceau à 1 point dans certaines opérations
FORME_PINCEAU_BROSSE_COULEUR,
FORME_PINCEAU_BROSSE_MONOCHROME
};
// Les diffrents tats de bouton:
// Les différents états de bouton:
#define BOUTON_RELACHE 0
#define BOUTON_ENFONCE 1
// Les diffrents modes de Shade
// Les différents modes de Shade
enum MODES_DE_SHADE
{
@ -257,7 +256,7 @@ enum MODES_DE_SHADE
MODE_SHADE_NOSAT
};
// Les diffrents chunks du fichier .CFG
// Les différents chunks du fichier .CFG
enum CHUNKS_CFG
{
@ -272,7 +271,7 @@ enum CHUNKS_CFG
CHUNK_QUICK_SHADE
};
// Les diffrents types de lecteurs:
// Les différents types de lecteurs:
enum TYPES_DE_LECTEURS
{
@ -280,10 +279,10 @@ enum TYPES_DE_LECTEURS
DRIVE_FLOPPY_5_25, // 1: Diskette 5"¬
DRIVE_HDD, // 2: HDD
DRIVE_CDROM, // 3: CD-ROM
DRIVE_NETWORK // 4: Logique (rseau?)
DRIVE_NETWORK // 4: Logique (réseau?)
};
// Les diffrents boutons:
// Les différents boutons:
enum NUMEROS_DE_BOUTONS
{
@ -327,7 +326,7 @@ enum NUMEROS_DE_BOUTONS
BOUTON_CACHER
};
// Les actions des touches spciales
// Les actions des touches spéciales
enum ACTIONS_SPECIALES
{
@ -337,9 +336,9 @@ enum ACTIONS_SPECIALES
SPECIAL_MOUSE_RIGHT, // |
SPECIAL_CLICK_LEFT, // | Il faut garder
SPECIAL_CLICK_RIGHT, // | ces constantes
SPECIAL_NEXT_FORECOLOR, // | au dbut de la
SPECIAL_NEXT_FORECOLOR, // | au début de la
SPECIAL_PREVIOUS_FORECOLOR, // |_ liste car elles
SPECIAL_NEXT_BACKCOLOR, // | sont rutilises
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 !!!
@ -394,7 +393,7 @@ enum ACTIONS_SPECIALES
SPECIAL_MASK_MENU, // | SPECIAL_SHADE_MODE, et que le
SPECIAL_GRID_MODE, // | dernier soit SPECIAL_TILING_MENU,
SPECIAL_GRID_MENU, // |_ et que seuls des effets soient
SPECIAL_SIEVE_MODE, // | dfinis entre ces deux l… car
SPECIAL_SIEVE_MODE, // | définis entre ces deux là car
SPECIAL_SIEVE_MENU, // | des tests sur cet intervalle sont
SPECIAL_COLORIZE_MODE, // | faits dans le moteur.
SPECIAL_COLORIZE_MENU, // |
@ -405,15 +404,15 @@ enum ACTIONS_SPECIALES
SPECIAL_TILING_MENU // |
};
// Dfinition des oprations:
// Définition des opérations:
enum OPERATIONS
{
OPERATION_DESSIN_CONTINU, // Dessin la main continu
OPERATION_DESSIN_DISCONTINU, // Dessin la main discontinu
OPERATION_DESSIN_POINT, // Dessin la main point par point
OPERATION_DESSIN_CONTINU, // Dessin à la main continu
OPERATION_DESSIN_DISCONTINU, // Dessin à la main discontinu
OPERATION_DESSIN_POINT, // Dessin à la main point par point
OPERATION_LIGNE, // Lignes
OPERATION_K_LIGNE, // Lignes relies
OPERATION_K_LIGNE, // Lignes reliées
OPERATION_LIGNES_CENTREES, // Lignes concentriques
OPERATION_RECTANGLE_VIDE, // Rectangle vide
OPERATION_RECTANGLE_PLEIN, // Rectangle plein
@ -425,18 +424,18 @@ enum OPERATIONS
OPERATION_REMPLACER, // Remplacer couleur
OPERATION_PRISE_BROSSE, // Prise de brosse rectangulaire
OPERATION_POLYBROSSE, // Prise d'une brosse multiforme
OPERATION_PIPETTE, // Rcupration d'une couleur
OPERATION_LOUPE, // Positionnement de la fenˆtre de loupe
OPERATION_COURBE_3_POINTS, // Courbe 3 points
OPERATION_COURBE_4_POINTS, // Courbe 4 points
OPERATION_PIPETTE, // Récupération d'une couleur
OPERATION_LOUPE, // Positionnement de la fenêtre de loupe
OPERATION_COURBE_3_POINTS, // Courbe à 3 points
OPERATION_COURBE_4_POINTS, // Courbe à 4 points
OPERATION_SPRAY, // Spray
OPERATION_POLYGONE, // Polygone
OPERATION_POLYFORM, // Polyforme
OPERATION_POLYFILL, // Polyfill
OPERATION_FILLED_POLYFORM, // Polyforme rempli
OPERATION_SCROLL, // Scroll
OPERATION_CERCLE_DEGRADE, // Cercles dgrads
OPERATION_ELLIPSE_DEGRADEE, // Ellipses dgrades
OPERATION_CERCLE_DEGRADE, // Cercles dégradés
OPERATION_ELLIPSE_DEGRADEE, // Ellipses dégradées
OPERATION_TOURNER_BROSSE, // Faire tourner brosse
OPERATION_ETIRER_BROSSE, // Etirer brosse
OPERATION_DEFORMER_BROSSE, // Deformer brosse

View File

@ -276,4 +276,85 @@ long Freespace(byte Numero_de_lecteur)
{
puts("Freespace non implémenté!\n");
return 0;
}
}
byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne)
{
puts("Couleur_ILBM_line non implémenté!\n");
return 0;
}
void Palette_256_to_64(T_Palette Palette)
{
puts("Palette_256_to_64 non implémenté!\n");
}
void Palette_64_to_256(T_Palette Palette)
{
puts("Palette_64_to_256 non implémenté!\n");
}
byte Effet_Colorize_interpole (word X,word Y,byte Couleur)
{
puts("Effet_Colorize_interpole non implémenté!\n");
return 0;
}
byte Effet_Colorize_additif (word X,word Y,byte Couleur)
{
puts("Effet_Colorize_additif non implémenté!\n");
return 0;
}
byte Effet_Colorize_soustractif(word X,word Y,byte Couleur)
{
puts("Effet_Colorize_soustractif non implémenté!\n");
return 0;
}
void Tester_chrono(void)
{
puts("Tester_chrono non implémenté!\n");
}
void Flip_Y_LOWLEVEL(void)
{
puts("Flip_Y_LOWLEVEL non implémenté!\n");
}
void Flip_X_LOWLEVEL(void)
{
puts("Flip_X_LOWLEVEL non implémenté!\n");
}
void Rotate_180_deg_LOWLEVEL(void)
{
puts("Rotate_180_deg_LOWLEVEL non implémenté!\n");
}
void Tempo_jauge(byte Vitesse)
{
puts("Tempo_jauge non implémenté!\n");
}
byte Meilleure_couleur_sans_exclusion(byte Rouge,byte Vert,byte Bleu)
{
puts("Meilleure_couleur_sans_exclusion non implémenté!\n");
return 0;
}
void Set_color(byte Couleur, byte Rouge, byte Vert, byte Bleu)
{
puts("Set_color non implémenté!\n");
}
void Scroll_picture(short Decalage_X,short Decalage_Y)
{
puts("Scroll_picture non implémenté!\n");
}
byte Get_key(void)
{
puts("Get_key non implémenté!\n");
return 0;
}

View File

@ -22,3 +22,8 @@ int filelength(int fichier)
printf("filelenght non implémenté!\n");
return 0;
}
void itoa(int source,char* dest, int longueur)
{
printf("itoa non implémenté!\n");
}

View File

@ -8,4 +8,7 @@ struct find_t {
int filelength(int);
void itoa(int source,char* dest, int longueur);
/* Integer TO Ascii */
#define _A_SUBDIR 1

View File

@ -1,9 +1,9 @@
CC = gcc
COPT = -Wall -Os -c
LOPT = -lSDL
LOPT = -lSDL -o grafx2
gfx2 : main.o init.o graph.o sdlscreen.o divers.o special.o boutons.o palette.o aide.o operatio.o loadsave.o readline.o moteur.o files.o op_c.o linux.o
$(CC) $(LOPT) main.o graph.o divers.o init.o files.o linux.o loadsave.o boutons.o moteur.o sdlscreen.o aide.o palette.o -o grafx2
gfx2 : main.o init.o graph.o sdlscreen.o divers.o special.o boutons.o palette.o aide.o operatio.o loadsave.o readline.o moteur.o files.o op_c.o linux.o op_asm.o
$(CC) $(LOPT) main.o graph.o divers.o init.o files.o linux.o loadsave.o boutons.o moteur.o sdlscreen.o aide.o palette.o operatio.o op_c.o readline.o special.o op_asm.o
main.o : graph.o const.h struct.h global.h graph.h divers.h init.h boutons.h moteur.h files.h loadsave.h main.c readini.h saveini.h
$(CC) $(COPT) main.c
@ -47,6 +47,9 @@ loadsave.o : const.h struct.h global.h divers.h graph.h loadsave.c pages.h op_c.
op_c.o : struct.h op_c.c op_c.h op_asm.h
$(CC) $(COPT) op_c.c
op_asm.o : op_asm.h op_asm.c
$(CC) $(COPT) op_asm.c
sdlscreen.o : sdlscreen.c sdlscreen.h
$(CC) $(COPT) sdlscreen.c

176
moteur.c
View File

@ -17,13 +17,13 @@
#include "operatio.h"
#include "shade.h"
// On dclare mchamment le prototype de Erreur pour viter de faire un
// On déclare méchamment le prototype de Erreur pour éviter de faire un
// fichier "main.h":
void Erreur(int Code);
//---------- Annuler les effets des modes de dessin (sauf la grille) ---------
// Variables mmorisants les anciens effets
// Variables mémorisants les anciens effets
byte Shade_Mode_avant_annulation;
byte Quick_shade_Mode_avant_annulation;
@ -272,22 +272,22 @@ void Tracer_cadre_de_bouton_du_menu(byte Numero,byte Enfonce)
}
//---------------------- Dsenclenchement d'un bouton ------------------------
//---------------------- Désenclenchement d'un bouton ------------------------
void Desenclencher_bouton(int Numero)
{
if (Bouton[Numero].Enfonce)
{
// On affiche le cadre autour du bouton de fa‡on … ce qu'il paraisse relƒch
// On affiche le cadre autour du bouton de fa‡on à ce qu'il paraisse relƒché
Tracer_cadre_de_bouton_du_menu(Numero,BOUTON_RELACHE);
// On considŠre que le bouton est relƒch
// On considère que le bouton est relƒché
Bouton[Numero].Enfonce=BOUTON_RELACHE;
// On appelle le dsenclenchement particulier au bouton:
// On appelle le désenclenchement particulier au bouton:
Bouton[Numero].Desenclencher();
}
}
//-Enclenchement d'un bouton (et dsenclenchement de ceux de la mˆme famille)-
//-Enclenchement d'un bouton (et désenclenchement de ceux de la même famille)-
void Enclencher_bouton(int Numero,byte Click)
{
int Famille;
@ -295,50 +295,50 @@ void Enclencher_bouton(int Numero,byte Click)
Effacer_curseur();
// On note dj… la famille du bouton (La "Famiglia" c'est sacr)
// On note déjà la famille du bouton (La "Famiglia" c'est sacré)
Famille=Bouton[Numero].Famille;
switch (Famille)
{
case FAMILLE_TOOLBAR: // On ne fait rien (on prserve les interruptions)
case FAMILLE_TOOLBAR: // On ne fait rien (on préserve les interruptions)
break;
case FAMILLE_INTERRUPTION: // Petit cas spcial dans la famille "Interruption":
case FAMILLE_INTERRUPTION: // Petit cas spécial dans la famille "Interruption":
if ((Numero!=BOUTON_LOUPE) || (!Loupe_Mode))
// Pour chaque bouton:
for (Curseur=0; Curseur<NB_BOUTONS; Curseur++)
// S'il est de la mˆme famille
// S'il est de la même famille
if (
(Curseur!=Numero) &&
(Bouton[Curseur].Famille==FAMILLE_INTERRUPTION) &&
( (Curseur!=BOUTON_LOUPE) ||
((Curseur==BOUTON_LOUPE) && (!Loupe_Mode)) )
)
// Alors on dsenclenche le bouton
// Alors on désenclenche le bouton
Desenclencher_bouton(Curseur);
break;
default:
// On dsenclenche D'ABORD les interruptions
// On désenclenche D'ABORD les interruptions
// Pour chaque bouton:
for (Curseur=0; Curseur<NB_BOUTONS; Curseur++)
// S'il est de la mˆme famille
// S'il est de la même famille
if ( (Curseur!=Numero)
&& (Bouton[Curseur].Famille==FAMILLE_INTERRUPTION)
// Et que ce n'est pas la loupe, ou alors qu'on n'est pas en mode loupe
&& (!(Loupe_Mode && (Curseur==BOUTON_LOUPE))) )
// Alors on dsenclenche le bouton
// Alors on désenclenche le bouton
Desenclencher_bouton(Curseur);
// Pour chaque bouton:
for (Curseur=0; Curseur<NB_BOUTONS; Curseur++)
// S'il est de la mˆme famille
// S'il est de la même famille
if ( (Curseur!=Numero)
&& (Bouton[Curseur].Famille==Famille) )
// Alors on dsenclenche le bouton
// Alors on désenclenche le bouton
Desenclencher_bouton(Curseur);
}
// On affiche le cadre autour du bouton de fa‡on … ce qu'il paraisse enfonc
// On affiche le cadre autour du bouton de fa‡on à ce qu'il paraisse enfoncé
Tracer_cadre_de_bouton_du_menu(Numero,BOUTON_ENFONCE);
Afficher_curseur();
@ -346,7 +346,7 @@ void Enclencher_bouton(int Numero,byte Click)
// On attend ensuite que l'utilisateur lƒche son bouton:
Attendre_fin_de_click();
// On considŠre que le bouton est enfonc
// On considère que le bouton est enfoncé
Bouton[Numero].Enfonce=BOUTON_ENFONCE;
// Puis on se contente d'appeler l'action correspondant au bouton:
@ -358,8 +358,8 @@ void Enclencher_bouton(int Numero,byte Click)
//--- Dplacer la barre de sparation entre la partie zoome et la partie ----
//------------------ non-zoome lorsqu'on est en mode loupe ------------------
//--- Déplacer la barre de séparation entre la partie zoomée et la partie ----
//------------------ non-zoomée lorsqu'on est en mode loupe ------------------
void Deplacer_Split(void)
{
short Ancien_Split=Principal_Split;
@ -422,17 +422,17 @@ void Gestion_principale(void)
static byte Temp_color;
static short Old_MX=0;
static short Old_MY=0;
int Indice_bouton; // Numro de bouton de menu en cours
int Indice_bouton_precedent=0; // Numro de bouton de menu sur lequel on tait prcdemment
byte Blink; // L'opration demande un effacement du curseur
int Bouton_Touche; // Bouton … enclencher d'aprŠs la touche de raccourci enfonce
byte Bouton_Cote; // C“t du bouton … enclencher d'aprŠs la touche de raccourci enfonce
int Indice_Touche; // Indice du tableau de touches spciales correspondant … la touche enfonce
int Indice_bouton; // Numéro de bouton de menu en cours
int Indice_bouton_precedent=0; // Numéro de bouton de menu sur lequel on était précédemment
byte Blink; // L'opération demande un effacement du curseur
int Bouton_Touche; // Bouton à enclencher d'après la touche de raccourci enfoncée
byte Bouton_Cote; // C“té du bouton à enclencher d'après la touche de raccourci enfoncée
int Indice_Touche; // Indice du tableau de touches spéciales correspondant à la touche enfoncée
char Chaine[25];
byte Temp;
// Au dmarrage, on sait que le curseur n'est pas dans le menu
// Au démarrage, on sait que le curseur n'est pas dans le menu
Curseur_dans_menu_precedent=0;
@ -446,7 +446,7 @@ void Gestion_principale(void)
{
for (Indice_Touche=0;(Indice_Touche<NB_TOUCHES_SPECIALES) && (Touche!=Config_Touche[Indice_Touche]);Indice_Touche++);
// Gestion des touches spciales:
// Gestion des touches spéciales:
if (Indice_Touche>SPECIAL_CLICK_RIGHT)
switch(Indice_Touche)
{
@ -534,7 +534,7 @@ void Gestion_principale(void)
case SPECIAL_PREVIOUS_BACKCOLOR : // Previous background color
Special_Previous_backcolor();
break;
case SPECIAL_RETRECIR_PINCEAU: // Rtrcir le pinceau
case SPECIAL_RETRECIR_PINCEAU: // Rétrécir le pinceau
Retrecir_pinceau();
break;
case SPECIAL_GROSSIR_PINCEAU: // Grossir le pinceau
@ -756,7 +756,7 @@ void Gestion_principale(void)
Indice_bouton=NB_BOUTONS;
}
}
// AprŠs avoir scrut les boutons, si la recherche a t fructueuse,
// Après avoir scruté les boutons, si la recherche a été fructueuse,
// on lance le bouton.
if (Bouton_Touche!=-1)
{
@ -765,8 +765,8 @@ void Gestion_principale(void)
}
}
// Si on a modifi un effet, il faut rafficher le bouton des effets en
// consquence.
// Si on a modifié un effet, il faut rafficher le bouton des effets en
// conséquence.
if ((Indice_Touche>=SPECIAL_SHADE_MODE)
&& (Indice_Touche<=SPECIAL_TILING_MENU))
{
@ -801,7 +801,7 @@ void Gestion_principale(void)
{
if (Menu_visible)
{
// On nettoie les coordonnes
// On nettoie les coordonnées
Effacer_curseur();
Block(18*Menu_Facteur_X,Menu_Ordonnee_Texte,192*Menu_Facteur_X,Menu_Facteur_Y<<3,CM_Clair);
Afficher_curseur();
@ -923,16 +923,16 @@ void Gestion_principale(void)
//////////////////////////////////////////////////////////////////////////////
// Diffrentes fonctions d'affichage utilises dans les fenˆtres //
// Différentes fonctions d'affichage utilisées dans les fenêtres //
//////////////////////////////////////////////////////////////////////////////
//----------------------- Tracer une fenˆtre d'options -----------------------
//----------------------- Tracer une fenêtre d'options -----------------------
void Ouvrir_fenetre(word Largeur,word Hauteur, char * Titre)
// Lors de l'appel … cette procdure, la souris doit ˆtre affiche.
// En sortie de cette procedure, la souris est efface.
// Lors de l'appel à cette procédure, la souris doit être affichée.
// En sortie de cette procedure, la souris est effacée.
{
word i,j;
//word i,j;
Effacer_curseur();
@ -941,15 +941,15 @@ void Ouvrir_fenetre(word Largeur,word Hauteur, char * Titre)
Fenetre_Largeur=Largeur;
Fenetre_Hauteur=Hauteur;
// Positionnement de la fenˆtre
// Positionnement de la fenêtre
Fenetre_Pos_X=(Largeur_ecran-(Largeur*Menu_Facteur_X))>>1;
Fenetre_Pos_Y=(Hauteur_ecran-(Hauteur*Menu_Facteur_Y))>>1;
// Fenˆtre grise
// Fenêtre grise
Block(Fenetre_Pos_X+(Menu_Facteur_X<<1),Fenetre_Pos_Y+(Menu_Facteur_Y<<1),(Largeur-4)*Menu_Facteur_X,(Hauteur-4)*Menu_Facteur_Y,CM_Clair);
// -- Cadre de la fenˆtre ----- --- -- - -
// -- Cadre de la fenêtre ----- --- -- - -
// Cadre noir puis en relief
Fenetre_Afficher_cadre_mono(0,0,Largeur,Hauteur,CM_Noir);
@ -970,22 +970,22 @@ void Ouvrir_fenetre(word Largeur,word Hauteur, char * Titre)
Cacher_pinceau_avant_fenetre=Cacher_pinceau;
Cacher_pinceau=1;
// Initialisation des listes de boutons de la fenˆtre
// Initialisation des listes de boutons de la fenêtre
Fenetre_Liste_boutons_normal =NULL;
Fenetre_Liste_boutons_palette =NULL;
Fenetre_Liste_boutons_scroller=NULL;
Fenetre_Liste_boutons_special =NULL;
Nb_boutons_fenetre =0;
// On (re)passe dans le clavier de dpart (fran‡ais pour nous)
// On (re)passe dans le clavier de départ (fran‡ais pour nous)
Clavier_de_depart();
}
//----------------------- Fermer une fenˆtre d'options -----------------------
//----------------------- Fermer une fenêtre d'options -----------------------
void Fermer_fenetre(void)
// Lors de l'appel … cette procedure, la souris doit ˆtre affiche.
// En sortie de cette procedure, la souris est efface.
// Lors de l'appel à cette procedure, la souris doit être affichée.
// En sortie de cette procedure, la souris est effacée.
{
struct Fenetre_Bouton_normal * Temp1;
struct Fenetre_Bouton_palette * Temp2;
@ -1022,7 +1022,7 @@ void Fermer_fenetre(void)
}
Une_fenetre_est_ouverte=0;
Curseur_dans_menu_precedent=0; // il faut rafficher le libell dans la barre
Curseur_dans_menu_precedent=0; // il faut rafficher le libellé dans la barre
// d'outils si le curseur est sur une ic“ne.
Calculer_coordonnees_pinceau();
@ -1037,12 +1037,12 @@ void Fermer_fenetre(void)
Touche=0;
Mouse_K=0;
// On (re)passe dans le clavier amricain
// On (re)passe dans le clavier américain
Clavier_americain();
}
//---------------- Dessiner un bouton normal dans une fenˆtre ----------------
//---------------- Dessiner un bouton normal dans une fenêtre ----------------
void Fenetre_Dessiner_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Hauteur,
char * Titre,byte Lettre_soulignee,byte Clickable)
@ -1074,20 +1074,20 @@ void Fenetre_Dessiner_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Haut
}
// -- Bouton normal enfonc dans la fenˆtre --
// -- Bouton normal enfoncé dans la fenêtre --
void Fenetre_Enfoncer_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Hauteur)
{
Fenetre_Afficher_cadre_general(Pos_X,Pos_Y,Largeur,Hauteur,CM_Fonce,CM_Noir,CM_Fonce,CM_Fonce,CM_Noir);
}
// -- Bouton normal dsenfonc dans la fenˆtre --
// -- Bouton normal désenfoncé dans la fenêtre --
void Fenetre_Desenfoncer_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Hauteur)
{
Fenetre_Afficher_cadre_bombe(Pos_X,Pos_Y,Largeur,Hauteur);
}
//--------------- Dessiner un bouton palette dans une fenˆtre ----------------
//--------------- Dessiner un bouton palette dans une fenêtre ----------------
void Fenetre_Dessiner_bouton_palette(word Pos_X,word Pos_Y)
{
word Couleur;
@ -1107,7 +1107,7 @@ void Fenetre_Effacer_tags(void)
word Origine_Y;
word Pos_X;
word Pos_fenetre_X;
word Pos_fenetre_Y;
//word Pos_fenetre_Y;
Origine_X=Fenetre_Pos_X+(Fenetre_Liste_boutons_palette->Pos_X+3)*Menu_Facteur_X;
Origine_Y=Fenetre_Pos_Y+(Fenetre_Liste_boutons_palette->Pos_Y+3)*Menu_Facteur_Y;
@ -1121,9 +1121,9 @@ void Tagger_intervalle_palette(byte Debut,byte Fin)
{
word Origine_X;
word Origine_Y;
word Pos_X;
//word Pos_X;
word Pos_Y;
word Pos_fenetre_X;
//word Pos_fenetre_X;
word Pos_fenetre_Y;
word Indice;
@ -1149,10 +1149,10 @@ void Tagger_intervalle_palette(byte Debut,byte Fin)
if (Debut!=Fin)
{
// On complŠte le 1er TAG
// On complète le 1er TAG
Pixel_dans_fenetre(Origine_X+1,Origine_Y+4,CM_Noir);
// On affiche le 2Šme TAG
// On affiche le 2ème TAG
Origine_X=(Fenetre_Liste_boutons_palette->Pos_X+3)+(Fin>>4)*10;
Origine_Y=(Fenetre_Liste_boutons_palette->Pos_Y+3)+(Fin&15)* 5;
for (Pos_Y=0,Pos_fenetre_Y=Origine_Y; Pos_Y<5; Pos_Y++,Pos_fenetre_Y++)
@ -1161,13 +1161,13 @@ void Tagger_intervalle_palette(byte Debut,byte Fin)
Pixel_dans_fenetre(Origine_X+1,Pos_fenetre_Y,CM_Noir);
Pixel_dans_fenetre(Origine_X+2,Origine_Y+2,CM_Noir);
// On TAG toutes les couleurs intermdiaires
// On TAG toutes les couleurs intermédiaires
for (Indice=Debut+1;Indice<Fin;Indice++)
{
Block(Fenetre_Pos_X+(Fenetre_Liste_boutons_palette->Pos_X+3+((Indice>>4)*10))*Menu_Facteur_X,
Fenetre_Pos_Y+(Fenetre_Liste_boutons_palette->Pos_Y+3+((Indice&15)* 5))*Menu_Facteur_Y,
Menu_Facteur_X*2,Menu_Facteur_Y*5,CM_Noir);
// On efface l'ventuelle pointe d'une ancienne extrmit de l'intervalle
// On efface l'éventuelle pointe d'une ancienne extrémité de l'intervalle
Pixel_dans_fenetre(Fenetre_Liste_boutons_palette->Pos_X+5+((Indice>>4)*10),
Fenetre_Liste_boutons_palette->Pos_Y+5+((Indice&15)* 5),
CM_Clair);
@ -1176,7 +1176,7 @@ void Tagger_intervalle_palette(byte Debut,byte Fin)
}
//------------------ Dessiner un scroller dans une fenˆtre -------------------
//------------------ Dessiner un scroller dans une fenêtre -------------------
void Calculer_hauteur_curseur_jauge(struct Fenetre_Bouton_scroller * Enreg)
{
@ -1222,7 +1222,7 @@ void Fenetre_Dessiner_bouton_scroller(struct Fenetre_Bouton_scroller * Enreg)
}
//--------------- Dessiner une zone de saisie dans une fenˆtre ---------------
//--------------- Dessiner une zone de saisie dans une fenêtre ---------------
void Fenetre_Dessiner_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres)
{
@ -1239,7 +1239,7 @@ void Fenetre_Contenu_bouton_saisie(struct Fenetre_Bouton_special * Enreg, char *
//------ Rajout d'un bouton … la liste de ceux prsents dans la fenˆtre ------
//------ Rajout d'un bouton à la liste de ceux présents dans la fenêtre ------
void Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y,
word Largeur, word Hauteur,
@ -1336,12 +1336,12 @@ void Fenetre_Definir_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracte
//////////////////////////////////////////////////////////////////////////////
// //
// Mini-MOTEUR utilis dans les fenˆtres (menus des boutons...) //
// Mini-MOTEUR utilisé dans les fenêtres (menus des boutons...) //
// //
//////////////////////////////////////////////////////////////////////////////
// -- Indique si on a cliqu dans une zone dfinie par deux points extremes --
// -- Indique si on a cliqué dans une zone définie par deux points extremes --
byte Fenetre_click_dans_zone(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y)
{
short Pos_X,Pos_Y;
@ -1357,7 +1357,7 @@ byte Fenetre_click_dans_zone(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y
// --- Attend que l'on clique dans la palette pour renvoyer la couleur choisie
// ou bien renvoie -1 si on a annul l'action pas click-droit ou Escape ------
// ou bien renvoie -1 si on a annulé l'action pas click-droit ou Escape ------
short Attendre_click_dans_palette(struct Fenetre_Bouton_palette * Enreg)
{
short Debut_X=Enreg->Pos_X+5;
@ -1420,7 +1420,7 @@ short Attendre_click_dans_palette(struct Fenetre_Bouton_palette * Enreg)
// -------------- Rcupration d'une couleur derriŠre un menu ----------------
// -------------- Récupération d'une couleur derrière un menu ----------------
void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click)
{
short Largeur=Fenetre_Largeur*Menu_Facteur_X;
@ -1434,7 +1434,7 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click)
byte Cacher_curseur_avant_recuperation;
if (Buffer=(byte *) malloc(Largeur*Hauteur))
if ((Buffer=(byte *) malloc(Largeur*Hauteur)))
{
Effacer_curseur();
@ -1455,7 +1455,7 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click)
Forme_curseur=FORME_CURSEUR_CIBLE_PIPETTE;
B=Cacher_pinceau;
Cacher_pinceau=1;
C=-1; // Couleur pointe: au dbut aucune, comme ‡a on initialise tout
C=-1; // Couleur pointée: au début aucune, comme ‡a on initialise tout
if (Menu_visible_avant_fenetre)
Print_dans_menu(TITRE_BOUTON[BOUTON_CHOIX_COL],0);
@ -1471,7 +1471,7 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click)
A=Lit_pixel(Mouse_X,Mouse_Y);
if (A!=C)
{
C=A; // Mise … jour de la couleur pointe
C=A; // Mise à jour de la couleur pointée
if (Menu_visible_avant_fenetre)
{
sprintf(Chaine,"%d",A);
@ -1531,7 +1531,7 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click)
// ------------ Opration de dplacement de la fenˆtre … l'cran -------------
// ------------ Opération de déplacement de la fenêtre à l'écran -------------
void Deplacer_fenetre(short Dx, short Dy)
{
short Nouveau_X=Mouse_X-Dx;
@ -1546,7 +1546,7 @@ void Deplacer_fenetre(short Dx, short Dy)
byte * Buffer;
if (Buffer=(byte *) malloc(Largeur*Hauteur))
if ((Buffer=(byte *) malloc(Largeur*Hauteur)))
{
Effacer_curseur();
for (Indice=0; Indice<Hauteur; Indice++)
@ -1631,7 +1631,7 @@ void Deplacer_fenetre(short Dx, short Dy)
// --- Renvoie le numro du bouton clicke (-1:hors de la fenˆtre, 0:aucun) ---
// --- Renvoie le numéro du bouton clicke (-1:hors de la fenêtre, 0:aucun) ---
short Fenetre_Numero_bouton_clicke(void)
{
struct Fenetre_Bouton_normal * Temp1;
@ -1639,7 +1639,7 @@ short Fenetre_Numero_bouton_clicke(void)
struct Fenetre_Bouton_scroller * Temp3;
struct Fenetre_Bouton_special * Temp4;
long Hauteur_Curseur_jauge;
//long Hauteur_Curseur_jauge;
long Hauteur_maxi_jauge;
@ -1670,12 +1670,12 @@ short Fenetre_Numero_bouton_clicke(void)
}
}
// Test du click sur les barres de dfilement
// Test du click sur les barres de défilement
for (Temp3=Fenetre_Liste_boutons_scroller; Temp3; Temp3=Temp3->Next)
{
if (Fenetre_click_dans_zone(Temp3->Pos_X,Temp3->Pos_Y,Temp3->Pos_X+10,Temp3->Pos_Y+Temp3->Hauteur-1))
{
// Bouton flŠche Haut
// Bouton flèche Haut
if (Fenetre_click_dans_zone(Temp3->Pos_X,Temp3->Pos_Y,Temp3->Pos_X+10,Temp3->Pos_Y+10))
{
Effacer_curseur();
@ -1700,10 +1700,10 @@ short Fenetre_Numero_bouton_clicke(void)
Afficher_curseur();
}
else
// Bouton flŠche Bas
// Bouton flèche Bas
if (Fenetre_click_dans_zone(Temp3->Pos_X,Temp3->Pos_Y+Temp3->Hauteur-11,Temp3->Pos_X+10,Temp3->Pos_Y+Temp3->Hauteur-1))
{
Effacer_Curseur();
Effacer_curseur();
Fenetre_Enfoncer_bouton_normal(Temp3->Pos_X,Temp3->Pos_Y+Temp3->Hauteur-11,11,11);
if (Temp3->Position+Temp3->Nb_visibles<Temp3->Nb_elements)
@ -1716,13 +1716,13 @@ short Fenetre_Numero_bouton_clicke(void)
else
Fenetre_Attribut1=0;
Afficher_Curseur();
Afficher_curseur();
Tempo_jauge((Mouse_K==1)? Config.Valeur_tempo_jauge_gauche : Config.Valeur_tempo_jauge_droite);
Effacer_Curseur();
Effacer_curseur();
Fenetre_Desenfoncer_bouton_normal(Temp3->Pos_X,Temp3->Pos_Y+Temp3->Hauteur-11,11,11);
Afficher_Curseur();
Afficher_curseur();
}
else
// Jauge
@ -1754,9 +1754,9 @@ short Fenetre_Numero_bouton_clicke(void)
{
Temp3->Position=Fenetre_Attribut2;
Fenetre_Attribut1=3;
Effacer_Curseur();
Effacer_curseur();
Fenetre_Dessiner_jauge(Temp3);
Afficher_Curseur();
Afficher_curseur();
}
else
// Si le curseur de la jauge ne bouge pas:
@ -1775,7 +1775,7 @@ short Fenetre_Numero_bouton_clicke(void)
}
}
// Test du click sur une zone spciale
// Test du click sur une zone spéciale
for (Temp4=Fenetre_Liste_boutons_special; Temp4; Temp4=Temp4->Next)
{
if (Fenetre_click_dans_zone(Temp4->Pos_X,Temp4->Pos_Y,Temp4->Pos_X+Temp4->Largeur-1,Temp4->Pos_Y+Temp4->Hauteur-1))
@ -1795,7 +1795,7 @@ short Fenetre_Numero_bouton_touche(void)
else
Fenetre_Attribut1=A_GAUCHE;
// On fait une premiŠre recherche
// On fait une première recherche
Temp=Fenetre_Liste_boutons_normal;
while (Temp!=NULL)
{
@ -1804,9 +1804,9 @@ short Fenetre_Numero_bouton_touche(void)
Temp=Temp->Next;
}
// Si la recherche n'a pas t fructueuse ET que l'utilisateur appuyait sur
// <Shift>, on regarde si un bouton ne pourrait pas ragir comme si <Shift>
// n'tait pas appuy.
// Si la recherche n'a pas été fructueuse ET que l'utilisateur appuyait sur
// <Shift>, on regarde si un bouton ne pourrait pas réagir comme si <Shift>
// n'était pas appuyé.
if (Fenetre_Attribut1==A_DROITE)
{
Temp=Fenetre_Liste_boutons_normal;

176
op_asm.c Normal file
View File

@ -0,0 +1,176 @@
#include "op_c.h"
#include "stdio.h"
void OPASM_DitherFS_6123(
Bitmap256 Destination, // Pointeur sur le 1er pixel de la ligne
Bitmap24B Source, // Idem mais sur la source
int Largeur, // Largeur à traiter, =(largeur_image-2), (>0)
struct Composantes * Palette, // Palette de l'image destination
byte * TableC, // Table de conversion 24b->8b
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_DitherFS_6123 non implémenté!\n");
}
void OPASM_DitherFS_623(
Bitmap256 Destination, // Pointeur sur le 1er pixel de la ligne
Bitmap24B Source, // Idem mais sur la source
int Largeur, // Largeur à traiter, =(largeur_image-2), (>0)
struct Composantes * Palette, // Palette de l'image destination
byte * TableC, // Table de conversion 24b->8b
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_DitherFS_623 non implémenté!\n");
}
void OPASM_DitherFS_12(
Bitmap256 Destination, // Pointeur sur le 1er pixel de la ligne
Bitmap24B Source, // Idem mais sur la source
int Largeur, // Largeur à traiter, =(largeur_image-2), (>0)
struct Composantes * Palette, // Palette de l'image destination
byte * TableC, // Table de conversion 24b->8b
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_DitherFS_12 non implémenté!\n");
}
void OPASM_DitherFS_6(
Bitmap256 Destination, // Pointeur sur le 1er pixel de la ligne
Bitmap24B Source, // Idem mais sur la source
int Largeur, // Largeur à traiter, =(largeur_image-1), (>0)
struct Composantes * Palette, // Palette de l'image destination
byte * TableC, // Table de conversion 24b->8b
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_DitherFS_6 non implémenté!\n");
}
void OPASM_DitherFS(
Bitmap256 Destination, // Pointeur sur le pixel
Bitmap24B Source, // Idem mais sur la source
byte * TableC, // Table de conversion 24b->8b
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_DitherFS non implémenté!\n");
}
void OPASM_DitherFS_2(
Bitmap256 Destination, // Pointeur sur le 1er pixel de la colonne
Bitmap24B Source, // Idem mais sur la source
int Hauteur, // Hauteur à traiter, =(hauteur_image-1), (>0)
struct Composantes * Palette, // Palette de l'image destination
byte * TableC, // Table de conversion 24b->8b
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_DitherFS_2 non implémenté!\n");
}
void OPASM_Split_cluster_Rouge(
int * tableO, // Table d'occurences
int rmin, // rmin << rdec
int vmin, // vmin << vdec
int bmin, // bmin << bdec
int rmax, // rmax << rdec
int vmax, // vmin << vdec
int bmax, // bmin << bdec
int rinc, // Incrémentation sur les rouges 1 << rdec
int vinc, // Incrémentation sur les verts 1 << vdec
int binc, // Incrémentation sur les bleus 1 << bdec
int limite, // Nombre d'occurences minimales
int rdec, // rdec
int * rouge) // Valeur du rouge atteignant la limite
{
puts("OPASM_Split_cluster_Rouge non implémenté!\n");
}
void OPASM_Split_cluster_Vert(
int * tableO, // Table d'occurences
int rmin, // rmin << rdec
int vmin, // vmin << vdec
int bmin, // bmin << bdec
int rmax, // rmax << rdec
int vmax, // vmin << vdec
int bmax, // bmin << bdec
int rinc, // Incrémentation sur les rouges 1 << rdec
int vinc, // Incrémentation sur les verts 1 << vdec
int binc, // Incrémentation sur les bleus 1 << bdec
int limite, // Nombre d'occurences minimales
int vdec, // vdec
int * vert) // Valeur du vert atteignant la limite
{
puts("OPASM_Split_cluster_Vert non implémenté!\n");
}
void OPASM_Split_cluster_Bleu(
int * tableO, // Table d'occurences
int rmin, // rmin << rdec
int vmin, // vmin << vdec
int bmin, // bmin << bdec
int rmax, // rmax << rdec
int vmax, // vmin << vdec
int bmax, // bmin << bdec
int rinc, // Incrémentation sur les rouges 1 << rdec
int vinc, // Incrémentation sur les verts 1 << vdec
int binc, // Incrémentation sur les bleus 1 << bdec
int limite, // Nombre d'occurences minimales
int bdec, // bdec
int * bleu) // Valeur du bleu atteignant la limite
{
puts("OPASM_Split_cluster_Bleu non implémenté!\n");
}
void OPASM_Compter_occurences(
int * Destination, // Pointeur sur la table d'occurences
Bitmap24B Source, // Pointeur sur l'image
int Taille, // Nombre de pixels dans l'image
byte ReducR, // 8-Nb_bits_rouges
byte ReducV, // 8-Nb_bits_verts
byte ReducB, // 8-Nb_bits_bleus
byte NbbV, // Nb_bits_verts
byte NbbB) // Nb_bits_bleus
{
puts("OPASM_Compter_occurences non implémenté!\n");
}
void OPASM_Analyser_cluster(
int * TableO, // Table d'occurences
int * rmin, // rmin << rdec
int * vmin, // vmin << vdec
int * bmin, // bmin << bdec
int * rmax, // rmax << rdec
int * vmax, // vmax << vdec
int * bmax, // bmax << bdec
int rdec, // rdec
int vdec, // vdec
int bdec, // bdec
int rinc, // Incrémentation sur les rouges 1 << rdec
int vinc, // Incrémentation sur les verts 1 << vdec
int binc, // Incrémentation sur les bleus 1 << bdec
int * Nbocc) // Nombre d'occurences
{
puts("OPASM_Analyser_cluster non implémenté!\n");
}

File diff suppressed because it is too large Load Diff

218
palette.c
View File

@ -6,7 +6,7 @@
#include "graph.h"
#include "moteur.h"
#include "readline.h"
#include "boutons.h"
// --------------------------- Menu des palettes -----------------------------
char * Libelle_reduction_palette[7]=
@ -15,7 +15,7 @@ char * Libelle_reduction_palette[7]=
};
void Modifier_rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
void Modifier_Rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
{
if (Nouvelle_teinte< 0)
Nouvelle_teinte= 0;
@ -27,7 +27,7 @@ void Modifier_rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
}
void Modifier_vert(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
void Modifier_Vert(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
{
if (Nouvelle_teinte< 0)
Nouvelle_teinte= 0;
@ -39,7 +39,7 @@ void Modifier_vert(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
}
void Modifier_bleu(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
void Modifier_Bleu(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
{
if (Nouvelle_teinte< 0)
Nouvelle_teinte= 0;
@ -52,8 +52,8 @@ void Modifier_bleu(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
void Degrader_palette(short Debut,short Fin,T_Palette Palette)
// Modifie la palette pour obtenir un dgrad de couleur entre les deux bornes
// passes en paramŠtre
// Modifie la palette pour obtenir un dégradé de couleur entre les deux bornes
// passées en paramŠtre
{
short Debut_Rouge;
short Debut_Vert;
@ -63,8 +63,8 @@ void Degrader_palette(short Debut,short Fin,T_Palette Palette)
short Fin_Bleu;
short Indice;
// On vrifie qu'il y ait assez de couleurs entre le dbut et la fin pour
// pouvoir faire un dgrad:
// On vérifie qu'il y ait assez de couleurs entre le début et la fin pour
// pouvoir faire un dégradé:
if ( (Debut!=Fin) && (Debut+1!=Fin) )
{
Debut_Rouge=Palette[Debut].R;
@ -124,14 +124,14 @@ void Remap_image_HIGH(byte * Table_de_conversion)
{
short Fin_X;
short Fin_Y;
short Fin_X_Loupe;
short Fin_Y_Loupe;
short Fin_X_Loupe=0;
short Fin_Y_Loupe=0;
// On s'occupe de faire la traduction dans l'image
Remap_general_LOWLEVEL(Table_de_conversion,Principal_Ecran,
Principal_Largeur_image,Principal_Hauteur_image,Principal_Largeur_image);
// On calcule les limites … l'cran de l'image
// On calcule les limites … l'écran de l'image
if (Principal_Hauteur_image>=Menu_Ordonnee_avant_fenetre)
Fin_Y=Menu_Ordonnee_avant_fenetre;
else
@ -163,14 +163,14 @@ void Remap_image_HIGH(byte * Table_de_conversion)
Fin_Y_Loupe=Principal_Hauteur_image*Loupe_Facteur;
}
// On doit maintenant faire la traduction … l'cran
// On doit maintenant faire la traduction … l'écran
Remap_zone_HIGH(0,0,Fin_X,Fin_Y,Table_de_conversion);
if (Loupe_Mode)
{
Remap_zone_HIGH(Principal_Split,0,Fin_X_Loupe,Fin_Y_Loupe,Table_de_conversion);
// Il peut encore rester le bas de la barre de split … remapper si la
// partie zoome ne descend pas jusqu'en bas...
// partie zoomée ne descend pas jusqu'en bas...
Remap_zone_HIGH(Principal_Split,Fin_Y_Loupe,
(Principal_Split+(LARGEUR_BARRE_SPLIT*Menu_Facteur_X)),
Menu_Ordonnee_avant_fenetre,Table_de_conversion);
@ -199,7 +199,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,
Utilisation_temporaire=(dword *)malloc(sizeof(dword)*256);
memcpy(Utilisation_temporaire,Utilisation_couleur,sizeof(dword)*256);
// On commence … initialiser la table de conversion … un tat o— elle ne
// On commence … initialiser la table de conversion … un état o— elle ne
// fera aucune conversion.
for (Pos_1=0;Pos_1<=255;Pos_1++)
Table_de_conversion[Pos_1]=Pos_1;
@ -232,7 +232,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,
else
if ((Debut_Bloc_2<Debut_Bloc_1) && (Fin_2>=Debut_Bloc_1))
{
// Le bloc destination dborde dans le bloc source.
// Le bloc destination déborde dans le bloc source.
for (Pos_1=Debut_Bloc_2,Pos_2=Debut_Bloc_1;Pos_1<=Fin_1;Pos_1++)
{
@ -262,7 +262,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,
Table_de_conversion[Pos_2]=Pos_1;
// On intervertit le nombre d'utilisation des couleurs pour garder une
// cohrence lors d'un ventuel "Zap unused".
// cohérence lors d'un éventuel "Zap unused".
Tempo =Utilisation_couleur[Pos_1];
Utilisation_couleur[Pos_1]=Utilisation_couleur[Pos_2];
Utilisation_couleur[Pos_2]=Tempo;
@ -285,8 +285,8 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,
free(Utilisation_temporaire);
free(Palette_temporaire);
// Maintenant, tous ces calculs doivent ˆtres pris en compte dans la
// palette, l'image et … l'cran.
// Maintenant, tous ces calculs doivent êtres pris en compte dans la
// palette, l'image et … l'écran.
Set_palette(Palette);
if (X_Swap)
@ -307,7 +307,7 @@ void Remettre_proprement_les_couleurs_du_menu(dword * Utilisation_couleur)
for (Indice=0; Indice<256; Indice++)
Table_de_remplacement[Indice]=Indice;
// On recherche les 4 couleurs les moins utilises dans l'image pour pouvoir
// On recherche les 4 couleurs les moins utilisées dans l'image pour pouvoir
// les remplacer par les nouvelles couleurs.
for (Indice2=0; Indice2<4; Indice2++)
for (Indice=255; Indice>=0; Indice--)
@ -318,11 +318,11 @@ void Remettre_proprement_les_couleurs_du_menu(dword * Utilisation_couleur)
Nouvelles[Indice2]=Indice;
}
// On trie maintenant la table dans le sens dcroissant.
// On trie maintenant la table dans le sens décroissant.
// (Ce n'est pas indispensable, mais ‡a fera plus joli dans la palette).
do
{
Couleur=0; // Boolen qui dit si le tri n'est pas termin.
Couleur=0; // Booléen qui dit si le tri n'est pas terminé.
for (Indice=0; Indice<3; Indice++)
{
if (Nouvelles[Indice]>Nouvelles[Indice+1])
@ -336,7 +336,7 @@ void Remettre_proprement_les_couleurs_du_menu(dword * Utilisation_couleur)
} while (Couleur);
// On sauvegarde dans RVB les teintes qu'on va remplacer et on met les
// couleurs du menu par dfaut
// couleurs du menu par défaut
for (Indice=0; Indice<4; Indice++)
{
Couleur=Nouvelles[Indice];
@ -348,14 +348,14 @@ void Remettre_proprement_les_couleurs_du_menu(dword * Utilisation_couleur)
Principal_Palette[Couleur].B=Coul_menu_pref[Indice].B;
}
// Maintenant qu'on a plac notre nouvelle palette, on va chercher quelles
// Maintenant qu'on a placé notre nouvelle palette, on va chercher quelles
// sont les couleurs qui peuvent remplacer les anciennes
Effacer_curseur();
for (Indice=0; Indice<4; Indice++)
Table_de_remplacement[Nouvelles[Indice]]=Meilleure_couleur_sans_exclusion
(RVB[Indice].R,RVB[Indice].V,RVB[Indice].B);
// On fait un changement des couleurs visibles … l'cran et dans l'image
// On fait un changement des couleurs visibles … l'écran et dans l'image
Remap_image_HIGH(Table_de_remplacement);
Afficher_curseur();
@ -369,26 +369,26 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
byte Table_de_conversion[256]; // Table de conversion
int Couleur_1; // |_ Variables de balayages
int Couleur_2; // | de la palette
int Meilleure_couleur_1;
int Meilleure_couleur_2;
int Meilleure_couleur_1=0;
int Meilleure_couleur_2=0;
int Difference;
int Meilleure_difference;
dword Utilisation;
dword Meilleure_utilisation;
// On commence par initialiser la table de conversion dans un tat o—
// aucune conversion ne sera effectue.
// On commence par initialiser la table de conversion dans un état o—
// aucune conversion ne sera effectuée.
for (Couleur_1=0; Couleur_1<=255; Couleur_1++)
Table_de_conversion[Couleur_1]=Couleur_1;
// Si on ne connait pas encore le nombre de couleurs utilises, on le
// calcule! (!!! La fonction appele Efface puis Affiche le curseur !!!)
// Si on ne connait pas encore le nombre de couleurs utilisées, on le
// calcule! (!!! La fonction appelée Efface puis Affiche le curseur !!!)
if ((*Nb_couleurs_utilisees)<0)
Compter_nb_couleurs_utilisees(Nb_couleurs_utilisees,Utilisation_couleur);
Effacer_curseur();
// On tasse la palette vers le dbut parce qu'elle doit ressembler …
// On tasse la palette vers le début parce qu'elle doit ressembler …
// du GruyŠre (et comme Papouille il aime pas le fromage...)
// Pour cela, on va scruter la couleur Couleur_1 et se servir de l'indice
@ -408,13 +408,13 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
// On va maintenant s'occuper de la table de conversion:
Table_de_conversion[Couleur_1]=Couleur_2;
// Maintenant, la place dsigne par Couleur_2 est occupe, alors on
// Maintenant, la place désignée par Couleur_2 est occupée, alors on
// doit passer … un indice de destination suivant.
Couleur_2++;
}
}
// On met toutes les couleurs inutilises en noir
// On met toutes les couleurs inutilisées en noir
for (;Couleur_2<256;Couleur_2++)
{
Palette[Couleur_2].R=0;
@ -423,13 +423,13 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
Utilisation_couleur[Couleur_2]=0;
}
// Maintenant qu'on a une palette clean, on va boucler en rduisant
// le nombre de couleurs jusqu'… ce qu'on atteigne le nombre dsir.
// Maintenant qu'on a une palette clean, on va boucler en réduisant
// le nombre de couleurs jusqu'… ce qu'on atteigne le nombre désiré.
while ((*Nb_couleurs_utilisees)>Nb_couleurs_demandees)
{
// Il s'agit de trouver les 2 couleurs qui se ressemblent le plus
// parmis celles qui sont utilises (bien sr) et de les remplacer par
// une seule couleur qui est la moyenne pondre de ces 2 couleurs
// parmis celles qui sont utilisées (bien sr) et de les remplacer par
// une seule couleur qui est la moyenne pondérée de ces 2 couleurs
// en fonction de leur utilisation dans l'image.
Meilleure_difference =0x7FFF;
@ -456,8 +456,8 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
}
}
// Maintenant qu'on les a trouves, on va pouvoir mettre … jour nos
// donnes pour que le remplacement se fasse sans encombres.
// Maintenant qu'on les a trouvées, on va pouvoir mettre … jour nos
// données pour que le remplacement se fasse sans encombres.
// En somme, on va remplacer Meilleure_couleur_2 par Meilleure_couleur_1,
// mais attention, on ne remplace pas Meilleure_couleur_1 par
@ -483,8 +483,8 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
{
if (Table_de_conversion[Couleur_1]==Meilleure_couleur_2)
{
// La Couleur_1 avait dj… prvue de se faire remplacer par la
// couleur que l'on veut maintenant liminer. On va maintenant
// La Couleur_1 avait déj… prévue de se faire remplacer par la
// couleur que l'on veut maintenant éliminer. On va maintenant
// demander … ce que la Couleur_1 se fasse remplacer par la
// Meilleure_couleur_1.
Table_de_conversion[Couleur_1]=Meilleure_couleur_1;
@ -492,8 +492,8 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
}
// Bon, maintenant que l'on a fait bouger nos petites choses concernants
// la couleur … liminer, on va s'occuper de faire bouger les couleurs
// situes aprŠs la couleur … liminer pour qu'elles se dpla‡ent d'une
// la couleur … éliminer, on va s'occuper de faire bouger les couleurs
// situées aprŠs la couleur … éliminer pour qu'elles se dépla‡ent d'une
// couleur en arriŠre.
for (Couleur_1=0;Couleur_1<=255;Couleur_1++)
{
@ -505,47 +505,47 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa
// La Couleur_1 va scroller en arriŠre.
// Donc on transfŠre son utilisation dans l'utilisation de la
// couleur qui la prcŠde.
// couleur qui la précŠde.
Utilisation_couleur[Couleur_1-1]=Utilisation_couleur[Couleur_1];
// Et on transfŠre ses teintes dans les teintes de la couleur qui
// la prcŠde.
// la précŠde.
Palette[Couleur_1-1].R=Palette[Couleur_1].R;
Palette[Couleur_1-1].V=Palette[Couleur_1].V;
Palette[Couleur_1-1].B=Palette[Couleur_1].B;
}
// Une fois la palette et la table d'utilisation gres, on peut
// Une fois la palette et la table d'utilisation gérées, on peut
// s'occuper de notre table de conversion.
if (Table_de_conversion[Couleur_1]>Meilleure_couleur_2)
// La Couleur_1 avait l'intention de se faire remplacer par une
// couleur que l'on va (ou que l'on a dj…) bouger en arriŠre.
// couleur que l'on va (ou que l'on a déj…) bouger en arriŠre.
Table_de_conversion[Couleur_1]--;
}
// On vient d'jecter une couleur, donc on peut mettre … jour le nombre
// de couleurs utilises.
// On vient d'éjecter une couleur, donc on peut mettre … jour le nombre
// de couleurs utilisées.
(*Nb_couleurs_utilisees)--;
// A la fin, on doit passer (dans la palette) les teintes du dernier
// lment de notre ensemble en noir.
// élément de notre ensemble en noir.
Palette[*Nb_couleurs_utilisees].R=0;
Palette[*Nb_couleurs_utilisees].V=0;
Palette[*Nb_couleurs_utilisees].B=0;
// Au passage, on va s'assurer que l'on a pas oubli de la mettre … une
// Au passage, on va s'assurer que l'on a pas oublié de la mettre … une
// utilisation nulle.
Utilisation_couleur[*Nb_couleurs_utilisees]=0;
// AprŠs avoir ject une couleur, on le fait savoir … l'utilisateur par
// l'intermdiaire du compteur de nombre utilises.
// AprŠs avoir éjecté une couleur, on le fait savoir … l'utilisateur par
// l'intermédiaire du compteur de nombre utilisées.
Num2str(*Nb_couleurs_utilisees,Chaine,3);
Print_dans_fenetre(186,23,Chaine,CM_Noir,CM_Clair);
}
// Maintenant, tous ces calculs doivent ˆtres pris en compte dans la
// palette, l'image et … l'cran.
Remap_image_HIGH(Table_de_conversion); // Et voila pour l'image et l'cran
// Maintenant, tous ces calculs doivent êtres pris en compte dans la
// palette, l'image et … l'écran.
Remap_image_HIGH(Table_de_conversion); // Et voila pour l'image et l'écran
Afficher_curseur();
}
@ -599,7 +599,7 @@ void Palette_Reafficher_jauges(struct Fenetre_Bouton_scroller * Jauge_rouge,
char Chaine[3];
Effacer_curseur();
// Raffichage des jauges:
// Réaffichage des jauges:
if (Debut!=Fin)
{
// Dans le cas d'un bloc, tout … 0.
@ -644,9 +644,9 @@ void Bouton_Palette(void)
{
static short Indice_Reduction_palette=0;
static short Reduce_Nb_couleurs=256;
short Couleur_temporaire; // Variable pouvant reservir pour diffrents calculs intermdiaires
short Couleur_temporaire; // Variable pouvant reservir pour différents calculs intermédiaires
dword Temp;
byte Couleur,Click; // Variables pouvant reservir pour diffrents calculs intermdiaires
byte Couleur,Click; // Variables pouvant reservir pour différents calculs intermédiaires
short Bouton_clicke;
word Ancien_Mouse_X;
word Ancien_Mouse_Y;
@ -657,7 +657,7 @@ void Bouton_Palette(void)
byte Derniere_couleur;
char Chaine[10];
word i;
short Pos_X,Pos_Y;
//short Pos_X,Pos_Y;
struct Fenetre_Bouton_normal * Bouton_Used;
struct Fenetre_Bouton_scroller * Jauge_rouge;
struct Fenetre_Bouton_scroller * Jauge_verte;
@ -690,7 +690,7 @@ void Bouton_Palette(void)
Fenetre_Afficher_cadre (173, 67,121,116);
Fenetre_Afficher_cadre (128, 16, 91, 39);
Fenetre_Afficher_cadre (221, 16, 73, 39);
// Cadre creux destin … l'affichage de la(les) couleur(s) slectionne(s)
// Cadre creux destiné … l'affichage de la(les) couleur(s) sélectionnée(s)
Fenetre_Afficher_cadre_creux(259, 88, 26, 74);
// Graduation des jauges de couleur
@ -752,7 +752,7 @@ void Bouton_Palette(void)
Bouton_Used=Fenetre_Liste_boutons_normal;
Fenetre_Definir_bouton_normal(132,37,83,14,"Zap unused",0,1,0x0053);//16
// Jauge de rduction de palette
// Jauge de réduction de palette
Fenetre_Definir_bouton_scroller(225,20,31,7,1,Indice_Reduction_palette);// 17
Jauge_Reduction=Fenetre_Liste_boutons_scroller;
@ -764,11 +764,11 @@ void Bouton_Palette(void)
Fenetre_Definir_bouton_normal(66,32,59,14,"X-Inv." ,5,1,0x002F); // 22
Fenetre_Definir_bouton_saisie(263,39,3); // 23
// Affichage du facteur de rduction de la palette
// Affichage du facteur de réduction de la palette
Num2str(Reduce_Nb_couleurs,Chaine,3);
Print_dans_fenetre(265,41,Chaine,CM_Noir,CM_Clair);
// Dessin des petits effets spciaux pour les boutons [+] et [-]
// Dessin des petits effets spéciaux pour les boutons [+] et [-]
Dessiner_zigouigoui(263, 74,CM_Blanc,-1);
Dessiner_zigouigoui(280, 74,CM_Blanc,+1);
Dessiner_zigouigoui(263,165,CM_Fonce,-1);
@ -776,8 +776,8 @@ void Bouton_Palette(void)
Afficher_curseur();
Clavier_americain(); // On est oblig de rester en clavier amricain pour
// que l'on puisse dcaler la couleur slectionne …
Clavier_americain(); // On est obligé de rester en clavier américain pour
// que l'on puisse décaler la couleur sélectionnée …
// l'aide des touche "^" et "$" ("[" et "]").
if (Config.Auto_nb_used)
@ -794,7 +794,7 @@ void Bouton_Palette(void)
{
case 0 : // Nulle part
break;
case -1 : // Hors de la fenˆtre
case -1 : // Hors de la fenêtre
case 1 : // Palette
if ( (Mouse_X!=Ancien_Mouse_X) || (Mouse_Y!=Ancien_Mouse_Y) || (Mouse_K!=Ancien_Mouse_K) )
{
@ -820,13 +820,13 @@ void Bouton_Palette(void)
if ( (Fore_color!=Couleur_temporaire) || (Debut_block!=Fin_block) )
{
// La couleur en question est nouvelle ou elle annule un
// ancien bloc. Il faut donc slectionner cette couleur comme
// ancien bloc. Il faut donc sélectionner cette couleur comme
// unique couleur choisie.
Fore_color=Premiere_couleur=Derniere_couleur=Debut_block=Fin_block=Couleur_temporaire;
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Block(Fenetre_Pos_X+(Menu_Facteur_X*261),Fenetre_Pos_Y+(Menu_Facteur_Y*58),Menu_Facteur_X*32,Menu_Facteur_Y*7,CM_Clair);
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
@ -853,7 +853,7 @@ void Bouton_Palette(void)
Debut_block=Premiere_couleur;
Fin_block=Couleur_temporaire;
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Num2str(Debut_block,Chaine ,3);
Num2str(Fin_block ,Chaine+4,3);
Chaine[3]=26; // FlŠche vers la droite
@ -862,7 +862,7 @@ void Bouton_Palette(void)
// Affichage des jauges
Afficher_les_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,1,NULL);
// Affichage dans le block de visu du bloc (dgrad) en cours
// Affichage dans le block de visu du bloc (dégradé) en cours
Bloc_degrade_dans_fenetre(264,93,Debut_block,Fin_block);
}
else if (Premiere_couleur>Couleur_temporaire)
@ -870,7 +870,7 @@ void Bouton_Palette(void)
Debut_block=Couleur_temporaire;
Fin_block=Premiere_couleur;
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Num2str(Debut_block,Chaine ,3);
Num2str(Fin_block ,Chaine+4,3);
Chaine[3]=26; // FlŠche vers la droite
@ -879,7 +879,7 @@ void Bouton_Palette(void)
// Affichage des jauges
Afficher_les_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,1,NULL);
// Affichage dans le block de visu du bloc (dgrad) en cours
// Affichage dans le block de visu du bloc (dégradé) en cours
Bloc_degrade_dans_fenetre(264,93,Debut_block,Fin_block);
}
else
@ -887,7 +887,7 @@ void Bouton_Palette(void)
Debut_block=Fin_block=Premiere_couleur;
Block(Fenetre_Pos_X+(Menu_Facteur_X*176),Fenetre_Pos_Y+(Menu_Facteur_Y*172),Menu_Facteur_X*84,Menu_Facteur_Y*7,CM_Clair);
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Block(Fenetre_Pos_X+(Menu_Facteur_X*261),Fenetre_Pos_Y+(Menu_Facteur_Y*58),Menu_Facteur_X*32,Menu_Facteur_Y*7,CM_Clair);
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
@ -924,7 +924,7 @@ void Bouton_Palette(void)
if (Jauge_rouge->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_rouge->Position),Chaine,3);
Chaine[0]='-';
}
@ -961,7 +961,7 @@ void Bouton_Palette(void)
if (Jauge_verte->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_verte->Position),Chaine,3);
Chaine[0]='-';
}
@ -998,7 +998,7 @@ void Bouton_Palette(void)
if (Jauge_bleue->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_bleue->Position),Chaine,3);
Chaine[0]='-';
}
@ -1027,7 +1027,7 @@ void Bouton_Palette(void)
memcpy(Palette_temporaire,Palette_defaut,sizeof(T_Palette));
Set_palette(Palette_defaut);
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
// On prpare la "modifiabilit" des nouvelles couleurs
// On prépare la "modifiabilité" des nouvelles couleurs
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
Il_faut_remapper=1;
@ -1045,7 +1045,7 @@ void Bouton_Palette(void)
Modifier_Bleu (i,Couleur_temporaire,Palette_de_travail);
}
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
// On prpare la "modifiabilit" des nouvelles couleurs
// On prépare la "modifiabilité" des nouvelles couleurs
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
Il_faut_remapper=1;
@ -1061,7 +1061,7 @@ void Bouton_Palette(void)
memcpy(Palette_backup,Palette_de_travail,sizeof(T_Palette));
// On calcule le nombre de couleurs a swapper sans risquer de sortir
// de la palette (La var. Premiere_couleur est utilise pour conomiser 1 var; c'est tout)
// de la palette (La var. Premiere_couleur est utilisée pour économiser 1 var; c'est tout)
Premiere_couleur=(Couleur_temporaire+Fin_block-Debut_block<=255)?Fin_block+1-Debut_block:256-Couleur_temporaire;
if (Bouton_clicke==8) // On ne fait de backup de l'image que si on
@ -1076,7 +1076,7 @@ void Bouton_Palette(void)
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
// On dplace le bloc vers les modifs:
// On déplace le bloc vers les modifs:
Derniere_couleur=Fin_block=Couleur_temporaire+Premiere_couleur-1;
Fore_color=Premiere_couleur=Debut_block=Couleur_temporaire;
// On raffiche le nø des bornes du bloc:
@ -1086,7 +1086,7 @@ void Bouton_Palette(void)
Num2str(Debut_block,Chaine ,3);
Num2str(Fin_block ,Chaine+4,3);
Chaine[3]=26; // FlŠche vers la droite
// Affichage dans le block de visu du bloc (dgrad) en cours
// Affichage dans le block de visu du bloc (dégradé) en cours
Bloc_degrade_dans_fenetre(264,93,Debut_block,Fin_block);
}
else
@ -1118,7 +1118,7 @@ void Bouton_Palette(void)
((Couleur_temporaire+Fin_block-Debut_block<=255)?Fin_block+1-Debut_block:256-Couleur_temporaire)*3);
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
Set_palette(Palette_de_travail);
// On dplace le bloc vers les modifs:
// On déplace le bloc vers les modifs:
Derniere_couleur=Fin_block=((Couleur_temporaire+Fin_block-Debut_block<=255)?(Couleur_temporaire+Fin_block-Debut_block):255);
Fore_color=Premiere_couleur=Debut_block=Couleur_temporaire;
// On raffiche le nø des bornes du bloc:
@ -1128,7 +1128,7 @@ void Bouton_Palette(void)
Num2str(Debut_block,Chaine ,3);
Num2str(Fin_block ,Chaine+4,3);
Chaine[3]=26; // FlŠche vers la droite
// Affichage dans le block de visu du bloc (dgrad) en cours
// Affichage dans le block de visu du bloc (dégradé) en cours
Bloc_degrade_dans_fenetre(264,93,Debut_block,Fin_block);
}
else
@ -1170,7 +1170,7 @@ void Bouton_Palette(void)
}
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
// On prpare la "modifiabilit" des nouvelles couleurs
// On prépare la "modifiabilité" des nouvelles couleurs
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
Il_faut_remapper=1;
@ -1194,7 +1194,7 @@ void Bouton_Palette(void)
memcpy(Principal_Palette,Palette_temporaire,sizeof(T_Palette));
}
Set_palette(Palette_de_travail); // On dfinit la nouvelle palette
Set_palette(Palette_de_travail); // On définit la nouvelle palette
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
@ -1246,11 +1246,11 @@ void Bouton_Palette(void)
Il_faut_remapper=1;
break;
case 17 : // Jauge de rduction de palette
case 17 : // Jauge de réduction de palette
if (Indice_Reduction_palette!=Jauge_Reduction->Position)
{
Indice_Reduction_palette=Jauge_Reduction->Position;
// Affichage du facteur de rduction de la palette
// Affichage du facteur de réduction de la palette
Effacer_curseur();
Print_dans_fenetre(265,41,Libelle_reduction_palette[Indice_Reduction_palette],CM_Noir,CM_Clair);
Afficher_curseur();
@ -1315,7 +1315,7 @@ void Bouton_Palette(void)
// -- Rouge --
if (Jauge_rouge->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_rouge->Position),Chaine,3);
Chaine[0]='-';
}
@ -1336,7 +1336,7 @@ void Bouton_Palette(void)
// -- Vert --
if (Jauge_verte->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_verte->Position),Chaine,3);
Chaine[0]='-';
}
@ -1357,7 +1357,7 @@ void Bouton_Palette(void)
// -- Bleu --
if (Jauge_bleue->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_bleue->Position),Chaine,3);
Chaine[0]='-';
}
@ -1437,7 +1437,7 @@ void Bouton_Palette(void)
// -- Rouge --
if (Jauge_rouge->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_rouge->Position),Chaine,3);
Chaine[0]='-';
}
@ -1458,7 +1458,7 @@ void Bouton_Palette(void)
// -- Vert --
if (Jauge_verte->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_verte->Position),Chaine,3);
Chaine[0]='-';
}
@ -1479,7 +1479,7 @@ void Bouton_Palette(void)
// -- Bleu --
if (Jauge_bleue->Position>63)
{
// Jauge dans les ngatifs:
// Jauge dans les négatifs:
Num2str(-(63-Jauge_bleue->Position),Chaine,3);
Chaine[0]='-';
}
@ -1513,7 +1513,7 @@ void Bouton_Palette(void)
Modifier_Bleu (i,63-Palette_de_travail[i].B,Palette_de_travail);
}
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
// On prpare la "modifiabilit" des nouvelles couleurs
// On prépare la "modifiabilité" des nouvelles couleurs
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
Il_faut_remapper=1;
@ -1556,13 +1556,13 @@ void Bouton_Palette(void)
Remap_image_HIGH(Table_de_conversion);
Afficher_curseur();
}
// On prpare la "modifiabilit" des nouvelles couleurs
// On prépare la "modifiabilité" des nouvelles couleurs
memcpy(Palette_temporaire,Palette_de_travail,sizeof(T_Palette));
Il_faut_remapper=1;
break;
case 23 : // Saisie du nombre de couleurs pour la rduction de palette
case 23 : // Saisie du nombre de couleurs pour la réduction de palette
Num2str(Reduce_Nb_couleurs,Chaine,3);
Effacer_curseur();
@ -1592,7 +1592,7 @@ void Bouton_Palette(void)
{
switch (Touche)
{
case 0x001A : // Dcaler Forecolor vers la gauche
case 0x001A : // Décaler Forecolor vers la gauche
if (Debut_block==Fin_block)
{
Fore_color--;
@ -1603,7 +1603,7 @@ void Bouton_Palette(void)
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
Effacer_curseur();
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
// Affichage dans le block de visu de la couleur en cours
@ -1612,7 +1612,7 @@ void Bouton_Palette(void)
}
break;
case 0x001B : // Dcaler Forecolor vers la droite
case 0x001B : // Décaler Forecolor vers la droite
if (Debut_block==Fin_block)
{
Fore_color++;
@ -1623,7 +1623,7 @@ void Bouton_Palette(void)
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
Effacer_curseur();
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
// Affichage dans le block de visu de la couleur en cours
@ -1645,7 +1645,7 @@ void Bouton_Palette(void)
Afficher_curseur();
break;
case 0x000E : // Remise des couleurs du menu … l'tat normal en essayant
case 0x000E : // Remise des couleurs du menu … l'état normal en essayant
// de ne pas trop modifier l'image.
if (!Backup_de_l_image_effectue)
{
@ -1668,12 +1668,12 @@ void Bouton_Palette(void)
Il_faut_remapper=1;
break;
case 0x0029 : // Rcupration d'une couleur derriŠre le menu
case 0x0029 : // Récupération d'une couleur derriŠre le menu
case 0x0033 :
Recuperer_couleur_derriere_fenetre(&Couleur,&Click);
if (Click)
{
Effacer_Curseur();
Effacer_curseur();
if (Click==A_DROITE)
{
if (Back_color!=Couleur)
@ -1691,7 +1691,7 @@ void Bouton_Palette(void)
Fore_color=Premiere_couleur=Derniere_couleur=Debut_block=Fin_block=Couleur;
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur slectionne
// Affichage du nø de la couleur sélectionnée
Block(Fenetre_Pos_X+(Menu_Facteur_X*261),Fenetre_Pos_Y+(Menu_Facteur_Y*58),Menu_Facteur_X*32,Menu_Facteur_Y*7,CM_Clair);
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
@ -1761,7 +1761,7 @@ void Bouton_Palette(void)
Calculer_couleurs_menu_optimales(Principal_Palette);
// La variable employe ici n'a pas vraiment de rapport avec son nom...
// La variable employée ici n'a pas vraiment de rapport avec son nom...
Il_faut_remapper=(Fenetre_Pos_Y+(Fenetre_Hauteur*Menu_Facteur_Y)<Menu_Ordonnee_avant_fenetre);
Fermer_fenetre();
@ -1769,9 +1769,9 @@ void Bouton_Palette(void)
Recadrer_palette();
// On affiche les "ForeBack" car le menu n'est raffich que si la fenˆtre
// empitait sur le menu. Mais si les couleurs on t modifies, il faut
// rafficher tout le menu remapp.
// On affiche les "ForeBack" car le menu n'est raffiché que si la fenêtre
// empiétait sur le menu. Mais si les couleurs on été modifiées, il faut
// rafficher tout le menu remappé.
if (Il_faut_remapper)
Afficher_menu();