#ifndef __CFL_IMAGE_H__
#define __CFL_IMAGE_H__
#ifdef __cplusplus
extern "C" {
#endif
#define IMAGE_DECLARE(image) \
typedef struct image image; \
void image##_draw(image *, int X, int Y, int W, int H); \
void image##_draw_ext(image *, int X, int Y, int W, int H, int cx, int cy); \
int image##_width(image *); \
int image##_height(image *); \
void image##_delete(image *); \
int image##_count(image *self); \
const char *const *image##_data(image *self); \
image *image##_copy(image *self); \
void image##_scale(image *self, int width, int height, int proportional, int can_expand); \
int image##_fail(image *self); \
int image##_data_w(const image *self); \
int image##_data_h(const image *self); \
int image##_d(const image *self); \
int image##_ld(const image *self); \
void image##_inactive(image *self); \
image *image##_from_dyn_ptr(Fl_Image *other);
IMAGE_DECLARE(Fl_Image)
void Fl_Image_set_scaling_algorithm(int algorithm);
int Fl_Image_scaling_algorithm(void);
IMAGE_DECLARE(Fl_JPEG_Image)
Fl_JPEG_Image *Fl_JPEG_Image_new(const char *filename);
Fl_JPEG_Image *Fl_JPEG_Image_from(const unsigned char *data);
IMAGE_DECLARE(Fl_PNG_Image)
Fl_PNG_Image *Fl_PNG_Image_new(const char *filename);
Fl_PNG_Image *Fl_PNG_Image_from(const unsigned char *data, int size);
IMAGE_DECLARE(Fl_SVG_Image)
Fl_SVG_Image *Fl_SVG_Image_new(const char *filename);
Fl_SVG_Image *Fl_SVG_Image_from(const char *data);
void Fl_SVG_Image_normalize(Fl_SVG_Image *self);
IMAGE_DECLARE(Fl_BMP_Image)
Fl_BMP_Image *Fl_BMP_Image_new(const char *filename);
Fl_BMP_Image *Fl_BMP_Image_from(const unsigned char *data, long len);
IMAGE_DECLARE(Fl_GIF_Image)
Fl_GIF_Image *Fl_GIF_Image_new(const char *filename);
Fl_GIF_Image *Fl_GIF_Image_from(const unsigned char *data, unsigned long len);
IMAGE_DECLARE(Fl_Anim_GIF_Image)
Fl_Anim_GIF_Image *Fl_Anim_GIF_Image_new(const char *filename, void *canvas, unsigned short flags);
Fl_Anim_GIF_Image *Fl_Anim_GIF_Image_from(const char *imagename, const unsigned char *data,
const unsigned long length, void *canvas,
unsigned short flags);
double Fl_Anim_GIF_Image_delay(const Fl_Anim_GIF_Image *self, int frame_);
void Fl_Anim_GIF_Image_set_delay(Fl_Anim_GIF_Image *self, int frame, double delay);
int Fl_Anim_GIF_Image_is_animated(const Fl_Anim_GIF_Image *self);
void Fl_Anim_GIF_Image_set_speed(Fl_Anim_GIF_Image *self, double speed);
double Fl_Anim_GIF_Image_speed(Fl_Anim_GIF_Image *self);
int Fl_Anim_GIF_Image_start(Fl_Anim_GIF_Image *self);
int Fl_Anim_GIF_Image_stop(Fl_Anim_GIF_Image *self);
int Fl_Anim_GIF_Image_next(Fl_Anim_GIF_Image *self);
int Fl_Anim_GIF_Image_playing(const Fl_Anim_GIF_Image *self);
IMAGE_DECLARE(Fl_Pixmap)
Fl_Pixmap *Fl_Pixmap_new(const char *const *D);
IMAGE_DECLARE(Fl_XPM_Image)
Fl_XPM_Image *Fl_XPM_Image_new(const char *filename);
IMAGE_DECLARE(Fl_XBM_Image)
Fl_XBM_Image *Fl_XBM_Image_new(const char *filename);
IMAGE_DECLARE(Fl_PNM_Image)
Fl_PNM_Image *Fl_PNM_Image_new(const char *filename);
IMAGE_DECLARE(Fl_Tiled_Image)
Fl_Tiled_Image *Fl_Tiled_Image_new(Fl_Image *i, int w, int h);
IMAGE_DECLARE(Fl_RGB_Image)
Fl_RGB_Image *Fl_RGB_Image_new(const unsigned char *bits, int W, int H, int depth, int ld);
Fl_RGB_Image *Fl_RGB_Image_from_data(const unsigned char *bits, int W, int H, int depth, int ld);
Fl_RGB_Image *Fl_RGB_Image_from_pixmap(const Fl_Pixmap *image);
IMAGE_DECLARE(Fl_Shared_Image)
Fl_Shared_Image *Fl_Shared_Image_get(const char *name, int W, int H);
Fl_Shared_Image *Fl_Shared_Image_from_rgb(Fl_RGB_Image *rgb, int own_it);
IMAGE_DECLARE(Fl_ICO_Image)
Fl_ICO_Image *Fl_ICO_Image_new(const char *filename, int id);
Fl_ICO_Image *Fl_ICO_Image_from_data(const unsigned char *bits, unsigned long len, int id);
void *const Fl_ICO_Image_icondirentry(const Fl_ICO_Image *self, unsigned long *size);
void Fl_register_images(void);
#ifdef __cplusplus
}
#endif
#endif