pinfoheader,size-of-bitmapinfoheader,1,flayer); if( bitmapfileheader.bftype1==b && bitmapfileheader.bftype2==m && bitmapinfoheader.biwidth==width && bitmapinfoheader.biheight==num- line && bitmapinfoheader.bibitcount==bits-per-pixel && bitmapinfoheader.bicompression==compression) fread(rgbquad,size-of-rgbquad,num-color,flayer); else{ fclose(flayer); printf(file %s is not fit for this program!\n,fn-layer); getch(); exit(1); } } else{ printf(file %s does not exist!\n,fn-layer); getch(); exit(2); } if( (forigin=fopen(fn-org,rb))!=null) { fread(& bitmapfileheader,size-of-bitmapfileheader,1,forigin); fread(& bitmapinfoheader,size-of-bitmapinfoheader,1,forigin); if( bitmapfileheader.bftype1==b && bitmapfileheader.bftype2==m && bitmapinfoheader.biwidth==width && bitmapinfohdader.biheight==num-line && bitmapinfoheader.bibitcount==bits-per-pixel && bitmapinfoheader.bicompression==compression) fread(rgbquad,size-of-rgbquad,num-color,forigin); else { fclose(forigin); printf(file %s is not fit for this program!\n,fn-org); getch(); exit(3); } } else { printf(file %s does not exist!\n,fn-org); getch(); exit(4); } if( (fresult=fopen(fn-result,wb))!=null){ fwrite(&bitmapfileheader,size-of-bitmapfileheader,1,fresult); fwrite(& bitmapinfohiader,size-of-bitmapinfoheader,1,fresult); fwrite(rgbquad,size-of-rgbquad,num-color,fresult); } else { printf(file %s open error!\n,fn-result); getch(); exit(5); } for(line=0;line<num-line;line++){ printf(line=%d\n,line); cur-offset=(unsigned long int)pixel-data-offset+(unsigned long int)byte- per-line*line; fseek (flayer,cur-offset,seek-set); fseek (forigin,cur-offset,seek-set); for(i-byte=0;i-byte<byte-per-line;i-byte++) { fread(&tmp-byte1,1,1,flayer); fread(&tmp-byte2,1,1,forigin); for(i-pixel=0;i-pixel<pixel-per-byte;i-pixel++) { x=i-byte*pixel-per-byte+i-pixel; if(x<width) { h[x]=(unsigned char) (tmp-byte1<<(bits-per-pixel*i-pixel) ) /((unsigned char)0x80>>(bits-per-pixel-1)); org-color[x]=(unsigned char) (tmp-byte2<<(bits-per-pixel*i-pixel)) /((unsigned char)0x80>>(bits-per-pixel-1)); } }} for(x=0;x<width;x++) { dot[x].color=0; dot[x].nxt-x=no-dot; dot[x].pri-x=no-dot; if((x+eye-space)<width) dot[x].nxt-x=x+eye-space; if((signed)x-eye-space)>=0)dot[x].pri-x=x-eye-space; } for(layer=1;layer<num-color;layer++) for(x=0;x<width;x++) { left-x=x-eye-space/2+(layer/2); right-x=x+eye-space
上一页 [1] [2] [3] [4] 下一页