/* Global variables for creating movie file names */ static int animi_xpm = 1; /* Output copy of graphics window to a XPM file */ void xpmdump_() { int i,j,mpx,px; /* Output file name format FeapXXXXX.xpm */ char fname[14]; /* 18 colors = 16 + fg + bg (change if numcolors change) */ char cidx[18] = {'a','b','c','d','e', 'f','g','h','i','j', 'k','l','m','n','o', 'p','q','r'}; XImage *myimage; FILE *fp; /* Create File Name: N.B. Starts looking from Feap00001.xpm * if first time through */ if(animi_xpm == 1) { sprintf(fname,"Feap%05d.xpm", animi_xpm++); while( !access(fname,F_OK) ) sprintf(fname,"Feap%05d.xpm", animi_xpm++); } else sprintf(fname,"Feap%05d.xpm",animi_xpm++); /* Open File */ printf("Opening %s\n",fname); fp = fopen(fname,"w"); /* Modify name for header write */ fname[9]='_'; /* Write out header */ fprintf(fp,"/* XPM */\n"); fprintf(fp,"static char *%s[] = {\n",fname); /* Write out values */ fprintf(fp,"/* */\n"); fprintf(fp,"\"%d %d %d %d\",\n", current_dw->xwa.width, current_dw->xwa.height, current_dw->num_fg_colors+1,1); /* Write out colors used */ fprintf(fp,"/* */\n"); for(j = 0; j < current_dw->num_fg_colors+1; j++) fprintf(fp,"\"%c c #%06x\",\n", cidx[j], current_dw->pixel_value_for_color[j]); /* Swap FG and BG */ i=cidx[0]; cidx[0]=cidx[1]; cidx[1]=i; /* Get image from pixmap */ myimage = XGetImage(current_dw->xdisplay, current_dw->svimage, 0,0, current_dw->xwa.width, current_dw->xwa.height, AllPlanes , ZPixmap); /* Write out pixel-values */ fprintf(fp,"/* */\n"); for(j=0;jxwa.height;j++) { fprintf(fp,"\""); for(i=0;ixwa.width;i++) { px = (int)XGetPixel(myimage,i,j); mpx = 0; while( (px != current_dw->pixel_value_for_color[mpx++]) ) { } fprintf(fp,"%c",cidx[mpx-1]); } fprintf(fp,"\",\n"); } fprintf(fp,"};\n"); fclose(fp); }