/* Blazej Popielski, 1 grudnia 2000 roku */ //#include "io.h" #include "stdio.h" #include "stdlib.h" #include "string.h" #include "math.h" FILE *bash,*sm; int main(int argc,char *argv[]) { int i,k,l,xinvert=1,yinvert=1,argcount=argc,stycount,pindex,lindex; int *cx,*cy,*b,*e,*p[2],*ln[2]; char *name[100]; int li[4]={0,3,2,1}; int lw[4]={1,3,5,7}; int pn[4]={3,4,5,10}; int ps[4]={0,1,2,3}; int *xt,*yt; char typestring[20]="",c,d; int pstyle,lstyle; // printf("\nilosc argumentów = %d\n",argc); // for(k=0;k='0'))) argcount-=1; printf("\nilosc argumentów = %d,%d\n",argc,argcount); if(!((argcount-1)%5) && ((argcount-1)/5) || ((argcount-1)%5==1)) { i = (argcount-1)/5; printf("\nliczba krzywych na rysunku: %d\n\n",i); } else { printf("\nilość argumentów nie jest właściwa\n\n"); return 0; } cx = (int *)malloc(i*sizeof(int)); cy = (int *)malloc(i*sizeof(int)); b = (int *)malloc(i*sizeof(int)); e = (int *)malloc(i*sizeof(int)); p[0] = (int *)malloc(i*sizeof(int)); p[1] = (int *)malloc(i*sizeof(int)); ln[0] = (int *)malloc(i*sizeof(int)); ln[1] = (int *)malloc(i*sizeof(int)); xt = (int *)malloc(i*sizeof(int)); yt = (int *)malloc(i*sizeof(int)); for(k=0;k'1')&&(c<='9')) { p[0][k] = c-'0'; d = *(typestring+l+2); if((d>='0')&&(d<='3')) { p[1][k] = d-'0'; l+=3; }else { p[1][k] = 0; l+=2; } }else { p[0][k] = pn[(pindex%16)%4]; printf("point num:%d\n",(pindex%16)%4); p[1][k] = ps[(int)((pindex%16)/4)]; pindex += 1; l+=1; } break; case 'l': //lines lstyle = 1; c = *(typestring+l+1); if((c>'0')&&(c<='9')) { ln[0][k] = c-'0'; d = *(typestring+l+2); if((d>='0')&&(d<='3')) { ln[1][k] = d-'0'; l+=3; }else { ln[1][k] = 0; l+=3; } }else { ln[1][k] = li[(lindex%16)%4]; //style ln[0][k] = lw[(int)((lindex%16)/4)]; //weight lindex += 1; l+=1; } break; case 't': //x,y-values recalculation if((l+2)$xmax) {\n",k); fprintf(sm," define xmax (x%d[$k])\n",k); fprintf(sm," }\n"); fprintf(sm," if (x%d[$k]<$xmin) {\n",k); fprintf(sm," define xmin (x%d[$k])\n",k); fprintf(sm," }\n"); fprintf(sm," if (y%d[$k]>$ymax) {\n",k); fprintf(sm," define ymax (y%d[$k])\n",k); fprintf(sm," }\n"); fprintf(sm," if (y%d[$k]<$ymin) {\n",k); fprintf(sm," define ymin (y%d[$k])\n",k); fprintf(sm," }\n"); fprintf(sm,"}\n"); } fprintf(sm,"define dx ($xmax-$xmin)\n"); fprintf(sm,"define dy ($ymax-$ymin)\n"); fprintf(sm,"define xmin ($xmin-$dx/20)\n"); fprintf(sm,"define ymin ($ymin-$dy/20)\n"); fprintf(sm,"define xmax ($xmax+$dx/20)\n"); fprintf(sm,"define ymax ($ymax+$dy/20)\n"); if(xinvert>0) { fprintf(sm,"define xl ($xmin)\n"); fprintf(sm,"define xp ($xmax)\n"); } else { fprintf(sm,"define xl ($xmax)\n"); fprintf(sm,"define xp ($xmin)\n"); } if(yinvert>0) { fprintf(sm,"define yd ($ymin)\n"); fprintf(sm,"define yg ($ymax)\n"); } else { fprintf(sm,"define yd ($ymax)\n"); fprintf(sm,"define yg ($ymin)\n"); } fprintf(sm,"limits $xl $xp $yd $yg\n"); fprintf(sm,"expand 0.7001\n"); fprintf(sm,"window 1 1 1 1\n"); fprintf(sm,"expand 0.6001\n"); fprintf(sm,"box 1 2 1 2\n"); for(k=0;k0) { fprintf(sm,"lweight %d\n",ln[0][k]); fprintf(sm,"ltype %d\n",ln[1][k]); fprintf(sm,"connect x%d y%d\n",k,k); fprintf(sm,"lweight 1\n"); fprintf(sm,"ltype 0\n"); } if(p[0][k]>0) { fprintf(sm,"ptype %d %d\n",p[0][k],p[1][k]); fprintf(sm,"expand $pointexp\n"); fprintf(sm,"points x%d y%d\n",k,k); fprintf(sm,"expand 0.6001\n"); } } fprintf(sm,"# legenda\n"); fprintf(sm,"define legx0 ($xp-($xp-$xl)*.3/10)\n"); fprintf(sm,"define legy0 ($yg-($yg-$yd)*2/30)\n"); fprintf(sm,"define dlegy0 (($yg-$yd)/30)\n"); fprintf(sm,"define textexp (0.6001)\n"); for(k=0;k0) { fprintf(sm,"lweight %d\n",ln[0][k]); fprintf(sm,"ltype %d\n",ln[1][k]); fprintf(sm,"define rx ($legx0-($xp-$xl)*.5/10)\n"); fprintf(sm,"define rx2 ($legx0)\n"); fprintf(sm,"define ry ($legy0-$dlegy0*%d)\n",k); fprintf(sm,"rel $rx $ry\n"); fprintf(sm,"expand 0.6001\n"); fprintf(sm,"draw $rx2 $ry\n"); fprintf(sm,"lweight 1\n"); fprintf(sm,"ltype 0\n"); } if(p[0][k]>0) { fprintf(sm,"define rx ($legx0-($xp-$xl)*.25/10)\n"); fprintf(sm,"define ry ($legy0-$dlegy0*%d)\n",k); fprintf(sm,"rel $rx $ry\n"); fprintf(sm,"expand $pointexp\n"); fprintf(sm,"ptype %d %d\n",p[0][k],p[1][k]); fprintf(sm,"dot\n"); fprintf(sm,"expand 0.6001\n"); } fprintf(sm,"define rx ($legx0-($xp-$xl)*0.9/10)\n"); fprintf(sm,"define ry ($legy0-$dlegy0*%d)\n",k); fprintf(sm,"rel $rx $ry\n"); fprintf(sm,"expand $textexp\n"); fprintf(sm,"putlabel 4 file:{\\bf %s} col:{\\bf %d,%d} row:{\\bf %d-%d} type:{\\bf %d-%d}\n",name[k],cx[k],cy[k],b[k],e[k],xt[k],yt[k]); } fprintf(sm,"device null\n"); fprintf(sm,"quit\n"); // fprintf(sm,""); fclose(sm); bash = fopen("temp.bash","w"); fprintf(bash,"#!/bin/bash\n"); fprintf(bash,"sm -S