#include #include #include "tim.h" extern FILE *BMPf; extern TIMinf TIMinfo; extern unsigned char infile2[100]; int write_BMPopenTIM(char *file){ if(BMPf = fopen(file,"wb")) return(1); else return(0); } void write_BMPcloseTIM(){ fclose(BMPf); } void write_BMPfilehead(){ printf(" : WRITING [BMP] filehead\n"); // BMPfile id write_word(19778); // 8bit filesize! if(TIMinfo.pmode == 0) write_dword(54+(4*16)+(TIMinfo.picH*(TIMinfo.picW))); if(TIMinfo.pmode == 1) write_dword(54+(4*256)+(TIMinfo.picH*TIMinfo.picW)); if(TIMinfo.pmode == 2) write_dword(54+(TIMinfo.picH*TIMinfo.picW*3)); if(TIMinfo.pmode == 3) write_dword(54+(TIMinfo.picH*TIMinfo.picW*3)); // reserved shit write_word(0); write_word(0); // dataOFFset.. if(TIMinfo.pmode == 0) write_dword(54+(4*16)); if(TIMinfo.pmode == 1) write_dword(54+(4*256)); if(TIMinfo.pmode == 2) write_dword(54); if(TIMinfo.pmode == 3) write_dword(54); } void write_BMPinfohead(){ printf(" : WRITING [BMP] infohead\n"); // INFO size write_dword(40); // width and height of tim write_dword(TIMinfo.picW); write_dword(TIMinfo.picH); // nb planes write_word(1); // pmode if(TIMinfo.pmode == 0)write_word(4); if(TIMinfo.pmode == 1)write_word(8); if(TIMinfo.pmode == 2) write_word(24); if(TIMinfo.pmode == 3) write_word(24); // compression write_dword(0); // image size if(TIMinfo.pmode == 0)write_dword(TIMinfo.picW*TIMinfo.picH); if(TIMinfo.pmode == 1)write_dword(TIMinfo.picW*TIMinfo.picH); if(TIMinfo.pmode == 2)write_dword(TIMinfo.picW*TIMinfo.picH*3); if(TIMinfo.pmode == 3)write_dword(TIMinfo.picW*TIMinfo.picH*3); // pixel .. meter write_dword(0); write_dword(0); // colors used write_dword(0); // important colors write_dword(0); } void write_BMPpalette(){ int x; printf(" : WRITING [BMP] bitmap palette\n"); // 4bit palette if(TIMinfo.pmode == 0){ for(x=0;x<16;x++){ write_byte(TIMinfo.bit4_pal[x*3+2]); write_byte(TIMinfo.bit4_pal[x*3+1]); write_byte(TIMinfo.bit4_pal[x*3+0]); write_byte(0); } } // 8bit palette if(TIMinfo.pmode == 1){ for(x=0;x<256;x++){ write_byte(TIMinfo.bit8_pal[x*3+2]); write_byte(TIMinfo.bit8_pal[x*3+1]); write_byte(TIMinfo.bit8_pal[x*3+0]); write_byte(0); } } } void write_BMPdata(){ long x,y,dy; unsigned char *picP; unsigned char d,d1; printf(" : WRITING [BMP] image data\n"); picP = TIMinfo.picdata_char; // 4bit picture if(TIMinfo.pmode == 0){ for(y=0;y>1);x++){ dy = (TIMinfo.picH-1) - y; d =*(picP+(dy*(TIMinfo.picW>>1)+x)); d1 = (d&15)<<4; d = (d>>4)|d1; write_byte(d); } } // 8bit picture if(TIMinfo.pmode == 1){ for(y=TIMinfo.picH-1;y>=0;y--) for(x=0;x=0;y--) for(x=0;x=0;y--) for(x=0;x