struct ALGIF_ANIMATION {
    int width, height;
    int frames_count;
    int background_index;
    /* -1 = no, 0 = forever,
     * 1..65535 = that many times
     */
    int loop;
    ALGIF_PALETTE palette;
    ALGIF_FRAME *frames;
    int duration;
};
struct ALGIF_FRAME {
    ALGIF_BITMAP *bitmap_8_bit;
    ALGIF_PALETTE palette;
    int xoff, yoff;
    /* in 1/100th seconds */
    int duration;
    /* 0 = don't care, 1 = keep,
     * 2 = background, 3 = previous
     */        
    int disposal_method;
    int transparent_index;
};
struct ALGIF_BITMAP {
    int w, h;
    uint8_t *data;
};
struct ALGIF_PALETTE {
    int colors_count;
    ALGIF_RGB colors[256];
};
struct ALGIF_RGB {
    uint8_t r, g, b;
};
ALGIF_ANIMATION *gif = algif_load_animation(char const *filename); ALGIF_ANIMATION *gif = algif_load_animation_f(ALLEGRO_FILE *file);
Load a gif. Either by specifying the filename or by passing an ALLEGRO_FILE opened for reading.
al_draw_bitmap(algif_get_bitmap(gif, al_get_time()), x, y, 0);
Get a bitmap for the current frame.
algif_destroy_animation(gif);
Destroy the gif again.
ALLEGRO_BITMAP *algif_get_frame_bitmap(ALGIF_ANIMATION *gif, int i);
Get the n-th frame of the gif. The parameter i can be any value from 0 to gif->frames_count - 1.
double algif_get_frame_duration(ALGIF_ANIMATION *gif, int i);
Get the duration of the n-th frame of the gif, in seconds. The parameter i can be any value from 0 to gif->frames_count - 1.
The download comes with an example program.
 
 
 
