X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=nlsop.c;h=edbc860078057a1b8dc0f67848508e54246ee21c;hb=f52b9904f9433013ae0f1a5a059b0f20e66c5552;hp=ff89e7cfbd5795c62666a0e6d31a385454c54e89;hpb=807dbc1ca4779971778796ffe0ccc97477166aba;p=physik%2Fnlsop.git diff --git a/nlsop.c b/nlsop.c index ff89e7c..edbc860 100644 --- a/nlsop.c +++ b/nlsop.c @@ -307,7 +307,7 @@ int calc_max_extra(d3_lattice *d3_l) int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) { - int fd,i,j,size=0; + int fd,i,j,size=0,foo=0; int width=0,height=0; char bmpfile[MAX_CHARS]; char buf[128]; @@ -315,23 +315,26 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) if(window==1) { sprintf(bmpfile,"x-z_%d.bmp",y); - size=x*z; - width=x; - height=z; + foo=3*d3_l->max_x; + size=(foo+(4-foo%4))*d3_l->max_z; + width=d3_l->max_x; + height=d3_l->max_z; } if(window==2) { sprintf(bmpfile,"y-z_%d.bmp",x); - size=y*z; - width=y; - height=z; + foo=3*d3_l->max_y; + size=(foo+(4-foo%4))*d3_l->max_z; + width=d3_l->max_y; + height=d3_l->max_z; } if(window==3) { sprintf(bmpfile,"x-y_%d.bmp",z); - size=x*y; - width=x; - height=y; + foo=3*d3_l->max_x; + size=(foo+(4-foo%4))*d3_l->max_y; + width=d3_l->max_x; + height=d3_l->max_y; } if((fd=open(bmpfile,O_WRONLY|O_CREAT))<0) @@ -379,11 +382,11 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) } if(window==1) { - for(i=0;imax_x;i++) + for(j=0;jmax_z;j++) { - for(j=0;jmax_z;j++) + for(i=0;imax_x;i++) { - if(*(d3_l->status+i+y*d3_l->max_x+j*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); + if(*(d3_l->status+i+y*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); else memset(buf,0,3); if(write(fd,buf,3)<3) { @@ -391,15 +394,24 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) return-1; } } + if(foo%4) + { + memset(buf,0,4-foo%4); + if(write(fd,buf,4-foo%4)<4-foo%4) + { + puts("failed writing 4 byte ending"); + return -1; + } + } } } if(window==2) { - for(i=0;imax_y;i++) + for(j=0;jmax_z;j++) { - for(j=0;jmax_z;j++) + for(i=0;imax_y;i++) { - if(*(d3_l->status+x+i*d3_l->max_x+j*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); + if(*(d3_l->status+x+i*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); else memset(buf,0,3); if(write(fd,buf,3)<3) { @@ -407,15 +419,24 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) return-1; } } + if(foo%4) + { + memset(buf,0,4-foo%4); + if(write(fd,buf,4-foo%4)<4-foo%4) + { + puts("failed writing 4 byte ending"); + return -1; + } + } } } if(window==3) { - for(i=0;imax_x;i++) + for(j=0;jmax_y;j++) { - for(j=0;jmax_y;j++) + for(i=0;imax_x;i++) { - if(*(d3_l->status+i+j*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); + if(*(d3_l->status+i+(d3_l->max_y-j-1)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); else memset(buf,0,3); if(write(fd,buf,3)<3) { @@ -423,6 +444,15 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) return -1; } } + if(foo%4) + { + memset(buf,0,4-foo%4); + if(write(fd,buf,4-foo%4)<4-foo%4) + { + puts("failed writing 4 byte ending"); + return -1; + } + } } } close(fd);