// ********************************************************************** // BmpLib0.cpp // // ********************************************************************** #include #include #include "BmpLib0.h" static unsigned char *red, *green, *blue; static int width, height; static imginfoheader imgheader; static bmpinfoheader bmpheader; // ********************************************************************** // // // ********************************************************************** int getBMPSize(char *name, unsigned int &sizeX, unsigned int &sizeY) { FILE *fptr; if((fptr=fopen(name,"rb"))==NULL){ printf("\nFile not found."); return 1; } else { fread(&bmpheader.fileid,2,1,fptr); fread(&bmpheader.filesize,4,1,fptr); fread(&bmpheader.reserved1,2,1,fptr); fread(&bmpheader.reserved2,2,1,fptr); fread(&bmpheader.imgoffset,4,1,fptr); fread(&imgheader,sizeof(imgheader),1,fptr); if ((bmpheader.fileid != 19778) || (bmpheader.imgoffset != 54) || (imgheader.headersize != 40) || (imgheader.numplanes != 1) || (imgheader.pixeldepth != 24) || (imgheader.compression != 0)) { printf("Error: Invalid bitmap image."); fclose(fptr); return 1; } else { sizeX = imgheader.imgwidth; sizeY = imgheader.imgheight; fclose(fptr); return 0; } } } // ********************************************************************** // // // ********************************************************************** int load_bmp (char bmp[], unsigned int &sizeX, unsigned int &sizeY) { FILE *fptr; long x,y; unsigned int padbytes=0; // unsigned char ch; if((fptr=fopen(bmp,"rb"))==NULL){ printf("\nFile not found."); return 1; }else{ fread(&bmpheader.fileid,2,1,fptr); fread(&bmpheader.filesize,4,1,fptr); fread(&bmpheader.reserved1,2,1,fptr); fread(&bmpheader.reserved2,2,1,fptr); fread(&bmpheader.imgoffset,4,1,fptr); fread(&imgheader,sizeof(imgheader),1,fptr); if ( (bmpheader.fileid != 19778) || (bmpheader.imgoffset != 54) || (imgheader.headersize != 40) || (imgheader.numplanes != 1) || (imgheader.pixeldepth != 24) || (imgheader.compression != 0) ){ printf("Error: Invalid bitmap image."); return 1; }; padbytes = (imgheader.imgwidth*3)%4; if(padbytes!=0) padbytes = 4-padbytes; red = (unsigned char *) malloc(imgheader.imgheight*imgheader.imgwidth); green = (unsigned char *) malloc(imgheader.imgheight*imgheader.imgwidth); blue = (unsigned char *) malloc(imgheader.imgheight*imgheader.imgwidth); if (red == NULL || green == NULL || blue == NULL){ printf("\nOut of memory."); return 1; } for(x=imgheader.imgheight-1;x>-1;x--){ for(y=0;y-1;x--){ for(y=0;y