#include <stdio.h>
#include <zlib.h>
#include <jpeglib.h>

#ifndef __FILE_H
#define __FILE_H

typedef enum _fileType { Normal=0, Compressed, Jpeg }fileType;

typedef struct _File
{
    fileType type;
    FILE *fp;
    gzFile gzfp;
    int gzfd;
    unsigned char read;
    unsigned char write;
}File;

File *fileopen (const char *path, const char *mode);
int fileclose( File *stream);

int fileread( void *ptr, int size, int nmemb, File *stream);
int filewrite( const void *ptr, int size, int nmemb, File *stream);
char *filegets(char *s, int size, File *stream);
int filegetc(File *stream);
int fileeof(File *stream);
int fileputs(const char *s, File *stream);

int isJpegFile(File *stream);

extern JSAMPLE * image_buffer;  /* Points to large array of R,G,B-order data */
extern int image_height;        /* Number of rows in image */
extern int image_width;

int read_JPEG_file (char * filename);
void write_Jpg_file (char * filename, int quality, char *comment);

#endif
