164
#ifdef FEATURE_CPUMEMHISTORY
165
static GifFileType *gifdrv_memmap_fd;
166
static char *gifdrv_memmap_ext_filename;
168
static int gifdrv_close_memmap(void)
170
EGifCloseFile(gifdrv_memmap_fd);
171
FreeMapObject(gif_colors);
172
lib_free(gifdrv_memmap_ext_filename);
177
static int gifdrv_write_memmap(int line, int x_size, BYTE *gfx)
179
if (EGifPutLine(gifdrv_memmap_fd, gfx+(line*x_size), x_size)==GIF_ERROR)
185
static int gifdrv_open_memmap(const char *filename, int x_size, int y_size, BYTE *palette)
188
GifColorType ColorMap256[256];
190
gifdrv_memmap_ext_filename=util_add_extension_const(filename, gif_drv.default_extension);
192
gifdrv_memmap_fd=EGifOpenFileName(gifdrv_memmap_ext_filename, FALSE);
194
if (gifdrv_memmap_fd==NULL)
196
lib_free(gifdrv_memmap_ext_filename);
200
gif_colors=MakeMapObject(256, ColorMap256);
202
for (i = 0; i < 256; i++)
204
gif_colors->Colors[i].Blue=palette[(i*3)+2];
205
gif_colors->Colors[i].Green=palette[(i*3)+1];
206
gif_colors->Colors[i].Red=palette[i*3];
209
EGifSetGifVersion("87a");
211
if (EGifPutScreenDesc(gifdrv_memmap_fd, x_size, y_size, 8, 0, gif_colors) == GIF_ERROR ||
212
EGifPutImageDesc(gifdrv_memmap_fd, 0, 0, x_size, y_size, FALSE, NULL) == GIF_ERROR)
214
EGifCloseFile(gifdrv_memmap_fd);
215
FreeMapObject(gif_colors);
216
lib_free(gifdrv_memmap_ext_filename);
223
static int gifdrv_save_memmap(const char *filename, int x_size, int y_size, BYTE *gfx, BYTE *palette)
227
if (gifdrv_open_memmap(filename, x_size, y_size, palette) < 0)
230
for (line = 0; line < y_size; line++)
232
gifdrv_write_memmap(line, x_size, gfx);
235
if (gifdrv_close_memmap() < 0)
164
242
static gfxoutputdrv_t gif_drv =