#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

typedef struct {
  char * filename;
  unsigned char * data;
  unsigned char * FileHeader;
  unsigned char * InfoHeader; 
  unsigned int height;
  unsigned int width;
  unsigned int isize;
  long int size,type,reserved1,reserved2,boffset;
  long int biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage ;
  long int biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant; 

}Image;


void writeImage(Image * image,char * filename);
unsigned char * sobel(unsigned char * data,long  isize, unsigned int width,int thresh);
unsigned char * color_sobel(unsigned char * data,long  isize, unsigned int width,int thresh);
Image * readImage(char * filename, int getData);
unsigned char * readData(char * filename, unsigned int amount,long offset);
void writeData(char * filename,unsigned char * data,long  amount,long offset);
void writeHeader(char* filename,unsigned char * FileHeader,unsigned char * InfoHeader);

