From: <tj...@us...> - 2003-07-18 02:38:58
|
Update of /cvsroot/alleg/allegro/src In directory sc8-pr-cvs1:/tmp/cvs-serv13126 Modified Files: bmp.c Log Message: Fixed save_bmp for better conformance (a couple of header fields were wrong, and dots-per-metre fields were being filled with zero). Index: bmp.c =================================================================== RCS file: /cvsroot/alleg/allegro/src/bmp.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- bmp.c 26 Mar 2003 10:27:27 -0000 1.13 +++ bmp.c 18 Jul 2003 02:38:54 -0000 1.14 @@ -576,6 +576,7 @@ PACKFILE *f; PALETTE tmppal; int bfSize; + int biSizeImage; int depth; int bpp; int filler; @@ -593,13 +594,14 @@ } if (bpp == 8) { - bfSize = 54 /* header */ - +256*4 /* palette */ - +bmp->w*bmp->h; /* image data */ + biSizeImage = (bmp->w + filler) * bmp->h; + bfSize = (54 /* header */ + + 256*4 /* palette */ + + biSizeImage); /* image data */ } else { - bfSize = 54 /* header */ - +bmp->w*bmp->h*3; /* image data */ + biSizeImage = (bmp->w*3 + filler) * bmp->h; + bfSize = 54 + biSizeImage; /* header + image data */ } f = pack_fopen(filename, F_WRITE); @@ -620,17 +622,15 @@ pack_iputl(54, f); /* info_header */ - bfSize = bmp->w * bmp->h * bpp/8; - pack_iputl(40, f); /* biSize */ pack_iputl(bmp->w, f); /* biWidth */ pack_iputl(bmp->h, f); /* biHeight */ pack_iputw(1, f); /* biPlanes */ pack_iputw(bpp, f); /* biBitCount */ pack_iputl(0, f); /* biCompression */ - pack_iputl(bfSize, f); /* biSizeImage */ - pack_iputl(0, f); /* biXPelsPerMeter */ - pack_iputl(0, f); /* biYPelsPerMeter */ + pack_iputl(biSizeImage, f); /* biSizeImage */ + pack_iputl(0xB12, f); /* biXPelsPerMeter (0xB12 = 72 dpi) */ + pack_iputl(0xB12, f); /* biYPelsPerMeter */ if (bpp == 8) { pack_iputl(256, f); /* biClrUsed */ |