Corrected the palette reduction system. Gif loading now OK
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@113 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									216ea8c9c2
								
							
						
					
					
						commit
						2c187ef632
					
				
							
								
								
									
										21
									
								
								divers.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								divers.c
									
									
									
									
									
								
							@ -606,8 +606,21 @@ long Freespace(byte Numero_de_lecteur)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne)
 | 
					byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
        UNIMPLEMENTED
 | 
						// CL sera le rang auquel on extrait les bits de la couleur
 | 
				
			||||||
        return 0;
 | 
						byte cl = 7 - (Pos_X & 7);
 | 
				
			||||||
 | 
						int ax,bh,dx;
 | 
				
			||||||
 | 
						byte bl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(dx = HBPm1;dx>=0;dx--);
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						//CIL_Loop
 | 
				
			||||||
 | 
							ax = (Vraie_taille_ligne * HBPm1 + Pos_X) >> 3;
 | 
				
			||||||
 | 
							bh = (LBM_Buffer[ax] >> cl) & 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bl = (bl << 1) + bh;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return bl;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Palette_256_to_64(T_Palette Palette)
 | 
					void Palette_256_to_64(T_Palette Palette)
 | 
				
			||||||
@ -615,9 +628,9 @@ void Palette_256_to_64(T_Palette Palette)
 | 
				
			|||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	for(i=0;i<256;i++)
 | 
						for(i=0;i<256;i++)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		Palette[i].R = Palette[i].B >> 2;
 | 
							Palette[i].R = Palette[i].R >> 2;
 | 
				
			||||||
		Palette[i].V = Palette[i].V >> 2;
 | 
							Palette[i].V = Palette[i].V >> 2;
 | 
				
			||||||
		Palette[i].B = Palette[i].R >> 2;
 | 
							Palette[i].B = Palette[i].B >> 2;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										38
									
								
								loadsave.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								loadsave.c
									
									
									
									
									
								
							@ -25,7 +25,7 @@
 | 
				
			|||||||
	#if __BYTE_ORDER == __BIG_ENDIAN
 | 
						#if __BYTE_ORDER == __BIG_ENDIAN
 | 
				
			||||||
		#define endian_magic(x) bswap_16(x)
 | 
							#define endian_magic(x) bswap_16(x)
 | 
				
			||||||
	#else
 | 
						#else
 | 
				
			||||||
		#define endian_magic(x) bswap_16(x)
 | 
							#define endian_magic(x) (x)
 | 
				
			||||||
	#endif
 | 
						#endif
 | 
				
			||||||
#elif __WATCOMC__
 | 
					#elif __WATCOMC__
 | 
				
			||||||
	#define endian_magic(x) (x)
 | 
						#define endian_magic(x) (x)
 | 
				
			||||||
@ -1414,9 +1414,7 @@ void Test_LBM(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// -- Lire un fichier au format LBM -----------------------------------------
 | 
					// -- Lire un fichier au format LBM -----------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  byte * LBM_Buffer;
 | 
					 | 
				
			||||||
  byte Image_HAM;
 | 
					  byte Image_HAM;
 | 
				
			||||||
  byte HBPm1; // Header.BitPlanes-1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // ---------------- Adapter la palette pour les images HAM ----------------
 | 
					  // ---------------- Adapter la palette pour les images HAM ----------------
 | 
				
			||||||
  void Adapter_Palette_HAM(void)
 | 
					  void Adapter_Palette_HAM(void)
 | 
				
			||||||
@ -1654,7 +1652,7 @@ void Load_LBM(void)
 | 
				
			|||||||
  short Vraie_taille_ligne; // Taille d'une ligne en pixels
 | 
					  short Vraie_taille_ligne; // Taille d'une ligne en pixels
 | 
				
			||||||
  byte  Couleur;
 | 
					  byte  Couleur;
 | 
				
			||||||
  long  Taille_du_fichier;
 | 
					  long  Taille_du_fichier;
 | 
				
			||||||
  struct stat* Informations_Fichier=NULL;
 | 
					  struct stat Informations_Fichier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Nom_fichier_complet(Nom_du_fichier,0);
 | 
					  Nom_fichier_complet(Nom_du_fichier,0);
 | 
				
			||||||
@ -1663,8 +1661,8 @@ void Load_LBM(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if ((LBM_Fichier=open(Nom_du_fichier,O_RDONLY))!=-1)
 | 
					  if ((LBM_Fichier=open(Nom_du_fichier,O_RDONLY))!=-1)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
      stat(Nom_du_fichier,Informations_Fichier);
 | 
					      stat(Nom_du_fichier,&Informations_Fichier);
 | 
				
			||||||
    Taille_du_fichier=Informations_Fichier->st_size;
 | 
					    Taille_du_fichier=Informations_Fichier.st_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // On avance dans le fichier (pas besoin de tester ce qui l'a déjà été)
 | 
					    // On avance dans le fichier (pas besoin de tester ce qui l'a déjà été)
 | 
				
			||||||
    read(LBM_Fichier,Section,4);
 | 
					    read(LBM_Fichier,Section,4);
 | 
				
			||||||
@ -1675,7 +1673,19 @@ void Load_LBM(void)
 | 
				
			|||||||
    Lire_long();
 | 
					    Lire_long();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Maintenant on lit le header pour pouvoir commencer le chargement de l'image
 | 
					    // Maintenant on lit le header pour pouvoir commencer le chargement de l'image
 | 
				
			||||||
    if ( (read(LBM_Fichier,&Header,sizeof(struct Header_LBM))==sizeof(struct Header_LBM))
 | 
					    if ( (read(LBM_Fichier,&Header.Width,sizeof(Header.Width))==sizeof(Header.Width))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Height,sizeof(Header.Height))==sizeof(Header.Height))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Xorg,sizeof(Header.Xorg))==sizeof(Header.Xorg))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Yorg,sizeof(Header.Yorg))==sizeof(Header.Yorg))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Bit_planes,sizeof(Header.Bit_planes))==sizeof(Header.Bit_planes))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Mask,sizeof(Header.Mask))==sizeof(Header.Mask))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Compression,sizeof(Header.Compression))==sizeof(Header.Compression))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Pad1,sizeof(Header.Pad1))==sizeof(Header.Pad1))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Transp_col,sizeof(Header.Transp_col))==sizeof(Header.Transp_col))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Xaspect,sizeof(Header.Xaspect))==sizeof(Header.Xaspect))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Yaspect,sizeof(Header.Yaspect))==sizeof(Header.Yaspect))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Xscreen,sizeof(Header.Xscreen))==sizeof(Header.Xscreen))
 | 
				
			||||||
 | 
					      && (read(LBM_Fichier,&Header.Yscreen,sizeof(Header.Yscreen))==sizeof(Header.Yscreen))
 | 
				
			||||||
      && Header.Width && Header.Height)
 | 
					      && Header.Width && Header.Height)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      if ( (Header.Bit_planes) && (Wait_for((byte *)"CMAP")) )
 | 
					      if ( (Header.Bit_planes) && (Wait_for((byte *)"CMAP")) )
 | 
				
			||||||
