Support for loading 1bpp GIF. At last!
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1508 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
b643695786
commit
ddc0c3448d
@ -1745,6 +1745,7 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
T_GIF_GCE GCE;
|
T_GIF_GCE GCE;
|
||||||
|
|
||||||
word nb_colors; // Nombre de couleurs dans l'image
|
word nb_colors; // Nombre de couleurs dans l'image
|
||||||
|
word base_nb_colors; // Number of colors for computations. Same as nb_colors, except for 1bit images.
|
||||||
word color_index; // index de traitement d'une couleur
|
word color_index; // index de traitement d'une couleur
|
||||||
byte size_to_read; // Nombre de données à lire (divers)
|
byte size_to_read; // Nombre de données à lire (divers)
|
||||||
byte block_identifier; // Code indicateur du type de bloc en cours
|
byte block_identifier; // Code indicateur du type de bloc en cours
|
||||||
@ -1800,7 +1801,16 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
// Ordre de Classement = (LSDB.Aspect and $80)
|
// Ordre de Classement = (LSDB.Aspect and $80)
|
||||||
|
|
||||||
nb_colors=(1 << ((LSDB.Resol & 0x07)+1));
|
nb_colors=(1 << ((LSDB.Resol & 0x07)+1));
|
||||||
initial_nb_bits=(LSDB.Resol & 0x07)+2;
|
if (nb_colors==2)
|
||||||
|
{
|
||||||
|
base_nb_colors=4;
|
||||||
|
initial_nb_bits=3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base_nb_colors=nb_colors;
|
||||||
|
initial_nb_bits=(LSDB.Resol & 0x07)+2;
|
||||||
|
}
|
||||||
|
|
||||||
if (LSDB.Resol & 0x80)
|
if (LSDB.Resol & 0x80)
|
||||||
{
|
{
|
||||||
@ -1998,7 +2008,16 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
// Palette locale dispo
|
// Palette locale dispo
|
||||||
|
|
||||||
nb_colors=(1 << ((IDB.Indicator & 0x07)+1));
|
nb_colors=(1 << ((IDB.Indicator & 0x07)+1));
|
||||||
initial_nb_bits=(IDB.Indicator & 0x07)+2;
|
if (nb_colors==2)
|
||||||
|
{
|
||||||
|
base_nb_colors=4;
|
||||||
|
initial_nb_bits=3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base_nb_colors=nb_colors;
|
||||||
|
initial_nb_bits=(IDB.Indicator & 0x07)+2;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(IDB.Indicator & 0x40))
|
if (!(IDB.Indicator & 0x40))
|
||||||
// Palette dans l'ordre:
|
// Palette dans l'ordre:
|
||||||
@ -2022,9 +2041,10 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
|
|
||||||
Palette_loaded(context);
|
Palette_loaded(context);
|
||||||
|
|
||||||
value_clr =nb_colors+0;
|
value_clr =base_nb_colors+0;
|
||||||
value_eof =nb_colors+1;
|
value_eof =base_nb_colors+1;
|
||||||
alphabet_free=nb_colors+2;
|
alphabet_free=base_nb_colors+2;
|
||||||
|
|
||||||
GIF_nb_bits =initial_nb_bits;
|
GIF_nb_bits =initial_nb_bits;
|
||||||
alphabet_max =((1 << GIF_nb_bits)-1);
|
alphabet_max =((1 << GIF_nb_bits)-1);
|
||||||
GIF_interlaced =(IDB.Indicator & 0x40);
|
GIF_interlaced =(IDB.Indicator & 0x40);
|
||||||
@ -2082,7 +2102,7 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
{
|
{
|
||||||
GIF_nb_bits =initial_nb_bits;
|
GIF_nb_bits =initial_nb_bits;
|
||||||
alphabet_max =((1 << GIF_nb_bits)-1);
|
alphabet_max =((1 << GIF_nb_bits)-1);
|
||||||
alphabet_free =nb_colors+2;
|
alphabet_free =base_nb_colors+2;
|
||||||
special_case =GIF_get_next_code();
|
special_case =GIF_get_next_code();
|
||||||
old_code =GIF_current_code;
|
old_code =GIF_current_code;
|
||||||
GIF_new_pixel(context, &IDB, GIF_current_code);
|
GIF_new_pixel(context, &IDB, GIF_current_code);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user