diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/tools/ndstool/source/raster.cpp')
-rw-r--r-- | c/src/lib/libbsp/arm/nds/tools/ndstool/source/raster.cpp | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/c/src/lib/libbsp/arm/nds/tools/ndstool/source/raster.cpp b/c/src/lib/libbsp/arm/nds/tools/ndstool/source/raster.cpp deleted file mode 100644 index 36019e8339..0000000000 --- a/c/src/lib/libbsp/arm/nds/tools/ndstool/source/raster.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "ndstool.h" -#include "raster.h" - - -int CRaster::LoadBMP(char *filename) -{ - // open file - FILE *f = fopen(filename, "rb"); - if (!f) { fprintf(stderr, "Could not open '%s'.\n", filename); return -1; } - - // load bitmap fileheader & infoheader - BITMAPFILEHEADER bmfh; - fread((char*)&bmfh, 1, sizeof(bmfh), f); - BITMAPINFO bmi; - fread((char*)&bmi, 1, sizeof(bmi), f); - BITMAPINFOHEADER &bmih = bmi.bmiHeader; - memcpy(palette, bmi.bmiColors, sizeof(palette)); - - // check filetype signature - if ((bmfh.bfType[0] != 'B') || (bmfh.bfType[1] != 'M')) { fprintf(stderr, "Not a bitmap file.\n"); return -2; } - if (bmih.biBitCount > 8) { fprintf(stderr, "Bitmap must have a palette.\n"); return -3; } - - // assign some short variables: - width = bmih.biWidth; - height = (bmih.biHeight > 0) ? (int)bmih.biHeight : -(int)bmih.biHeight; // absoulte value - int pitch = width * bmih.biBitCount / 8; - pitch += (4 - pitch%4) % 4; - - // load raster - unsigned int pixelsPerByte = 8 / bmih.biBitCount; - unsigned int biBitCount_mask = (1<<bmih.biBitCount)-1; - raster = new unsigned char [width * height]; - for (unsigned int y=0; y<height; y++) - { - if (bmih.biHeight > 0) // if height is positive the bmp is bottom-up, read it reversed - fseek(f, bmfh.bfOffBits + pitch*(height-1-y), SEEK_SET); - else - fseek(f, bmfh.bfOffBits + pitch*y, SEEK_SET); - for (unsigned int x=0; x<width; x+=pixelsPerByte) - { - unsigned char data = fgetc(f); - unsigned int shift = 8; - for (unsigned int p=0; p<pixelsPerByte; p++) - { - shift -= bmih.biBitCount; - (*this)[y][x+p] = data >> shift & biBitCount_mask; - } - } - } - - fclose(f); - - return 0; -} |