#138071 - Robthar - Sun Aug 19, 2007 11:26 am
Whats wrong about this Bitmap-loader?
It does not show the right information!
In Main.cpp
It does not show the right information!
Code: |
namespace Memory { uint8 GetUint8ExUint8(uint8* source,uint32 address){ return (uint8)(source[address]); } uint16 GetUint16ExUint8(uint8* source,uint32 address){ return (uint16)(((source[address+1]<<8) | (source[address]))); } uint32 GetUint32ExUint8(uint8* source,uint32 address){ return (uint32)(((source[address+3]<<24) | (source[address+2]<<16) | (source[address+1]<<8) | (source[address]))); } namespace Reversed { uint8 GetUint8ExUint8(uint8* source,uint32 address){ return (uint8)(source[address]); } uint16 GetUint16ExUint8(uint8* source,uint32 address){ return (uint16)(((source[address]<<8) | (source[address+1]))); } uint32 GetUint32ExUint8(uint8* source,uint32 address){ return (uint32)(((source[address]<<24) | (source[address+1]<<16) | (source[address+2]<<8) | (source[address+3]))); } } } |
Code: |
Bitmap(const char* FileAddress){ uint8* filebuffer; uint32 filelength; uint32 filedata; uint32 fileheadersize; FILE* f = fopen(FileAddress,"rd"); if(!f){ iprintf("File %s not found",FileAddress); } else { fseek(f,0,SEEK_END); long l = ftell(f); filebuffer = new uint8[l]; fread(filebuffer,1,l,f); fclose(f); filelength = Memory::GetUint32ExUint8(filebuffer,2); filedata = Memory::GetUint32ExUint8(filebuffer,10); fileheadersize= Memory::GetUint32ExUint8(filebuffer,14); Width = Memory::GetUint32ExUint8(filebuffer,18); Height = Memory::GetUint32ExUint8(filebuffer,22); Layers = Memory::GetUint16ExUint8(filebuffer,26); BitsPP = Memory::GetUint16ExUint8(filebuffer,28); } } |
In Main.cpp
Code: |
Bitmap* b = new Bitmap("kuehlschrank/bmptest.bmp"); iprintf("Bitmap Height :%u\n",b->Height); iprintf("Bitmap Width :%u\n",b->Width); iprintf("Bitmap Layers :%u\n",b->Layers); iprintf("Bitmap BitsPP :%u\n",b->BitsPP); |