Right click is working. You can stop drawing polylines and do various other things

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@83 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2008-07-30 20:08:02 +00:00
parent ec2a3083b7
commit 7e48434e19
5 changed files with 458 additions and 451 deletions

View File

@ -1388,7 +1388,6 @@ void Bouton_Resol(void)
Readline(62,37,Chaine,4,1); Readline(62,37,Chaine,4,1);
Largeur_choisie=atoi(Chaine); Largeur_choisie=atoi(Chaine);
// On corrige les dimensions // On corrige les dimensions
DEBUG("Valide",0);
if (Largeur_choisie==0) if (Largeur_choisie==0)
{ {
Largeur_choisie=1; Largeur_choisie=1;

894
const.h
View File

@ -1,448 +1,448 @@
#ifndef _CONST_H_ #ifndef _CONST_H_
#define _CONST_H_ #define _CONST_H_
// Déclaration des constantes //////////////////////////////////////////////// // Déclaration des constantes ////////////////////////////////////////////////
#define M_2PI 6.28318530717958647692528676656 #define M_2PI 6.28318530717958647692528676656
// Note: La taille du fichier GFX2.DAT est définie au début de INIT.C ! // 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 POURCENTAGE_VERSION "96.5%" // Libellé du pourcentage de la version á
#define VERSION1 2 // | #define VERSION1 2 // |
#define VERSION2 0 // |_ Numéro de version découpé en #define VERSION2 0 // |_ Numéro de version découpé en
#define BETA1 96 // | plusieurs parties => 2.0 á95.5% #define BETA1 96 // | plusieurs parties => 2.0 á95.5%
#define BETA2 5 // | #define BETA2 5 // |
#define ALPHA_BETA "á" // Type de la version "à" ou "á" #define ALPHA_BETA "á" // Type de la version "à" ou "á"
#define TAILLE_FICHIER_CONFIG 10351 // Taille du fichier GFX2.CFG #define TAILLE_FICHIER_CONFIG 10351 // Taille du fichier GFX2.CFG
#define NB_MODES_VIDEO 60 // Nombre de modes vidéo #define NB_MODES_VIDEO 60 // Nombre de modes vidéo
#define NB_BOUTONS 38 // Nombre de boutons à gérer #define NB_BOUTONS 38 // Nombre de boutons à gérer
#define NB_TOUCHES 134 // Nombre de combinaisons de touches #define NB_TOUCHES 134 // Nombre de combinaisons de touches
#define NB_TOUCHES_SPECIALES 72 // Nombre de touches spéciales #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_OPERATIONS 32 // Nombre d'opérations gérées par le moteur
#define NB_FACTEURS_DE_ZOOM 12 // Nombre de facteurs de zoom #define NB_FACTEURS_DE_ZOOM 12 // Nombre de facteurs de zoom
#define LARGEUR_MENU 254 // Largeur du menu en taille réelle #define LARGEUR_MENU 254 // Largeur du menu en taille réelle
#define HAUTEUR_MENU 44 // Hauteur 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 NB_SPRITES_CURSEUR 8 // Nombre de sprites de curseur
#define LARGEUR_SPRITE_CURSEUR 15 // Largeur d'un sprite de curseur en pixels #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 #define HAUTEUR_SPRITE_CURSEUR 15 // Hauteur d'un sprite de curseur en pixels
#define NB_SPRITES_EFFETS 9 // Nombre de sprites d'effets #define NB_SPRITES_EFFETS 9 // Nombre de sprites d'effets
#define NB_SPRITES_MENU 9 // Nombre de sprites de menu #define NB_SPRITES_MENU 9 // Nombre de sprites de menu
#define LARGEUR_SPRITE_MENU 14 // Largeur d'un sprite de menu en pixels #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 HAUTEUR_SPRITE_MENU 14 // Hauteur d'un sprite de menu en pixels
#define LARGEUR_PINCEAU 16 // Largeur d'un sprite de pinceau prédéfini #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 HAUTEUR_PINCEAU 16 // Hauteur d'un sprite de pinceau prédéfini
#define TAILLE_MAXI_PINCEAU 127 // Taille maxi des pinceaux #define TAILLE_MAXI_PINCEAU 127 // Taille maxi des pinceaux
#define NB_SPRITES_DRIVES 5 // Nombre de sprites de drives #define NB_SPRITES_DRIVES 5 // Nombre de sprites de drives
#define LARGEUR_SPRITE_DRIVE 7 // Largeur d'un sprite de drive en pixels #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 HAUTEUR_SPRITE_DRIVE 7 // Hauteur d'un sprite de drive en pixels
#define NB_SPRITES_PINCEAU 48 // Nombre de sprites de pinceau #define NB_SPRITES_PINCEAU 48 // Nombre de sprites de pinceau
#define NB_TRAMES_PREDEFINIES 12 // Nombre de trames prédéfinies #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_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_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_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 NB_PAGES_UNDO_MAX 99 // Nombre maximal de pages d'undo
#define FACTEUR_DE_ZOOM_PAR_DEFAUT 4 // Facteur de zoom initial #define FACTEUR_DE_ZOOM_PAR_DEFAUT 4 // Facteur de zoom initial
#define NB_SECTIONS_AIDE 3 // Nombre de sections dans l'aide #define NB_SECTIONS_AIDE 3 // Nombre de sections dans l'aide
// On impose à l'allocation dynamique des pages de backups de conserver un // On impose à l'allocation dynamique des pages de backups de conserver un
// minimum de 256 Ko pour que le reste du programme puisse continuer à // minimum de 256 Ko pour que le reste du programme puisse continuer à
// fonctionner. // fonctionner.
#define QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER (256*1024) #define QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER (256*1024)
#define A_GAUCHE 1 // Indique une direction (ou click) à gauche #define A_GAUCHE 1 // Indique une direction (ou click) à gauche
#define A_DROITE 2 // Indique une direction (ou click) à droite #define A_DROITE 2 // Indique une direction (ou click) à droite
#define LARGEUR_BARRE_SPLIT 6 // [ Û±±° ] #define LARGEUR_BARRE_SPLIT 6 // [ Û±±° ]
#define PROPORTION_SPLIT 0.3 // proportion de la zone non-zoomée en largeur par rapport à l'écran #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!) #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 différents 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 généralement: 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_LOAD 12 // Nombre de formats que l'on sait charger
#define NB_FORMATS_SAVE 12 // Nombre de formats que l'on sait sauver #define NB_FORMATS_SAVE 12 // Nombre de formats que l'on sait sauver
enum FORMATS_RECONNUS enum FORMATS_RECONNUS
{
FORMAT_PKM=1, // |
FORMAT_LBM, // |
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 représentent l'indice o—
FORMAT_PC1, // | l'on doit aller piocher ces
FORMAT_CEL, // | données.
FORMAT_KCF, // |
FORMAT_PAL // |
};
#define FORMAT_PAR_DEFAUT FORMAT_PKM // Format par défaut (ah bon? oh!)
// Les différentes erreurs:
enum CODES_D_ERREURS
{
ERREUR_DAT_ABSENT=1, // Le fichier GFX2.DAT est absent
ERREUR_DAT_CORROMPU, // Mauvais fichier GFX2.DAT
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 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_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 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 différents types de modes vidéos
enum TYPES_DE_MODES_VIDEO
{ {
MODE_SDL FORMAT_PKM=1, // |
/*MODE_MCGA, FORMAT_LBM, // |
MODE_X, FORMAT_GIF, // | Il faudra penser à réordonner
MODE_VESA, // Attention! Si on change la numérotation, il faut FORMAT_BMP, // | les données sur les formats dans
MODE_XVESA // que les 2 plus grandes valeurs soient ces 2 modes!*/ FORMAT_PCX, // | GLOBAL.H si on modifie ces cons-
}; FORMAT_IMG, // |_ tantes.
FORMAT_SCx, // |
// Les différents modes vidéos (avec leur nø d'ordre) FORMAT_PI1, // | Elles représentent l'indice o—
FORMAT_PC1, // | l'on doit aller piocher ces
enum MODES_VIDEO FORMAT_CEL, // | données.
{ FORMAT_KCF, // |
MODE_320_200, // !!! MODE 0 !!! FORMAT_PAL // |
MODE_320_224, };
MODE_320_240,
MODE_320_256, #define FORMAT_PAR_DEFAUT FORMAT_PKM // Format par défaut (ah bon? oh!)
MODE_320_270,
MODE_320_282, // Les différentes erreurs:
MODE_320_300,
MODE_320_360, enum CODES_D_ERREURS
MODE_320_400, {
MODE_320_448, ERREUR_DAT_ABSENT=1, // Le fichier GFX2.DAT est absent
MODE_320_480, ERREUR_DAT_CORROMPU, // Mauvais fichier GFX2.DAT
MODE_320_512, ERREUR_CFG_ABSENT, // Le fichier GFX2.CFG est absent
MODE_320_540, ERREUR_CFG_CORROMPU, // Mauvais fichier GFX2.CFG
MODE_320_564, ERREUR_CFG_ANCIEN, // Ancienne version du fichier GFX2.CFG
MODE_320_600, ERREUR_MEMOIRE, // Plus de mémoire
MODE_360_200, // 15 ERREUR_LIGNE_COMMANDE, // Erreur sur la ligne de commande
MODE_360_224, ERREUR_DRIVER_SOURIS, // Pas de driver souris installé
MODE_360_240, ERREUR_MODE_VESA_INVALIDE, // Mode VESA demandé sur la ligne de commande invalide
MODE_360_256, ERREUR_MODE_INTERDIT, // Mode demandé sur la ligne de commande interdit (coché en noir)
MODE_360_270, ERREUR_NUMERO_MODE, // Erreur de choix de mode sur la ligne de commande
MODE_360_282, ERREUR_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG
MODE_360_300, ERREUR_REPERTOIRE_DISPARU, // Le répertoire de lancement n'existe plus
MODE_360_360, ERREUR_INI_ABSENT, // Le fichier GFX2.INI est absent
MODE_360_400, ERREUR_INI_CORROMPU, // Le fichier GFX2.INI est corrompu
MODE_360_448, ERREUR_SAUVEGARDE_INI, // Le fichier GFX2.INI n'est pas inscriptible
MODE_360_480, ERREUR_SORRY_SORRY_SORRY // On le refera plus, promis
MODE_360_512, };
MODE_360_540,
MODE_360_564, // Les différents types de modes vidéos
MODE_360_600,
MODE_400_200, // 30 enum TYPES_DE_MODES_VIDEO
MODE_400_224, {
MODE_400_240, MODE_SDL
MODE_400_256, /*MODE_MCGA,
MODE_400_270, MODE_X,
MODE_400_282, MODE_VESA, // Attention! Si on change la numérotation, il faut
MODE_400_300, MODE_XVESA // que les 2 plus grandes valeurs soient ces 2 modes!*/
MODE_400_360, };
MODE_400_400,
MODE_400_448, // Les différents modes vidéos (avec leur nø d'ordre)
MODE_400_480,
MODE_400_512, enum MODES_VIDEO
MODE_400_540, {
MODE_400_564, MODE_320_200, // !!! MODE 0 !!!
MODE_400_600, MODE_320_224,
MODE_640_224, // 45 MODE_320_240,
MODE_640_240, MODE_320_256,
MODE_640_256, MODE_320_270,
MODE_640_270, MODE_320_282,
MODE_640_300, MODE_320_300,
MODE_640_350, MODE_320_360,
MODE_640_400, MODE_320_400,
MODE_640_448, MODE_320_448,
MODE_640_480, MODE_320_480,
MODE_640_512, MODE_320_512,
MODE_640_540, MODE_320_540,
MODE_640_564, MODE_320_564,
MODE_640_600, MODE_320_600,
MODE_800_600, MODE_360_200, // 15
MODE_1024_768 // 59 MODE_360_224,
}; MODE_360_240,
MODE_360_256,
// Les différentes catégories de bouton: MODE_360_270,
MODE_360_282,
enum FAMILLES_DE_BOUTONS MODE_360_300,
{ MODE_360_360,
FAMILLE_OUTIL=1, // Outils de dessin MODE_360_400,
FAMILLE_INTERRUPTION, // Opération éphémŠre MODE_360_448,
FAMILLE_INSTANTANE, // Pif paf MODE_360_480,
FAMILLE_TOOLBAR, // Cache/Montre la barre d'outils MODE_360_512,
FAMILLE_EFFETS // Effets MODE_360_540,
}; MODE_360_564,
MODE_360_600,
// Les différentes formes de bouton: MODE_400_200, // 30
MODE_400_224,
enum FORMES_DE_BOUTONS MODE_400_240,
{ MODE_400_256,
FORME_BOUTON_SANS_CADRE, // Ex: la palette MODE_400_270,
FORME_BOUTON_RECTANGLE, // Ex: la plupart MODE_400_282,
FORME_BOUTON_TRIANGLE_HAUT_GAUCHE, // Ex: Rectangles vides MODE_400_300,
FORME_BOUTON_TRIANGLE_BAS_DROITE // Ex: Rectangles pleins MODE_400_360,
}; MODE_400_400,
MODE_400_448,
// Les différentes formes de curseur: MODE_400_480,
MODE_400_512,
enum FORMES_DE_CURSEUR MODE_400_540,
{ MODE_400_564,
FORME_CURSEUR_FLECHE, MODE_400_600,
FORME_CURSEUR_CIBLE, // Utilise le pinceau MODE_640_224, // 45
FORME_CURSEUR_CIBLE_PIPETTE, // Utilise le pinceau MODE_640_240,
FORME_CURSEUR_SABLIER, MODE_640_256,
FORME_CURSEUR_MULTIDIRECTIONNEL, MODE_640_270,
FORME_CURSEUR_HORIZONTAL, MODE_640_300,
FORME_CURSEUR_CIBLE_FINE, // Utilise le pinceau MODE_640_350,
FORME_CURSEUR_CIBLE_PIPETTE_FINE, // Utilise le pinceau MODE_640_400,
FORME_CURSEUR_CIBLE_XOR, MODE_640_448,
FORME_CURSEUR_RECTANGLE_XOR, MODE_640_480,
FORME_CURSEUR_ROTATE_XOR MODE_640_512,
}; MODE_640_540,
MODE_640_564,
// Les différentes formes de pinceaux (les types de pinceaux doivent être au début) MODE_640_600,
MODE_800_600,
enum FORMES_DE_PINCEAUX MODE_1024_768 // 59
{ };
FORME_PINCEAU_ROND,
FORME_PINCEAU_CARRE, // Les différentes catégories de bouton:
FORME_PINCEAU_BARRE_HORIZONTALE,
FORME_PINCEAU_BARRE_VERTICALE, enum FAMILLES_DE_BOUTONS
FORME_PINCEAU_SLASH, {
FORME_PINCEAU_ANTISLASH, FAMILLE_OUTIL=1, // Outils de dessin
FORME_PINCEAU_ALEATOIRE, FAMILLE_INTERRUPTION, // Opération éphémŠre
FORME_PINCEAU_X, FAMILLE_INSTANTANE, // Pif paf
FORME_PINCEAU_PLUS, FAMILLE_TOOLBAR, // Cache/Montre la barre d'outils
FORME_PINCEAU_LOSANGE, FAMILLE_EFFETS // Effets
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) // Les différentes formes de bouton:
FORME_PINCEAU_POINT, // Utilisé pour réduire de pinceau à 1 point dans certaines opérations
FORME_PINCEAU_BROSSE_COULEUR, enum FORMES_DE_BOUTONS
FORME_PINCEAU_BROSSE_MONOCHROME {
}; FORME_BOUTON_SANS_CADRE, // Ex: la palette
FORME_BOUTON_RECTANGLE, // Ex: la plupart
// Les différents états de bouton: FORME_BOUTON_TRIANGLE_HAUT_GAUCHE, // Ex: Rectangles vides
FORME_BOUTON_TRIANGLE_BAS_DROITE // Ex: Rectangles pleins
#define BOUTON_RELACHE 0 };
#define BOUTON_ENFONCE 1
// Les différentes formes de curseur:
// Les différents modes de Shade
enum FORMES_DE_CURSEUR
enum MODES_DE_SHADE {
{ FORME_CURSEUR_FLECHE,
MODE_SHADE_NORMAL, FORME_CURSEUR_CIBLE, // Utilise le pinceau
MODE_SHADE_BOUCLE, FORME_CURSEUR_CIBLE_PIPETTE, // Utilise le pinceau
MODE_SHADE_NOSAT FORME_CURSEUR_SABLIER,
}; FORME_CURSEUR_MULTIDIRECTIONNEL,
FORME_CURSEUR_HORIZONTAL,
// Les différents chunks du fichier .CFG FORME_CURSEUR_CIBLE_FINE, // Utilise le pinceau
FORME_CURSEUR_CIBLE_PIPETTE_FINE, // Utilise le pinceau
enum CHUNKS_CFG FORME_CURSEUR_CIBLE_XOR,
{ FORME_CURSEUR_RECTANGLE_XOR,
CHUNK_TOUCHES, FORME_CURSEUR_ROTATE_XOR
CHUNK_MODES_VIDEO, };
CHUNK_SHADE,
CHUNK_MASQUE, // Les différentes formes de pinceaux (les types de pinceaux doivent être au début)
CHUNK_STENCIL,
CHUNK_DEGRADES, enum FORMES_DE_PINCEAUX
CHUNK_SMOOTH, {
CHUNK_EXCLUDE_COLORS, FORME_PINCEAU_ROND,
CHUNK_QUICK_SHADE FORME_PINCEAU_CARRE,
}; FORME_PINCEAU_BARRE_HORIZONTALE,
FORME_PINCEAU_BARRE_VERTICALE,
// Les différents types de lecteurs: FORME_PINCEAU_SLASH,
FORME_PINCEAU_ANTISLASH,
enum TYPES_DE_LECTEURS FORME_PINCEAU_ALEATOIRE,
{ FORME_PINCEAU_X,
DRIVE_FLOPPY_3_5, // 0: Diskette 3"« FORME_PINCEAU_PLUS,
DRIVE_FLOPPY_5_25, // 1: Diskette 5"¬ FORME_PINCEAU_LOSANGE,
DRIVE_HDD, // 2: HDD FORME_PINCEAU_ROND_TRAME,
DRIVE_CDROM, // 3: CD-ROM FORME_PINCEAU_CARRE_TRAME,
DRIVE_NETWORK // 4: Logique (réseau?) 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,
// Les différents boutons: FORME_PINCEAU_BROSSE_MONOCHROME
};
enum NUMEROS_DE_BOUTONS
{ // Les différents états de bouton:
BOUTON_PINCEAUX,
BOUTON_AJUSTER, #define BOUTON_RELACHE 0
BOUTON_DESSIN, #define BOUTON_ENFONCE 1
BOUTON_COURBES,
BOUTON_LIGNES, // Les différents modes de Shade
BOUTON_SPRAY,
BOUTON_FLOODFILL, enum MODES_DE_SHADE
BOUTON_POLYGONES, {
BOUTON_POLYFILL, MODE_SHADE_NORMAL,
BOUTON_RECTANGLES, MODE_SHADE_BOUCLE,
BOUTON_FILLRECT, MODE_SHADE_NOSAT
BOUTON_CERCLES, };
BOUTON_FILLCERC,
BOUTON_GRADRECT, // Les différents chunks du fichier .CFG
BOUTON_GRADMENU,
BOUTON_SPHERES, enum CHUNKS_CFG
BOUTON_BROSSE, {
BOUTON_POLYBROSSE, CHUNK_TOUCHES,
BOUTON_EFFETS_BROSSE, CHUNK_MODES_VIDEO,
BOUTON_EFFETS, CHUNK_SHADE,
BOUTON_TEXTE, CHUNK_MASQUE,
BOUTON_LOUPE, CHUNK_STENCIL,
BOUTON_PIPETTE, CHUNK_DEGRADES,
BOUTON_RESOL, CHUNK_SMOOTH,
BOUTON_PAGE, CHUNK_EXCLUDE_COLORS,
BOUTON_SAUVER, CHUNK_QUICK_SHADE
BOUTON_CHARGER, };
BOUTON_PARAMETRES,
BOUTON_CLEAR, // Les différents types de lecteurs:
BOUTON_AIDE,
BOUTON_UNDO, enum TYPES_DE_LECTEURS
BOUTON_KILL, {
BOUTON_QUIT, DRIVE_FLOPPY_3_5, // 0: Diskette 3"«
BOUTON_PALETTE, DRIVE_FLOPPY_5_25, // 1: Diskette 5"¬
BOUTON_PAL_LEFT, DRIVE_HDD, // 2: HDD
BOUTON_PAL_RIGHT, DRIVE_CDROM, // 3: CD-ROM
BOUTON_CHOIX_COL, DRIVE_NETWORK // 4: Logique (réseau?)
BOUTON_CACHER };
};
// Les différents boutons:
// Les actions des touches spéciales
enum NUMEROS_DE_BOUTONS
enum ACTIONS_SPECIALES {
{ BOUTON_PINCEAUX,
SPECIAL_MOUSE_UP, // | BOUTON_AJUSTER,
SPECIAL_MOUSE_DOWN, // | BOUTON_DESSIN,
SPECIAL_MOUSE_LEFT, // | BOUTON_COURBES,
SPECIAL_MOUSE_RIGHT, // | BOUTON_LIGNES,
SPECIAL_CLICK_LEFT, // | Il faut garder BOUTON_SPRAY,
SPECIAL_CLICK_RIGHT, // | ces constantes BOUTON_FLOODFILL,
SPECIAL_NEXT_FORECOLOR, // | au début de la BOUTON_POLYGONES,
SPECIAL_PREVIOUS_FORECOLOR, // |_ liste car elles BOUTON_POLYFILL,
SPECIAL_NEXT_BACKCOLOR, // | sont réutilisées BOUTON_RECTANGLES,
SPECIAL_PREVIOUS_BACKCOLOR, // | avec leurs valeurs BOUTON_FILLRECT,
SPECIAL_RETRECIR_PINCEAU, // | brutes en ASM dans BOUTON_CERCLES,
SPECIAL_GROSSIR_PINCEAU, // | Get_input !!! BOUTON_FILLCERC,
SPECIAL_NEXT_USER_FORECOLOR, // | BOUTON_GRADRECT,
SPECIAL_PREVIOUS_USER_FORECOLOR, // | BOUTON_GRADMENU,
SPECIAL_NEXT_USER_BACKCOLOR, // | BOUTON_SPHERES,
SPECIAL_PREVIOUS_USER_BACKCOLOR, // | BOUTON_BROSSE,
SPECIAL_SCROLL_UP, BOUTON_POLYBROSSE,
SPECIAL_SCROLL_DOWN, BOUTON_EFFETS_BROSSE,
SPECIAL_SCROLL_LEFT, BOUTON_EFFETS,
SPECIAL_SCROLL_RIGHT, BOUTON_TEXTE,
SPECIAL_SCROLL_UP_FAST, BOUTON_LOUPE,
SPECIAL_SCROLL_DOWN_FAST, BOUTON_PIPETTE,
SPECIAL_SCROLL_LEFT_FAST, BOUTON_RESOL,
SPECIAL_SCROLL_RIGHT_FAST, BOUTON_PAGE,
SPECIAL_SCROLL_UP_SLOW, BOUTON_SAUVER,
SPECIAL_SCROLL_DOWN_SLOW, BOUTON_CHARGER,
SPECIAL_SCROLL_LEFT_SLOW, BOUTON_PARAMETRES,
SPECIAL_SCROLL_RIGHT_SLOW, BOUTON_CLEAR,
SPECIAL_SHOW_HIDE_CURSOR, BOUTON_AIDE,
SPECIAL_PINCEAU_POINT, BOUTON_UNDO,
SPECIAL_DESSIN_CONTINU, BOUTON_KILL,
SPECIAL_FLIP_X, BOUTON_QUIT,
SPECIAL_FLIP_Y, BOUTON_PALETTE,
SPECIAL_ROTATE_90, BOUTON_PAL_LEFT,
SPECIAL_ROTATE_180, BOUTON_PAL_RIGHT,
SPECIAL_STRETCH, BOUTON_CHOIX_COL,
SPECIAL_DISTORT, BOUTON_CACHER
SPECIAL_OUTLINE, };
SPECIAL_NIBBLE,
SPECIAL_GET_BRUSH_COLORS, // Les actions des touches spéciales
SPECIAL_RECOLORIZE_BRUSH,
SPECIAL_ROTATE_ANY_ANGLE, enum ACTIONS_SPECIALES
SPECIAL_LOAD_BRUSH, {
SPECIAL_SAVE_BRUSH, SPECIAL_MOUSE_UP, // |
SPECIAL_INVERT_SIEVE, SPECIAL_MOUSE_DOWN, // |
SPECIAL_ZOOM_IN, SPECIAL_MOUSE_LEFT, // |
SPECIAL_ZOOM_OUT, SPECIAL_MOUSE_RIGHT, // |
SPECIAL_CENTER_ATTACHMENT, SPECIAL_CLICK_LEFT, // | Il faut garder
SPECIAL_TOP_LEFT_ATTACHMENT, SPECIAL_CLICK_RIGHT, // | ces constantes
SPECIAL_TOP_RIGHT_ATTACHMENT, SPECIAL_NEXT_FORECOLOR, // | au début de la
SPECIAL_BOTTOM_LEFT_ATTACHMENT, SPECIAL_PREVIOUS_FORECOLOR, // |_ liste car elles
SPECIAL_BOTTOM_RIGHT_ATTACHMENT, SPECIAL_NEXT_BACKCOLOR, // | sont réutilisées
SPECIAL_EXCLUDE_COLORS_MENU, SPECIAL_PREVIOUS_BACKCOLOR, // | avec leurs valeurs
SPECIAL_SHADE_MODE, // | SPECIAL_RETRECIR_PINCEAU, // | brutes en ASM dans
SPECIAL_SHADE_MENU, // | SPECIAL_GROSSIR_PINCEAU, // | Get_input !!!
SPECIAL_QUICK_SHADE_MODE, // | SPECIAL_NEXT_USER_FORECOLOR, // |
SPECIAL_QUICK_SHADE_MENU, // | SPECIAL_PREVIOUS_USER_FORECOLOR, // |
SPECIAL_STENCIL_MODE, // | SPECIAL_NEXT_USER_BACKCOLOR, // |
SPECIAL_STENCIL_MENU, // | SPECIAL_PREVIOUS_USER_BACKCOLOR, // |
SPECIAL_MASK_MODE, // | Il faut que le premier effet soit SPECIAL_SCROLL_UP,
SPECIAL_MASK_MENU, // | SPECIAL_SHADE_MODE, et que le SPECIAL_SCROLL_DOWN,
SPECIAL_GRID_MODE, // | dernier soit SPECIAL_TILING_MENU, SPECIAL_SCROLL_LEFT,
SPECIAL_GRID_MENU, // |_ et que seuls des effets soient SPECIAL_SCROLL_RIGHT,
SPECIAL_SIEVE_MODE, // | définis entre ces deux là car SPECIAL_SCROLL_UP_FAST,
SPECIAL_SIEVE_MENU, // | des tests sur cet intervalle sont SPECIAL_SCROLL_DOWN_FAST,
SPECIAL_COLORIZE_MODE, // | faits dans le moteur. SPECIAL_SCROLL_LEFT_FAST,
SPECIAL_COLORIZE_MENU, // | SPECIAL_SCROLL_RIGHT_FAST,
SPECIAL_SMOOTH_MODE, // | SPECIAL_SCROLL_UP_SLOW,
SPECIAL_SMOOTH_MENU, // | SPECIAL_SCROLL_DOWN_SLOW,
SPECIAL_SMEAR_MODE, // | SPECIAL_SCROLL_LEFT_SLOW,
SPECIAL_TILING_MODE, // | SPECIAL_SCROLL_RIGHT_SLOW,
SPECIAL_TILING_MENU // | SPECIAL_SHOW_HIDE_CURSOR,
}; SPECIAL_PINCEAU_POINT,
SPECIAL_DESSIN_CONTINU,
// Définition des opérations: SPECIAL_FLIP_X,
SPECIAL_FLIP_Y,
enum OPERATIONS SPECIAL_ROTATE_90,
{ SPECIAL_ROTATE_180,
OPERATION_DESSIN_CONTINU, // Dessin à la main continu SPECIAL_STRETCH,
OPERATION_DESSIN_DISCONTINU, // Dessin à la main discontinu SPECIAL_DISTORT,
OPERATION_DESSIN_POINT, // Dessin à la main point par point SPECIAL_OUTLINE,
OPERATION_LIGNE, // Lignes SPECIAL_NIBBLE,
OPERATION_K_LIGNE, // Lignes reliées SPECIAL_GET_BRUSH_COLORS,
OPERATION_LIGNES_CENTREES, // Lignes concentriques SPECIAL_RECOLORIZE_BRUSH,
OPERATION_RECTANGLE_VIDE, // Rectangle vide SPECIAL_ROTATE_ANY_ANGLE,
OPERATION_RECTANGLE_PLEIN, // Rectangle plein SPECIAL_LOAD_BRUSH,
OPERATION_CERCLE_VIDE, // Cercle vide SPECIAL_SAVE_BRUSH,
OPERATION_CERCLE_PLEIN, // Cercle plein SPECIAL_INVERT_SIEVE,
OPERATION_ELLIPSE_VIDE, // Ellipse vide SPECIAL_ZOOM_IN,
OPERATION_ELLIPSE_PLEINE, // Ellipse pleine SPECIAL_ZOOM_OUT,
OPERATION_FILL, // Fill SPECIAL_CENTER_ATTACHMENT,
OPERATION_REMPLACER, // Remplacer couleur SPECIAL_TOP_LEFT_ATTACHMENT,
OPERATION_PRISE_BROSSE, // Prise de brosse rectangulaire SPECIAL_TOP_RIGHT_ATTACHMENT,
OPERATION_POLYBROSSE, // Prise d'une brosse multiforme SPECIAL_BOTTOM_LEFT_ATTACHMENT,
OPERATION_PIPETTE, // Récupération d'une couleur SPECIAL_BOTTOM_RIGHT_ATTACHMENT,
OPERATION_LOUPE, // Positionnement de la fenêtre de loupe SPECIAL_EXCLUDE_COLORS_MENU,
OPERATION_COURBE_3_POINTS, // Courbe à 3 points SPECIAL_SHADE_MODE, // |
OPERATION_COURBE_4_POINTS, // Courbe à 4 points SPECIAL_SHADE_MENU, // |
OPERATION_SPRAY, // Spray SPECIAL_QUICK_SHADE_MODE, // |
OPERATION_POLYGONE, // Polygone SPECIAL_QUICK_SHADE_MENU, // |
OPERATION_POLYFORM, // Polyforme SPECIAL_STENCIL_MODE, // |
OPERATION_POLYFILL, // Polyfill SPECIAL_STENCIL_MENU, // |
OPERATION_FILLED_POLYFORM, // Polyforme rempli SPECIAL_MASK_MODE, // | Il faut que le premier effet soit
OPERATION_SCROLL, // Scroll SPECIAL_MASK_MENU, // | SPECIAL_SHADE_MODE, et que le
OPERATION_CERCLE_DEGRADE, // Cercles dégradés SPECIAL_GRID_MODE, // | dernier soit SPECIAL_TILING_MENU,
OPERATION_ELLIPSE_DEGRADEE, // Ellipses dégradées SPECIAL_GRID_MENU, // |_ et que seuls des effets soient
OPERATION_TOURNER_BROSSE, // Faire tourner brosse SPECIAL_SIEVE_MODE, // | définis entre ces deux là car
OPERATION_ETIRER_BROSSE, // Etirer brosse SPECIAL_SIEVE_MENU, // | des tests sur cet intervalle sont
OPERATION_DEFORMER_BROSSE, // Deformer brosse SPECIAL_COLORIZE_MODE, // | faits dans le moteur.
SPECIAL_COLORIZE_MENU, // |
OPERATION_AUCUNE SPECIAL_SMOOTH_MODE, // |
}; SPECIAL_SMOOTH_MENU, // |
SPECIAL_SMEAR_MODE, // |
SPECIAL_TILING_MODE, // |
SPECIAL_TILING_MENU // |
#endif };
// 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_LIGNE, // Lignes
OPERATION_K_LIGNE, // Lignes reliées
OPERATION_LIGNES_CENTREES, // Lignes concentriques
OPERATION_RECTANGLE_VIDE, // Rectangle vide
OPERATION_RECTANGLE_PLEIN, // Rectangle plein
OPERATION_CERCLE_VIDE, // Cercle vide
OPERATION_CERCLE_PLEIN, // Cercle plein
OPERATION_ELLIPSE_VIDE, // Ellipse vide
OPERATION_ELLIPSE_PLEINE, // Ellipse pleine
OPERATION_FILL, // Fill
OPERATION_REMPLACER, // Remplacer couleur
OPERATION_PRISE_BROSSE, // Prise de brosse rectangulaire
OPERATION_POLYBROSSE, // Prise d'une brosse multiforme
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 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
OPERATION_AUCUNE
};
#endif

View File

@ -126,7 +126,13 @@ void Get_input(void)
break; break;
case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONDOWN:
//Clic sur un des boutons de la souris //Clic sur un des boutons de la souris
INPUT_Nouveau_Mouse_K=event.button.button; switch(event.button.button)
{
case SDL_BUTTON_LEFT: INPUT_Nouveau_Mouse_K = 1; break;
case SDL_BUTTON_MIDDLE: // Pour SDL, 2 = clic milieu. Pour nous c'est le clic droit
case SDL_BUTTON_RIGHT: // Clic droit SDL, clic droit pour nous aussi ( pour le moment en tout cas)
INPUT_Nouveau_Mouse_K = 2;
}
break; break;
case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONUP:
//Bouton souris relaché //Bouton souris relaché
@ -450,7 +456,7 @@ void Rotate_90_deg_LOWLEVEL(byte * Source,byte * Destination)
void Remap_general_LOWLEVEL(byte * Table_conv,byte * Buffer,short Largeur,short Hauteur,short Largeur_buffer) void Remap_general_LOWLEVEL(byte * Table_conv,byte * Buffer,short Largeur,short Hauteur,short Largeur_buffer)
{ {
puts("Remap_general_LOWLEVEL non implémenté!"); UNIMPLEMENTED
} }
void Copier_image_dans_brosse(short Debut_X,short Debut_Y,short Brosse_Largeur,short Brosse_Hauteur,word Largeur_image) void Copier_image_dans_brosse(short Debut_X,short Debut_Y,short Brosse_Largeur,short Brosse_Hauteur,word Largeur_image)

View File

@ -3003,7 +3003,8 @@ void Afficher_sprite_dans_menu(int Numero_bouton,int Numero_sprite)
Pixel_dans_menu(Pos_menu_X,Pos_menu_Y,Couleur); Pixel_dans_menu(Pos_menu_X,Pos_menu_Y,Couleur);
BLOCK_MENU[Pos_menu_Y][Pos_menu_X]=Couleur; BLOCK_MENU[Pos_menu_Y][Pos_menu_X]=Couleur;
} }
SDL_UpdateRect(Ecran_SDL,0,Menu_Ordonnee*Menu_Facteur_Y,Pos_X*Menu_Facteur_X,Pos_Y*Menu_Facteur_Y); SDL_UpdateRect(Ecran_SDL,Menu_Facteur_X*(Bouton[Numero_bouton].Decalage_X+1),(Bouton[Numero_bouton].Decalage_Y+1)*Menu_Facteur_Y,
Pos_X*Menu_Facteur_X,Pos_Y*Menu_Facteur_Y);
} }
// -- Redessiner la forme du pinceau dans le menu -- // -- Redessiner la forme du pinceau dans le menu --

View File

@ -8,6 +8,7 @@
#include "operatio.h" #include "operatio.h"
#include "boutons.h" #include "boutons.h"
#include "pages.h" #include "pages.h"
#include "erreurs.h"
#ifdef __WATCOMC__ #ifdef __WATCOMC__
#define M_PI 3.14159265358979323846 #define M_PI 3.14159265358979323846