B.2.  Umwandlungsprogramme

Das Format der vom Simulationsprogramm erzeugten Dateien —ihre Namen enden auf .sim— kann von gängigen Bildbetrachtungsprogrammen nicht interpretiert werden, hat dafür aber den Vorteil, daß die Dateien relativ kurz sind.

Um die Simulationsbilder mit fremder Software weiter bearbeiten zu können, wurde folgendes Programm geschrieben, das sie in das PGM1-Format (ascii) umwandelt.2

/* sim2xpm.c  
 
Author: Peter Münster, 1997  
 
Konvertiert ".sim"-Bilder in welche,  
die man mit xv bearbeiten kann.  
 
*/  
 
 
#include <stdio.h>  
#include "/home/peter/c/mystd.h"  
 
char progname[DAT_NAME_MAX];  
 
// Die Dimension steht in den ersten 4 Bytes:  
// erst X, dann Y  
void getdim(int *dim, FILE *fp){  
int i, low, high;  
 
for(i = 0; i < 2; ++i){  
high=getc(fp);  
low=getc(fp);  
dim[i]=high*256+low;  
}  
}  
 
 
int main(int argc, char *argv[]){  
extern char progname[];  
register int i;  
FILE *fp;  
FILE *fpout;  
int dim[2], ret_val=1;  
unsigned char *feld;  
char str[DAT_NAME_MAX];  
 
strncpy(progname, argv[0], DAT_NAME_MAX-1);  
 
while(--argc){  
if(!(fp=fopen(argv[argc], "r"))){  
FPF("cannot read: %s", argv[argc]);  
continue;  
}  
sprintf(str, "%s.xpm", argv[argc]);  
if(!(fpout=fopen(str, "w"))){  
FPF("cannot open: %s", str);  
fclose(fp);  
continue;  
}  
getdim(dim, fp);  
feld=(char *)malloc(dim[0]*dim[1]*SOC);  
fread(feld, SOC, dim[0]*dim[1], fp);  
 
fprintf(fpout,  
"P2\n#Bitmap-File aus %s\n%d %d\n256\n",  
argv[argc], dim[0], dim[1]); // 256=Farbtiefe  
for(i=0; i<dim[0]*dim[1]; i++)  
fprintf(fpout, "%3d\n", feld[i]);  
 
// Aufräumen  
fclose(fp);  
fclose(fpout);  
free(feld);  
ret_val=0; // mindestens ein Erfolg  
}  
return ret_val;  
}