Author: dynis
Date: Thu Jun 26 14:49:08 2008
New Revision: 4458
URL:
http://source.netsurf-browser.org?rev=4458&view=rev
Log:
Bitmap callbacks are now set during the call to gif_create
Modified:
branches/dynis/libnsgif/examples/decode_gif.c
branches/dynis/libnsgif/libnsgif.c
branches/dynis/libnsgif/libnsgif.h
Modified: branches/dynis/libnsgif/examples/decode_gif.c
URL:
http://source.netsurf-browser.org/branches/dynis/libnsgif/examples/decode...
==============================================================================
--- branches/dynis/libnsgif/examples/decode_gif.c (original)
+++ branches/dynis/libnsgif/examples/decode_gif.c Thu Jun 26 14:49:08 2008
@@ -38,16 +38,15 @@
int main(int argc, char *argv[])
{
- gif_animation gif = {
- .bitmap_callbacks = {
- bitmap_create,
- bitmap_destroy,
- bitmap_get_buffer,
- bitmap_set_opaque,
- bitmap_test_opaque,
- bitmap_modified
- }
+ gif_bitmap_callback_vt bitmap_callbacks = {
+ bitmap_create,
+ bitmap_destroy,
+ bitmap_get_buffer,
+ bitmap_set_opaque,
+ bitmap_test_opaque,
+ bitmap_modified
};
+ gif_animation gif;
size_t size;
int code;
unsigned int i;
@@ -58,7 +57,7 @@
}
/* create our gif animation */
- gif_create(&gif);
+ gif_create(&gif, &bitmap_callbacks);
/* load file into memory */
unsigned char *data = load_file(argv[1], &size);
@@ -106,6 +105,7 @@
/* clean up */
gif_finalise(&gif);
+ free(data);
return 0;
}
Modified: branches/dynis/libnsgif/libnsgif.c
URL:
http://source.netsurf-browser.org/branches/dynis/libnsgif/libnsgif.c?rev=...
==============================================================================
--- branches/dynis/libnsgif/libnsgif.c (original)
+++ branches/dynis/libnsgif/libnsgif.c Thu Jun 26 14:49:08 2008
@@ -150,7 +150,8 @@
/** Initialises necessary gif_animation members.
*/
-void gif_create(gif_animation *gif) {
+void gif_create(gif_animation *gif, gif_bitmap_callback_vt *bitmap_callbacks) {
+ gif->bitmap_callbacks = *bitmap_callbacks;
gif->gif_data = NULL;
gif->frame_image = NULL;
gif->frames = NULL;
@@ -714,6 +715,7 @@
GIF_INSUFFICIENT_FRAME_DATA for insufficient data to complete the frame
GIF_DATA_ERROR for GIF error (invalid frame header)
GIF_INSUFFICIENT_DATA for insufficient data to do anything
+ GIF_INSUFFICIENT_MEMORY for insufficient memory to process
GIF_OK for successful decoding
If a frame does not contain any image data, GIF_OK is returned and
gif->current_error is set to GIF_FRAME_NO_DISPLAY
Modified: branches/dynis/libnsgif/libnsgif.h
URL:
http://source.netsurf-browser.org/branches/dynis/libnsgif/libnsgif.h?rev=...
==============================================================================
--- branches/dynis/libnsgif/libnsgif.h (original)
+++ branches/dynis/libnsgif/libnsgif.h Thu Jun 26 14:49:08 2008
@@ -108,7 +108,7 @@
unsigned int *local_colour_table; /**< local colour table */
} gif_animation;
-void gif_create(gif_animation *gif);
+void gif_create(gif_animation *gif, gif_bitmap_callback_vt *bitmap_callbacks);
gif_result gif_initialise(gif_animation *gif, size_t size, unsigned char *data);
gif_result gif_decode_frame(gif_animation *gif, unsigned int frame);
void gif_finalise(gif_animation *gif);