DEFINE_DEVICE_TYPE: movie_camera2 DEFAULT_ICON( topwindow.gif ); /* Local shared variables. */ float x, y; DEFINE_THREAD: start_up { /* Use thread with larger stack-size. */ TRIGGER_THREAD_STCKSZ( movie_camera, 0.0, 0, 262144 ); } END_DEFINE_THREAD. DEFINE_THREAD: movie_camera { void snap_image( char *image_file_name ); int j, movie_frame=0; char *filename, *wrd, wrd2[50]; x = 8.5; y = 0.1; wrd2[0] = '\0'; filename = (char *)malloc(100); wrd = (char *)malloc(500); sprintf(filename,"frame_"); while (1) { /* Annotate the time display. */ if (wrd2[0] != '\0') Annotate( wrd2, 189, x, y ); if (CSIM_TIME==0.0) strcpy(wrd2,"Time = 0.0"); else sprintf(wrd2,"Time = %g", CSIM_TIME); Annotate( wrd2, 16, x, y ); /* Snap the canvas. */ sprintf(wrd,"%5d.ppm", movie_frame++ ); j = 0; while (wrd[j]==' ') wrd[j++] = '0'; filename[6] = '\0'; strcat(filename,wrd); snap_image( filename ); DELAY( 0.5 ); } } END_DEFINE_THREAD. END_DEFINE_DEVICE_TYPE. DEFINE_DEVICE_TYPE: dummy PORT_LIST( xxxx ); DEFAULT_ICON( sidewindow.gif ); /* Local shared variables. */ int xxxx; DEFINE_THREAD: start_up { } END_DEFINE_THREAD. END_DEFINE_DEVICE_TYPE.