
/*****************************************************************************/
/****  Header file image.h                                       	  ****/
/****  di Alberto Geneletti	version 1.0	giugno 1993               ****/
/****                                                                     ****/
/****  Definisce l'oggetto PseudoColorImage, utilizzato dalle Class Libs  ****/
/****  per la codifica e la decodifica nei vari formati grafici.          ****/
/****  I due puntatori a funzione in fondo all'oggetto vengono inizializ- ****/
/****  zati rispettivamente con l'indirizzo di una funzione di  visualiz- ****/
/****  zazione (che varia da ambiente ad ambiente) e di un gestore di un  ****/
/****  requester che mostri l'avanzamento dell'elaborazione, invocato au- ****/
/****  tomaticamente dalle routine di codifica e di decodifica            ****/
/*****************************************************************************/

#ifndef IMAGE_H
#define IMAGE_H

#include "systems.h"

#define INDIRECT_COLOR 0x0001
#define TRUE_COLOR     0x0002

#define TOP_DOWN     0x0001
#define LEFT_RIGHT   0x0002

#define NOTHING_AUTOALLOCATED   0x0000
#define AUTOALLOCATED_CMAP   	0x0001
#define AUTOALLOCATED_BITMAP 	0x0002

typedef struct CE {
	unsigned char R, G, B;
} ColorEntry;

typedef struct CM {
	ColorEntry Entry[256];
} Colormap;

typedef struct PCIM {
	int16 Width;
	int16 Height;
	int16 Depth;
	int16 AllocationFlags;
	int16 NColors;
	Colormap *ColorMap;
	char huge *BitMap;
	int (*Display)();
        void (*ShowWorkInProgress)();
} PseudoColorImage;

PseudoColorImage *CreatePseudoColorImage(int16 Width, int16 Height,
			int16 Depth, int16 NColors, Colormap *ColorMap,
			char huge *BitMap, void (*ShowWorkInProgress)(),
			int (*Display)());

void DestroyImage(PseudoColorImage *Im);

int StubERR();
void StubNOP(int Error, PseudoColorImage* Im);

#endif