@ -2790,7 +2800,12 @@ void Load_GIF(void)
 | 
				
			|||||||
          //   On peut maintenant charger la nouvelle palette:
 | 
					          //   On peut maintenant charger la nouvelle palette:
 | 
				
			||||||
          if (!(LSDB.Aspect & 0x80))
 | 
					          if (!(LSDB.Aspect & 0x80))
 | 
				
			||||||
            // Palette dans l'ordre:
 | 
					            // Palette dans l'ordre:
 | 
				
			||||||
            read(GIF_Fichier,Principal_Palette,Nb_couleurs*3);
 | 
						    for(Indice_de_couleur=0;Indice_de_couleur<Nb_couleurs;Indice_de_couleur++)
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
					            	read(GIF_Fichier,&Principal_Palette[Indice_de_couleur].R,1);
 | 
				
			||||||
 | 
					            	read(GIF_Fichier,&Principal_Palette[Indice_de_couleur].V,1);
 | 
				
			||||||
 | 
					            	read(GIF_Fichier,&Principal_Palette[Indice_de_couleur].B,1);
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
          else
 | 
					          else
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
            // Palette triée par composantes:
 | 
					            // Palette triée par composantes:
 | 
				
			||||||
@ -2872,7 +2887,12 @@ void Load_GIF(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
              if (!(IDB.Indicateur & 0x40))
 | 
					              if (!(IDB.Indicateur & 0x40))
 | 
				
			||||||
                // Palette dans l'ordre:
 | 
					                // Palette dans l'ordre:
 | 
				
			||||||
                read(GIF_Fichier,Principal_Palette,Nb_couleurs*3);
 | 
						        for(Indice_de_couleur=0;Indice_de_couleur<Nb_couleurs;Indice_de_couleur++)
 | 
				
			||||||
 | 
						        {   
 | 
				
			||||||
 | 
					            		read(GIF_Fichier,&Principal_Palette[Indice_de_couleur].R,1);
 | 
				
			||||||
 | 
					            		read(GIF_Fichier,&Principal_Palette[Indice_de_couleur].V,1);
 | 
				
			||||||
 | 
					            		read(GIF_Fichier,&Principal_Palette[Indice_de_couleur].B,1);
 | 
				
			||||||
 | 
						        }
 | 
				
			||||||
              else
 | 
					              else
 | 
				
			||||||
              {
 | 
					              {
 | 
				
			||||||
                // Palette triée par composantes:
 | 
					                // Palette triée par composantes:
 | 
				
			||||||
 | 
				
			|||||||
@ -18,6 +18,9 @@ void Test_LBM(void);
 | 
				
			|||||||
void Load_LBM(void);
 | 
					void Load_LBM(void);
 | 
				
			||||||
void Save_LBM(void);
 | 
					void Save_LBM(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  byte * LBM_Buffer;
 | 
				
			||||||
 | 
					  byte HBPm1; // Header.BitPlanes-1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// -- GIF -------------------------------------------------------------------
 | 
					// -- GIF -------------------------------------------------------------------
 | 
				
			||||||
void Test_GIF(void);
 | 
					void Test_GIF(void);
 | 
				
			||||||
void Load_GIF(void);
 | 
					void Load_GIF(void);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user