mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-22 15:39:52 +00:00
Fixed save/load operations of .ase format for sprites with less than 256 colors.
This commit is contained in:
parent
ce186c95b3
commit
548c82adaf
@ -560,8 +560,8 @@ static void ase_file_write_close_chunk(FILE *f)
|
|||||||
static Palette *ase_file_read_color_chunk(FILE *f, Sprite *sprite, int frame)
|
static Palette *ase_file_read_color_chunk(FILE *f, Sprite *sprite, int frame)
|
||||||
{
|
{
|
||||||
int i, c, r, g, b, packets, skip, size;
|
int i, c, r, g, b, packets, skip, size;
|
||||||
Palette* pal = new Palette(frame, 256);
|
Palette* pal = new Palette(*sprite->getPalette(frame));
|
||||||
sprite->getPalette(frame)->copyColorsTo(pal);
|
pal->setFrame(frame);
|
||||||
|
|
||||||
packets = fgetw(f); // Number of packets
|
packets = fgetw(f); // Number of packets
|
||||||
skip = 0;
|
skip = 0;
|
||||||
@ -588,13 +588,13 @@ static Palette *ase_file_read_color_chunk(FILE *f, Sprite *sprite, int frame)
|
|||||||
static Palette *ase_file_read_color2_chunk(FILE *f, Sprite *sprite, int frame)
|
static Palette *ase_file_read_color2_chunk(FILE *f, Sprite *sprite, int frame)
|
||||||
{
|
{
|
||||||
int i, c, r, g, b, packets, skip, size;
|
int i, c, r, g, b, packets, skip, size;
|
||||||
Palette* pal = new Palette(frame, 256);
|
Palette* pal = new Palette(*sprite->getPalette(frame));
|
||||||
sprite->getPalette(frame)->copyColorsTo(pal);
|
pal->setFrame(frame);
|
||||||
|
|
||||||
packets = fgetw(f); /* number of packets */
|
packets = fgetw(f); // Number of packets
|
||||||
skip = 0;
|
skip = 0;
|
||||||
|
|
||||||
/* read all packets */
|
// Read all packets
|
||||||
for (i=0; i<packets; i++) {
|
for (i=0; i<packets; i++) {
|
||||||
skip += fgetc(f);
|
skip += fgetc(f);
|
||||||
size = fgetc(f);
|
size = fgetc(f);
|
||||||
@ -618,10 +618,12 @@ static void ase_file_write_color2_chunk(FILE *f, Palette *pal)
|
|||||||
|
|
||||||
ase_file_write_start_chunk(f, ASE_FILE_CHUNK_FLI_COLOR2);
|
ase_file_write_start_chunk(f, ASE_FILE_CHUNK_FLI_COLOR2);
|
||||||
|
|
||||||
fputw(1, f);
|
fputw(1, f); // number of packets
|
||||||
fputc(0, f);
|
|
||||||
fputc(0, f);
|
// First packet
|
||||||
for (c=0; c<256; c++) {
|
fputc(0, f); // skip 0 colors
|
||||||
|
fputc(pal->size() == 256 ? 0: pal->size(), f); // number of colors
|
||||||
|
for (c=0; c<pal->size(); c++) {
|
||||||
color = pal->getEntry(c);
|
color = pal->getEntry(c);
|
||||||
|
|
||||||
fputc(_rgba_getr(color), f);
|
fputc(_rgba_getr(color), f);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user