Loading of gfx2.dat is ok
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@18 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									ea05f5a6c2
								
							
						
					
					
						commit
						dca8234941
					
				
							
								
								
									
										36
									
								
								divers.c
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								divers.c
									
									
									
									
									
								
							@ -4,6 +4,22 @@
 | 
			
		||||
#include "sdlscreen.h"
 | 
			
		||||
#include "global.h"
 | 
			
		||||
 | 
			
		||||
// Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème
 | 
			
		||||
byte Recuperer_nb_lignes(void)
 | 
			
		||||
{
 | 
			
		||||
	/*
 | 
			
		||||
  mov  ax,1130h
 | 
			
		||||
  xor  bh,bh
 | 
			
		||||
  push es
 | 
			
		||||
  int  10h
 | 
			
		||||
  pop  es
 | 
			
		||||
  inc  dl
 | 
			
		||||
  mov  [esp+28],dl
 | 
			
		||||
	*/
 | 
			
		||||
	puts("Recuperer_nb_lignes non implémenté!\n");
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
 | 
			
		||||
{
 | 
			
		||||
    int Nombre_De_Pixels=0; //ECX
 | 
			
		||||
@ -75,12 +91,13 @@ void Effacer_image_courante(byte Couleur)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Sensibilite_souris(word X,word Y)
 | 
			
		||||
{;//TODO Implémenter la sensibilité souris
 | 
			
		||||
{
 | 
			
		||||
	puts("Sensibilite_souris non implémenté!\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Get_input(void)
 | 
			
		||||
{
 | 
			
		||||
    SDL_PollEvent(Evenement_SDL);
 | 
			
		||||
	puts("Get_input non implémenté!\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -133,12 +150,6 @@ void Clavier_de_depart(void)
 | 
			
		||||
	puts("Clavier_de_depart non implémenté!\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
byte Recuperer_nb_lignes(void)
 | 
			
		||||
{
 | 
			
		||||
	puts("Recuperer_nb_lignes non implémenté!\n");
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Clavier_americain(void)
 | 
			
		||||
{
 | 
			
		||||
	puts("Clavier_americain non implémenté!\n");
 | 
			
		||||
@ -249,6 +260,15 @@ byte Lit_pixel_dans_ecran_backup   (word X,word Y)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
byte Type_de_lecteur_de_disquette(byte Numero_de_lecteur)
 | 
			
		||||
// Numero_de_lecteur compris entre 0 et 3 (4 lecteurs de disquettes)
 | 
			
		||||
//
 | 
			
		||||
// Résultat = 0 : Pas de lecteur
 | 
			
		||||
//            1 : Lecteur 360 Ko
 | 
			
		||||
//            2 : Lecteur 1.2 Mo
 | 
			
		||||
//            3 : Lecteur 720 Ko
 | 
			
		||||
//            4 : Lecteur 1.4 Mo
 | 
			
		||||
//            5 : Lecteur 2.8 Mo (??? pas sur ???)
 | 
			
		||||
//            6 : Lecteur 2.8 Mo
 | 
			
		||||
{
 | 
			
		||||
	puts("Type_de_lecteur_de_disquette non implémenté!\n");
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										65
									
								
								init.c
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								init.c
									
									
									
									
									
								
							@ -20,6 +20,8 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include "divers.h"
 | 
			
		||||
 | 
			
		||||
#include "errno.h"
 | 
			
		||||
 | 
			
		||||
//  On déclare méchamment le prototype de Erreur pour éviter de faire un
 | 
			
		||||
// fichier "main.h":
 | 
			
		||||
void Erreur(int Code);
 | 
			
		||||
@ -27,11 +29,13 @@ void Erreur(int Code);
 | 
			
		||||
// Chercher le répertoire contenant GFX2.EXE
 | 
			
		||||
void Chercher_repertoire_du_programme(char * Chaine)
 | 
			
		||||
{
 | 
			
		||||
  int Position;
 | 
			
		||||
  /*int Position;
 | 
			
		||||
 | 
			
		||||
  strcpy(Repertoire_du_programme,Chaine);
 | 
			
		||||
  for (Position=strlen(Repertoire_du_programme);Repertoire_du_programme[Position]!='\\';Position--);
 | 
			
		||||
  Repertoire_du_programme[Position+1]='\0';
 | 
			
		||||
  for (Position=strlen(Repertoire_du_programme);Repertoire_du_programme[Position]!='/';Position--); //sous linux c'est un /, sous windows c'est \\
 | 
			
		||||
  Repertoire_du_programme[Position+1]='\0';*/
 | 
			
		||||
  puts("Chercher_repertoire_du_programme: implémentation incomplète");
 | 
			
		||||
  Repertoire_du_programme[0]=0; //On va travailler dans le dossier courant ...
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -64,7 +68,7 @@ word Drive_Touche[26]=
 | 
			
		||||
  0x0415,
 | 
			
		||||
  0x042C
 | 
			
		||||
};
 | 
			
		||||
// Ajouter un lecteur … la liste de lecteurs
 | 
			
		||||
// Ajouter un lecteur à la liste de lecteurs
 | 
			
		||||
void Ajouter_lecteur(byte Numero, byte Type)
 | 
			
		||||
{
 | 
			
		||||
  Drive[Nb_drives].Lettre=Numero+65;
 | 
			
		||||
@ -78,6 +82,7 @@ void Ajouter_lecteur(byte Numero, byte Type)
 | 
			
		||||
// Rechercher la liste et le type des lecteurs de la machine
 | 
			
		||||
void Rechercher_drives(void)
 | 
			
		||||
{
 | 
			
		||||
/*
 | 
			
		||||
  byte Lecteur;
 | 
			
		||||
  byte Nb_lecteurs_disquettes;
 | 
			
		||||
  byte Lecteur_de_disquettes;
 | 
			
		||||
@ -186,7 +191,9 @@ void Rechercher_drives(void)
 | 
			
		||||
    if (Freespace(Lecteur+1)!=-1)
 | 
			
		||||
      Ajouter_lecteur(Lecteur,DRIVE_NETWORK);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
//Sous linux, il n'y a pas de lecteurs, on va juste mettre un disque dur qui pointera vers la racine
 | 
			
		||||
Ajouter_lecteur(0,DRIVE_HDD); //Le lecteur numéro 0 est un disque dur.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -228,20 +235,34 @@ void Charger_DAT(void)
 | 
			
		||||
  byte Pos_Y;
 | 
			
		||||
  word Mot_temporaire;
 | 
			
		||||
 | 
			
		||||
  struct stat* Informations_Fichier=NULL;
 | 
			
		||||
 | 
			
		||||
  struct stat Informations_Fichier;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  strcpy(Nom_du_fichier,Repertoire_du_programme);
 | 
			
		||||
  strcat(Nom_du_fichier,"GFX2.DAT");
 | 
			
		||||
 | 
			
		||||
  Handle=open(Nom_du_fichier,O_RDONLY);
 | 
			
		||||
  if (Handle==-1)
 | 
			
		||||
    Erreur(ERREUR_DAT_ABSENT);
 | 
			
		||||
  stat(Nom_du_fichier,Informations_Fichier);
 | 
			
		||||
  Taille_fichier=Informations_Fichier->st_size;
 | 
			
		||||
  strcat(Nom_du_fichier,"gfx2.dat");
 | 
			
		||||
*/
 | 
			
		||||
  strcpy(Nom_du_fichier,"gfx2.dat");
 | 
			
		||||
  puts("Charger_DAT incomplet");
 | 
			
		||||
  if(stat(Nom_du_fichier,&Informations_Fichier))
 | 
			
		||||
	switch errno
 | 
			
		||||
		{
 | 
			
		||||
			case EACCES: puts("La permission de parcours est refusée pour un des répertoires contenu dans le chemin path."); break;
 | 
			
		||||
			case EBADF:  puts("filedes est un mauvais descripteur."); break;
 | 
			
		||||
			case EFAULT: puts("Un pointeur se trouve en dehors de l'espace d'adressage."); break;
 | 
			
		||||
			case ELOOP:  puts("Trop de liens symboliques rencontrés dans le chemin d'accès."); break;
 | 
			
		||||
			case ENAMETOOLONG: puts("Nom de fichier trop long."); break;
 | 
			
		||||
			case ENOENT: puts("Un composant du chemin path n'existe pas, ou il s'agit d'une chaîne vide."); break;
 | 
			
		||||
			case ENOMEM: puts("Pas assez de mémoire pour le noyau."); break;
 | 
			
		||||
			case ENOTDIR: puts("Un composant du chemin d'accès n'est pas un répertoire."); break;
 | 
			
		||||
		}
 | 
			
		||||
  Taille_fichier=Informations_Fichier.st_size;
 | 
			
		||||
  if (Taille_fichier!=TAILLE_FICHIER_DATA)
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  
 | 
			
		||||
	Handle=open(Nom_du_fichier,O_RDONLY);
 | 
			
		||||
	if (Handle==-1)
 | 
			
		||||
		Erreur(ERREUR_DAT_ABSENT);
 | 
			
		||||
  
 | 
			
		||||
  if (read(Handle,Palette_defaut,sizeof(T_Palette))!=sizeof(T_Palette))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  Decrypte((byte *)Palette_defaut,sizeof(T_Palette));
 | 
			
		||||
@ -941,7 +962,7 @@ void Initialisation_des_boutons(void)
 | 
			
		||||
 | 
			
		||||
  Initialiser_bouton(BOUTON_CHOIX_COL,
 | 
			
		||||
                     LARGEUR_MENU+1,2,
 | 
			
		||||
                     1,32, // La largeur est mise … jour … chq chngmnt de mode
 | 
			
		||||
                     1,32, // La largeur est mise à jour à chq chngmnt de mode
 | 
			
		||||
                     FORME_BOUTON_SANS_CADRE,
 | 
			
		||||
                     Bouton_Choix_forecolor,Bouton_Choix_backcolor,
 | 
			
		||||
                     Rien_du_tout,
 | 
			
		||||
@ -1738,16 +1759,18 @@ int Charger_CFG(int Tout_charger)
 | 
			
		||||
  struct Config_Chunk        Chunk;
 | 
			
		||||
  struct Config_Infos_touche CFG_Infos_touche;
 | 
			
		||||
  struct Config_Mode_video   CFG_Mode_video;
 | 
			
		||||
  struct stat* Informations_Fichier=NULL;
 | 
			
		||||
  struct stat Informations_Fichier;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  strcpy(Nom_du_fichier,Repertoire_du_programme);
 | 
			
		||||
  strcat(Nom_du_fichier,"GFX2.CFG");
 | 
			
		||||
  strcat(Nom_du_fichier,"gfx2.cfg");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  stat(Nom_du_fichier,&Informations_Fichier);
 | 
			
		||||
  Taille_fichier=Informations_Fichier.st_size;
 | 
			
		||||
  
 | 
			
		||||
  if ((Handle=open(Nom_du_fichier,O_RDONLY))==-1)
 | 
			
		||||
    return ERREUR_CFG_ABSENT;
 | 
			
		||||
  stat(Nom_du_fichier,Informations_Fichier);
 | 
			
		||||
  Taille_fichier=Informations_Fichier->st_size;
 | 
			
		||||
  
 | 
			
		||||
  if ( (Taille_fichier<sizeof(CFG_Header))
 | 
			
		||||
    || (read(Handle,&CFG_Header,sizeof(CFG_Header))!=sizeof(CFG_Header))
 | 
			
		||||
@ -2044,7 +2067,7 @@ int Sauver_CFG(void)
 | 
			
		||||
  if (write(Handle,Smooth_Matrice,sizeof(Smooth_Matrice))!=sizeof(Smooth_Matrice))
 | 
			
		||||
    goto Erreur_sauvegarde_config;
 | 
			
		||||
 | 
			
		||||
  // Sauvegarde des couleurs … exclure
 | 
			
		||||
  // Sauvegarde des couleurs à exclure
 | 
			
		||||
  Chunk.Numero=CHUNK_EXCLUDE_COLORS;
 | 
			
		||||
  Chunk.Taille=sizeof(Exclude_color);
 | 
			
		||||
  if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
 | 
			
		||||
@ -2108,7 +2131,7 @@ void Initialiser_la_table_precalculee_des_distances_de_couleur(void)
 | 
			
		||||
  // 128 valeurs pour chaque teinte, 3 teintes (Rouge, vert et bleu)
 | 
			
		||||
  MC_Table_differences=(int *)malloc(sizeof(int)*(3*128));
 | 
			
		||||
 | 
			
		||||
  // Pour chacune des 128 positions correspondant … une valeur de différence:
 | 
			
		||||
  // Pour chacune des 128 positions correspondant à une valeur de différence:
 | 
			
		||||
  for (Indice=0;Indice<128;Indice++)
 | 
			
		||||
  {
 | 
			
		||||
    if (Indice<64)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								main.c
									
									
									
									
									
								
							@ -199,7 +199,7 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
 | 
			
		||||
        Un_fichier_a_ete_passe_en_parametre=1;
 | 
			
		||||
        Option2=2;
 | 
			
		||||
 | 
			
		||||
        // On récupŠre le chemin complet du paramŠtre
 | 
			
		||||
        // On récupère le chemin complet du paramètre
 | 
			
		||||
        Buffer=realpath(argv[1],NULL);
 | 
			
		||||
        // Et on découpe ce chemin en répertoire(path) + fichier(.ext)
 | 
			
		||||
        _splitpath(Buffer,Principal_Repertoire_fichier,Principal_Nom_fichier);
 | 
			
		||||
@ -231,7 +231,7 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    default:
 | 
			
		||||
      // Erreur: trop de paramŠtres sur la ligne de commande
 | 
			
		||||
      // Erreur: trop de paramètres sur la ligne de commande
 | 
			
		||||
      Erreur(ERREUR_LIGNE_COMMANDE);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -253,9 +253,9 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
 | 
			
		||||
  printf("°±²Û GrafX 2.00 %s%s þ Copyright (c)1996-1999 Sunset Design Û²±°\n",ALPHA_BETA,POURCENTAGE_VERSION);
 | 
			
		||||
 | 
			
		||||
  // On crée dŠs maintenant les descripteurs des listes de pages pour la page
 | 
			
		||||
  // On crée dès maintenant les descripteurs des listes de pages pour la page
 | 
			
		||||
  // principale et la page de brouillon afin que leurs champs ne soient pas
 | 
			
		||||
  // invalide lors des appels aux multiples fonctions manipulées …
 | 
			
		||||
  // invalide lors des appels aux multiples fonctions manipulées à
 | 
			
		||||
  // l'initialisation du programme.
 | 
			
		||||
  Principal_Backups=(S_Liste_de_pages *)malloc(sizeof(S_Liste_de_pages));
 | 
			
		||||
  Brouillon_Backups=(S_Liste_de_pages *)malloc(sizeof(S_Liste_de_pages));
 | 
			
		||||
@ -267,7 +267,7 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
  // désignées au démarrage (couleurs du menu, ...)
 | 
			
		||||
  Initialiser_la_table_precalculee_des_distances_de_couleur();
 | 
			
		||||
 | 
			
		||||
  // On détermine dŠs le départ o— se trouve le fichier:
 | 
			
		||||
  // On détermine dès le départ où se trouve le fichier:
 | 
			
		||||
  Chercher_repertoire_du_programme(argv[0]);
 | 
			
		||||
  // On détecte les lecteurs qui sont accessibles:
 | 
			
		||||
  Rechercher_drives();
 | 
			
		||||
@ -303,7 +303,7 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
  Brosse_File_list_Decalage=0;
 | 
			
		||||
  Brosse_Format=0;
 | 
			
		||||
 | 
			
		||||
  // On initialise les commentaires des images … des chaŒnes vides
 | 
			
		||||
  // On initialise les commentaires des images à des chaŒnes vides
 | 
			
		||||
  Principal_Commentaire[0]='\0';
 | 
			
		||||
  Brouillon_Commentaire[0]='\0';
 | 
			
		||||
  Brosse_Commentaire[0]='\0';
 | 
			
		||||
@ -401,8 +401,8 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
  Colorize_Mode_en_cours=0; // Par défaut, la méthode par interpolation
 | 
			
		||||
  Calculer_les_tables_de_Colorize();
 | 
			
		||||
    // On initialise les infos du mode Tiling:
 | 
			
		||||
  Tiling_Mode=0;  //   Pas besoin d'initialiser les décalages car ‡a se fait
 | 
			
		||||
                  // en prenant une brosse (toujours mis … 0).
 | 
			
		||||
  Tiling_Mode=0;  //   Pas besoin d'initialiser les décalages car ça se fait
 | 
			
		||||
                  // en prenant une brosse (toujours mis à 0).
 | 
			
		||||
    // On initialise les infos du mode Mask:
 | 
			
		||||
  Mask_Mode=0;
 | 
			
		||||
 | 
			
		||||
@ -412,15 +412,11 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
  Spray_Delay=1;
 | 
			
		||||
  Spray_Mono_flow=10;
 | 
			
		||||
  memset(Spray_Multi_flow,0,256);
 | 
			
		||||
  srand(time(NULL)); // On randomize un peu tout ‡a...
 | 
			
		||||
  srand(time(NULL)); // On randomize un peu tout ça...
 | 
			
		||||
	
 | 
			
		||||
  // Récupération du nombre de lignes de l'ancien mode
 | 
			
		||||
  Ancien_nb_lignes=Recuperer_nb_lignes();
 | 
			
		||||
  // Passer en clavier américain
 | 
			
		||||
  Clavier_americain();
 | 
			
		||||
 | 
			
		||||
  // Tester la présence de la souris
 | 
			
		||||
  if (!Detection_souris()) Erreur(ERREUR_DRIVER_SOURIS);
 | 
			
		||||
  //Clavier_americain();
 | 
			
		||||
  //TODO: Voir à quoi ça sert vraiement ...
 | 
			
		||||
 | 
			
		||||
  // Initialisation des boutons
 | 
			
		||||
  Initialisation_des_boutons();
 | 
			
		||||
@ -519,10 +515,10 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
    Erreur(ERREUR_MEMOIRE);
 | 
			
		||||
 | 
			
		||||
  // On remet le nom par défaut pour la page de brouillon car il été modifié
 | 
			
		||||
  // par le passage d'un fichier en paramŠtre lors du traitement précédent.
 | 
			
		||||
  // par le passage d'un fichier en paramètre lors du traitement précédent.
 | 
			
		||||
  // Note: le fait que l'on ne modifie que les variables globales Brouillon_*
 | 
			
		||||
  // et pas les infos contenues dans la page de brouillon elle-mˆme ne m'ins-
 | 
			
		||||
  // -pire pas confiance mais ‡a a l'air de marcher sans poser de problŠmes,
 | 
			
		||||
  // et pas les infos contenues dans la page de brouillon elle-même ne m'ins-
 | 
			
		||||
  // -pire pas confiance mais ça a l'air de marcher sans poser de problèmes,
 | 
			
		||||
  // alors...
 | 
			
		||||
  if (Un_fichier_a_ete_passe_en_parametre)
 | 
			
		||||
  {
 | 
			
		||||
@ -549,10 +545,10 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
  Brouillon_Image_modifiee=0;
 | 
			
		||||
  Principal_Image_modifiee=0;
 | 
			
		||||
 | 
			
		||||
  // Le programme débute en mode de dessin … la main
 | 
			
		||||
  // Le programme débute en mode de dessin à la main
 | 
			
		||||
  Enclencher_bouton(BOUTON_DESSIN,A_GAUCHE);
 | 
			
		||||
 | 
			
		||||
  // On initialise la brosse initiale … 1 pixel blanc:
 | 
			
		||||
  // On initialise la brosse initiale à 1 pixel blanc:
 | 
			
		||||
  Brosse_Largeur=1;
 | 
			
		||||
  Brosse_Hauteur=1;
 | 
			
		||||
  Capturer_brosse(0,0,0,0,0);
 | 
			
		||||
@ -565,22 +561,22 @@ void Fermeture_du_programme(void)
 | 
			
		||||
  unsigned Bidon;
 | 
			
		||||
  int      Retour;
 | 
			
		||||
 | 
			
		||||
  // On libŠre le buffer de gestion de lignes
 | 
			
		||||
  // On libère le buffer de gestion de lignes
 | 
			
		||||
  free(Buffer_de_ligne_horizontale);
 | 
			
		||||
 | 
			
		||||
  // On libŠre le pinceau spécial
 | 
			
		||||
  // On libère le pinceau spécial
 | 
			
		||||
  free(Pinceau_Sprite);
 | 
			
		||||
 | 
			
		||||
  // On libŠre la table précalculée des distances de teintes
 | 
			
		||||
  // On libère la table précalculée des distances de teintes
 | 
			
		||||
  free(MC_Table_differences);
 | 
			
		||||
 | 
			
		||||
  // On libŠre les différents écrans virtuels et brosse:
 | 
			
		||||
  // On libère les différents écrans virtuels et brosse:
 | 
			
		||||
  free(Brosse);
 | 
			
		||||
  Nouveau_nombre_de_backups(0);
 | 
			
		||||
  free(Brouillon_Ecran);
 | 
			
		||||
  free(Principal_Ecran);
 | 
			
		||||
 | 
			
		||||
  // On libŠre également les données de l'aide:
 | 
			
		||||
  // On libère également les données de l'aide:
 | 
			
		||||
  for (Bidon=0;Bidon<NB_SECTIONS_AIDE;Bidon++)
 | 
			
		||||
    free(Table_d_aide[Bidon].Debut_de_la_liste);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user