//
//		Hlavickovy soubor ke knihovne FLC.C slouzici k dekompresi FLC
//

#ifndef _FLC_H
#define _FLC_H

typedef struct FLCHEADER {
	unsigned int size;		// delka souboru vcetne hlavicky
	unsigned short idflc;	// ID FLC=0AF12h
	unsigned short frames;	// pocet frejmu
	unsigned short width;	// sirka vsech obrazku
	unsigned short height;	// vyska vsech obrazku
	unsigned short color;	// hloubka barvy (bpp)
	unsigned short flag1;
	unsigned int speed;		// rychlost prehravani (v 1/1000 s)
	unsigned short reserv1;	// rezervovany
	unsigned int date1;		// datum a cas vytvoreni
	unsigned int serial;	// seriove cislo programu
	unsigned int date2;		// datum a cas posledni zmeny
	unsigned short XA;
	unsigned short YA;
	char reserv2 [42];		// rezervovano
	unsigned int offset1;	// offset prvniho frame
	unsigned int offset2;	// offset druheho frame
	char reserv3 [40];		// rezervovano
	} flcheader;

typedef struct FRAMEHEADER {
	unsigned int size;		// velikost frame v bytech
	unsigned short sign;	// znacka frame OFAF1h
	unsigned short actions;	// pocet akci v tomto frame
	char reserv [8];		// rezervovano
	} frameheader;

typedef struct ACTIONHEADER {
	unsigned int size;		// velikost akce v bytech
	unsigned short code;	// kod akce
		// 04h - predani casti nebo cele palety
		// 07h - predavani zmenenych casti obrazu
		// 0Dh - vymaze obrazovku
		// 0Fh - cela obrazovka v RLE
		// 10h - nekomprimovana kopie cele obrazovky
	// nasleduji data akce
	} actionheader;

extern FILE *flc;
extern flcheader h_flc;
extern frameheader h_frame;
extern actionheader h_action;
extern char frame_buffer [307205];
extern char *flc_buffer;
extern char flc_paleta[256][3];
//unsigned int ladici;

void Open_FLC (char *filename);
void Close_FLC (void);
void Get_first_frame (void);
void Get_next_frame (void);
void Decompress_frame (void);

#endif
