#ifndef __IMAGE_H__ #define __IMAGE_H__ /* The DilloImage data-structure and methods */ #include #include #include "dw_image.h" #include "bitvec.h" typedef struct _DilloImage DilloImage; typedef enum { DILLO_IMG_TYPE_INDEXED, DILLO_IMG_TYPE_RGB, DILLO_IMG_TYPE_GRAY, DILLO_IMG_TYPE_NOTSET /* Initial value */ } DilloImgType; /* These will reflect the Image's "state" */ typedef enum { IMG_Empty, /* Just created the entry */ IMG_SetParms, /* Parameters set */ IMG_SetCmap, /* Color map set */ IMG_Write, /* Feeding the entry */ IMG_Close, /* Whole image got! */ IMG_Abort /* Image transfer aborted */ } ImageState; struct _DilloImage { DwImage *dw; /* Parameters as told by image data */ guint width; guint height; const guchar *cmap; /* Color map (only for indexed) */ DilloImgType in_type; /* Image Type */ gint32 bg_color; /* Background color */ gint ProcessedBytes; /* Amount of bytes already decoded */ bitvec_t *BitVec; /* Bit vector for decoded rows */ ImageState State; gint RefCount; /* Reference counter */ }; /* * Function prototypes */ DilloImage *a_Image_new(gint width, gint height, const char *alt_text, gint32 bg_color); void a_Image_ref(DilloImage *Image); void a_Image_unref(DilloImage *Image); void a_Image_set_parms(DilloImage *Image, guchar *EntryBuf, DilloUrl *url, gint version, guint width, guint height, DilloImgType type); void a_Image_set_cmap(DilloImage *Image, const guchar *cmap); void a_Image_write(DilloImage *Image, const guchar *buf, guint y, gint decode); void a_Image_close(DilloImage *Image); #endif /* __IMAGE_H__ */