Codebase list dillo / debian/3.0.5-6 src / dicache.h
debian/3.0.5-6

Tree @debian/3.0.5-6 (Download .tar.gz)

dicache.h @debian/3.0.5-6

4c2b77c
 
 
17ecdf9
 
 
 
 
4c2b77c
17ecdf9
4c2b77c
 
17ecdf9
 
96cfe92
 
 
17ecdf9
 
4c2b77c
 
 
 
 
 
 
 
 
 
472ad04
4c2b77c
 
96cfe92
 
 
17ecdf9
 
 
 
4c2b77c
 
17ecdf9
 
4c2b77c
 
96cfe92
17ecdf9
 
472ad04
4c2b77c
 
 
 
17ecdf9
4c2b77c
17ecdf9
 
 
 
 
 
 
4c2b77c
17ecdf9
dafdfbf
 
96cfe92
17ecdf9
 
 
 
 
4c2b77c
 
17ecdf9
 
 
4c2b77c
 
17ecdf9
 
 
 
4c2b77c
#ifndef __DICACHE_H__
#define __DICACHE_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


#include "bitvec.h"
#include "image.hh"
#include "cache.h"

/* Symbolic name to request the last version of an image */
#define DIC_Last  -1
/* Flags: Last version, Valid entry */
#define DIF_Last  1
#define DIF_Valid 2


/* These will reflect the entry's "state" */
typedef enum {
   DIC_Empty,      /* Just created the entry */
   DIC_SetParms,   /* Parameters set */
   DIC_SetCmap,    /* Color map set */
   DIC_Write,      /* Feeding the entry */
   DIC_Close,      /* Whole image got! */
   DIC_Abort       /* Image transfer aborted */
} DicEntryState;

typedef struct DICacheEntry {
   DilloUrl *url;          /* Image URL for this entry */
   DilloImgType type;      /* Image type */
   uint_t width, height;   /* As taken from image data */
   short Flags;            /* See Flags */
   short SurvCleanup;      /* Cleanup-pass survival for unused images */
   uchar_t *cmap;          /* Color map */
   void *v_imgbuf;         /* Void pointer to an Imgbuf object */
   uint_t TotalSize;       /* Amount of memory the image takes up */
   uint_t ScanNumber;      /* Current decoding scan */
   bitvec_t *BitVec;       /* Bit vector for decoded rows */
   DicEntryState State;    /* Current status for this entry */
   int RefCount;           /* Reference Counter */
   int version;            /* Version number, used for different
                              versions of the same URL image */

   uint_t DecodedSize;     /* Size of already decoded data */
   CA_Callback_t Decoder;  /* Client function */
   void *DecoderData;      /* Client function data */
} DICacheEntry;


void a_Dicache_init (void);

DICacheEntry *a_Dicache_get_entry(const DilloUrl *Url, int version);

void *a_Dicache_png_image(const char *Type, void *Ptr, CA_Callback_t *Call,
                          void **Data);
void *a_Dicache_gif_image(const char *Type, void *Ptr, CA_Callback_t *Call,
                          void **Data);
void *a_Dicache_jpeg_image(const char *Type, void *Ptr, CA_Callback_t *Call,
                           void **Data);
void a_Dicache_callback(int Op, CacheClient_t *Client);

void a_Dicache_set_parms(DilloUrl *url, int version, DilloImage *Image,
                         uint_t width, uint_t height, DilloImgType type,
                         double gamma);
void a_Dicache_set_cmap(DilloUrl *url, int version, int bg_color,
                        const uchar_t *cmap, uint_t num_colors,
                        int num_colors_max, int bg_index);
void a_Dicache_new_scan(const DilloUrl *url, int version);
void a_Dicache_write(DilloUrl *url, int version, const uchar_t *buf, uint_t Y);
void a_Dicache_close(DilloUrl *url, int version, CacheClient_t *Client);

void a_Dicache_invalidate_entry(const DilloUrl *Url);
DICacheEntry* a_Dicache_ref(const DilloUrl *Url, int version);
void a_Dicache_unref(const DilloUrl *Url, int version);
void a_Dicache_cleanup(void);
void a_Dicache_freeall(void);


#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __DICACHE_H__ */