//Open a BMP and find out what type it is bool IMAGE::LoadBMP(char * filename) { FILE * file; BITMAPFILEHEADER fileHeader; BITMAPINFOHEADER infoHeader; //Open file for reading file=fopen(filename, "rb"); if(!file) { LOG::Instance()->OutputError("Unable to open %s", filename); return false; } //read the file header fread(&fileHeader, sizeof(BITMAPFILEHEADER), 1, file); //Check this is a bitmap if(fileHeader.bfType != bitmapID) { fclose(file); LOG::Instance()->OutputError("%s is not a legal .bmp", filename); return false; } //Read in the information header fread(&infoHeader, sizeof(BITMAPINFOHEADER), 1, file); //close the file fclose(file); //Find out the bpp and go to correct loading function if(infoHeader.biBitCount==8) return Load8BitBMP(filename); if(infoHeader.biBitCount==24) return Load24BitBMP(filename); LOG::Instance()->OutputError("%s has an unsupported bpp", filename); return false; }
bool IMAGE::LoadBMP(char * filename) { FILE * file; //the texture file BITMAPFILEHEADER fileHeader; //bitmap file header BITMAPINFOHEADER infoHeader; //bitmap info header //open file for reading file=fopen(filename, "rb"); if(file==NULL) { errorLog.OutputError("Unable to open %s", filename); return false; } //read the file header fread(&fileHeader, sizeof(BITMAPFILEHEADER), 1, file); //check it's a bitmap if(fileHeader.bfType != BITMAP_ID) { fclose(file); errorLog.OutputError("%s is not a legal .BMP", filename); return false; } //read in the information header fread(&infoHeader, sizeof(BITMAPINFOHEADER), 1, file); //close the file fclose(file); //discover the bpp if(infoHeader.biBitCount==24) return Load24BitBMP(filename); if(infoHeader.biBitCount==8) return Load8BitBMP(filename); errorLog.OutputError("%s has an unknown bpp", filename); return false; }