#ifndef IMAGER_MSICON_H_
#define IMAGER_MSICON_H_
#include "iolayert.h"
typedef struct ico_reader_tag ico_reader_t;
#define ICON_ICON 1
#define ICON_CURSOR 2
typedef struct {
unsigned char r, g, b, a;
} ico_color_t;
typedef struct {
int width;
int height;
int direct;
int bit_count;
void *image_data;
int palette_size;
ico_color_t *palette;
unsigned char *mask_data;
int hotspot_x, hotspot_y;
} ico_image_t;
extern ico_reader_t *ico_reader_open(i_io_glue_t *ig, int *error);
extern int ico_image_count(ico_reader_t *file);
extern int ico_type(ico_reader_t *file);
extern ico_image_t *ico_image_read(ico_reader_t *file, int index, int *error);
extern void ico_image_release(ico_image_t *image);
extern void ico_reader_close(ico_reader_t *file);
extern int ico_write(i_io_glue_t *ig, ico_image_t const *images,
int image_count, int type, int *error);
extern size_t ico_error_message(int error, char *buffer, size_t buffer_size);
#define ICO_MAX_MESSAGE 80
#define ICOERR_Short_File 100
#define ICOERR_File_Error 101
#define ICOERR_Write_Failure 102
#define ICOERR_Invalid_File 200
#define ICOERR_Unknown_Bits 201
#define ICOERR_Bad_Image_Index 300
#define ICOERR_Bad_File_Type 301
#define ICOERR_Invalid_Width 302
#define ICOERR_Invalid_Height 303
#define ICOERR_Invalid_Palette 304
#define ICOERR_No_Data 305
#define ICOERR_Out_Of_Memory 400
#endif