#include <stdio.h>
-typedef struct lbx_image LBXIMG;
+struct lbx_file_ops;
+
+struct lbx_image {
+ unsigned short width, height;
+ unsigned char frames, chunk;
+};
struct lbx_colour {
unsigned char red;
unsigned char green;
unsigned char blue;
+ unsigned char active;
+};
+
+struct lbx_imginfo {
+ unsigned char loopstart;
+ int palettesz, looping;
};
-LBXIMG *lbximg_fopen(FILE *f);
-void lbximg_close(LBXIMG *img);
-unsigned char **lbximg_getframe(LBXIMG *img, int frame);
+struct lbx_image *lbx_img_open(void *f, const struct lbx_file_ops *fops,
+ int (*destructor)(void *));
+struct lbx_image *lbx_img_fopen(const char *file);
+int lbx_img_close(struct lbx_image *img);
+
+unsigned char **lbx_img_getframe(struct lbx_image *img, int frame);
+unsigned char **lbx_img_getmask(struct lbx_image *img);
+
+int lbx_img_loadpalette(void *f, const struct lbx_file_ops *fops,
+ struct lbx_colour palette[static 256]);
+int lbx_img_getpalette(struct lbx_image *img,
+ struct lbx_colour palette[static 256]);
-int lbximg_loadpalette(FILE *f, struct lbx_colour palette[static 256]);
-int lbximg_getpalette(LBXIMG *img, struct lbx_colour palette[static 256]);
+void lbx_img_getinfo(struct lbx_image *img, struct lbx_imginfo *info);
#endif