Doxygen Source Code Documentation
qplot.c File Reference
#include "mrilib.h"
#include "coxplot.h"
#include "display.h"
Go to the source code of this file.
Defines | |
#define | DEFAULT_NCOLOVR 20 |
Functions | |
void | startup_timeout_CB (XtPointer client_data, XtIntervalId *id) |
void | scroll_timeout_CB (XtPointer client_data, XtIntervalId *id) |
int | main (int argc, char *argv[]) |
void | killfunc (void *fred) |
MEM_topshell_data * | plot_ts_qqq (Display *dpy, int nx, float *x, int ny, float **y, char *lab_xxx, char *lab_yyy, char *lab_top, char **nam_yyy, void_func *killfunc) |
Variables | |
char * | INIT_colovr [DEFAULT_NCOLOVR] |
char * | INIT_labovr [DEFAULT_NCOLOVR] |
int | nx |
int | nts |
int | sep = 1 |
float ** | yar |
float * | xar |
MCW_DC * | dc |
char * | title = NULL |
char * | xlabel = NULL |
char * | ylabel = NULL |
char * | dfile_nar [6] |
int | nyar = 0 |
char * | ynar [128] |
char ** | yname = NULL |
XtAppContext | app |
MEM_topshell_data * | mp = NULL |
Define Documentation
|
Definition at line 13 of file qplot.c. Referenced by main(). |
Function Documentation
|
Definition at line 321 of file qplot.c. Referenced by plot_ts_qqq(), and startup_timeout_CB().
00321 { exit(0) ; } |
|
\** File : SUMA.c
Input paramters :
Definition at line 47 of file qplot.c. References app, argc, DEFAULT_NCOLOVR, dfile_nar, far, free, INIT_colovr, INIT_labovr, MRI_IMAGE::kind, machdep(), mainENTRY, malloc, MCW_get_intlist(), MCW_new_DC(), mri_fix_data_pointer(), MRI_FLOAT_PTR, mri_free(), mri_new_vol_empty(), mri_read_ascii(), mri_to_float(), mri_transpose(), my_getenv(), nts, MRI_IMAGE::nx, nx, MRI_IMAGE::ny, nyar, realloc, sep, startup_timeout_CB(), strtod(), THD_MAX_NAME, title, xar, xlabel, yar, ylabel, yname, and ynar.
00048 { 00049 int iarg , ii , ny , ignore=0 , use=0 , install=0 ; 00050 float dx=1.0 ; 00051 char * tsfile , * cpt ; 00052 char dname[THD_MAX_NAME] , subv[THD_MAX_NAME] ; 00053 MRI_IMAGE * inim , * flim ; 00054 float * far ; 00055 Widget shell ; 00056 int use_stdin=0 ; /* 01 Aug 2001 */ 00057 00058 /*-- help? --*/ 00059 00060 if( argc < 2 || strcmp(argv[1],"-help") == 0 ){ 00061 printf("Usage: 1dplot [options] tsfile\n" 00062 "Graphs the columns of a *.1D type time series file to the screen.\n" 00063 "\n" 00064 "Options:\n" 00065 " -install = Install a new X11 colormap.\n" 00066 " -sep = Plot each column in a separate sub-graph.\n" 00067 " -one = Plot all columns together in one big graph.\n" 00068 " [default = -sep]\n" 00069 " -dx xx = Spacing between points on the x-axis is 'xx'\n" 00070 " [default = 1]\n" 00071 " -ignore nn = Skip first 'nn' rows in the input file\n" 00072 " [default = 0]\n" 00073 " -use mm = Plot 'mm' points [default = all of them]\n" 00074 " -xlabel aa = Put string 'aa' below the x-axis\n" 00075 " [default = no axis label]\n" 00076 " -ylabel aa = Put string 'aa' to the left of the y-axis\n" 00077 " [default = no axis label]\n" 00078 "\n" 00079 " -stdin = Don't read from tsfile; instead, read from\n" 00080 " stdin and plot it.\n" 00081 "\n" 00082 " -ynames aa bb ... = Use the strings 'aa', 'bb', etc., as\n" 00083 " labels to the right of the graphs,\n" 00084 " corresponding to each input column.\n" 00085 " These strings CANNOT start with the\n" 00086 " '-' character.\n" 00087 "\n" 00088 " -volreg = Makes the 'ynames' be the same as the\n" 00089 " 6 labels used in plug_volreg for\n" 00090 " Roll, Pitch, Yaw, I-S, R-L, and A-P\n" 00091 " movements, in that order.\n" 00092 "\n" 00093 "You may also select a subset of columns to display using\n" 00094 "a tsfile specification like 'fred.1D[0,3,5]', indicating\n" 00095 "that columns #0, #3, and #5 will be the only ones plotted.\n" 00096 "For more details on this selection scheme, see the output\n" 00097 "of '3dcalc -help'.\n" 00098 "\n" 00099 "Example: graphing a 'dfile' output by 3dvolreg, when TR=5:\n" 00100 " 1dplot -volreg -dx 5 -xlabel Time 'dfile[1..6]'\n" 00101 "\n" 00102 ) ; 00103 exit(0) ; 00104 } 00105 00106 mainENTRY("1dplot main"); machdep(); 00107 00108 /* open X11 */ 00109 00110 shell = XtVaAppInitialize( 00111 &app , "AFNI" , NULL , 0 , &argc , argv , NULL , NULL ) ; 00112 if( shell == NULL ){ 00113 fprintf(stderr,"** Cannot initialize X11!\n") ; exit(1) ; 00114 } 00115 00116 cpt = my_getenv("TMPDIR") ; /* just for fun */ 00117 00118 /*-- scan arguments that X11 didn't eat --*/ 00119 00120 iarg = 1 ; 00121 while( iarg < argc && argv[iarg][0] == '-' ){ 00122 00123 if( strcmp(argv[iarg],"-install") == 0 ){ 00124 install++ ; iarg++ ; continue ; 00125 } 00126 00127 if( strcmp(argv[iarg],"-stdin") == 0 ){ /* 01 Aug 2001 */ 00128 use_stdin++ ; iarg++ ; continue ; 00129 } 00130 00131 if( strcmp(argv[iarg],"-") == 0 ){ /* skip */ 00132 iarg++ ; continue ; 00133 } 00134 00135 if( strcmp(argv[iarg],"-ynames") == 0 ){ 00136 iarg++ ; 00137 while( iarg < argc && argv[iarg][0] != '-' ){ 00138 ynar[nyar++] = argv[iarg++] ; 00139 } 00140 continue ; 00141 } 00142 00143 if( strcmp(argv[iarg],"-volreg") == 0 ){ 00144 int ii ; 00145 for( ii=0 ; ii < 6 ; ii++ ) ynar[nyar++] = dfile_nar[ii] ; 00146 iarg++ ; continue ; 00147 } 00148 00149 if( strcmp(argv[iarg],"-title") == 0 ){ 00150 title = argv[++iarg] ; 00151 iarg++ ; continue ; 00152 } 00153 00154 if( strcmp(argv[iarg],"-xlabel") == 0 ){ 00155 xlabel = argv[++iarg] ; 00156 iarg++ ; continue ; 00157 } 00158 00159 if( strcmp(argv[iarg],"-ylabel") == 0 ){ 00160 ylabel = argv[++iarg] ; 00161 iarg++ ; continue ; 00162 } 00163 00164 if( strcmp(argv[iarg],"-ignore") == 0 ){ 00165 ignore = strtod( argv[++iarg] , NULL ) ; 00166 if( ignore < 0 ){fprintf(stderr,"** Illegal -ignore value!\n");exit(1);} 00167 iarg++ ; continue ; 00168 } 00169 00170 if( strcmp(argv[iarg],"-use") == 0 ){ 00171 use = strtod( argv[++iarg] , NULL ) ; 00172 if( use < 2 ){fprintf(stderr,"** Illegal -use value!\n");exit(1);} 00173 iarg++ ; continue ; 00174 } 00175 00176 if( strcmp(argv[iarg],"-dx") == 0 ){ 00177 dx = strtod( argv[++iarg] , NULL ) ; 00178 if( dx <= 0.0 ){fprintf(stderr,"** Illegal -dx value!\n");exit(1);} 00179 iarg++ ; continue ; 00180 } 00181 00182 if( strcmp(argv[iarg],"-sep") == 0 ){ 00183 sep = 1 ; iarg++ ; continue ; 00184 } 00185 00186 if( strcmp(argv[iarg],"-one") == 0 ){ 00187 sep = 0 ; iarg++ ; continue ; 00188 } 00189 00190 fprintf(stderr,"** Unknown option: %s\n",argv[iarg]) ; exit(1) ; 00191 } 00192 00193 if( iarg >= argc && !use_stdin ){ 00194 fprintf(stderr,"** No tsfile on command line!\n") ; exit(1) ; 00195 } 00196 00197 dc = MCW_new_DC( shell , 16 , 00198 DEFAULT_NCOLOVR , INIT_colovr , INIT_labovr , 00199 1.0 , install ) ; 00200 00201 if( nyar > 0 ) yname = ynar ; 00202 00203 /*-- 01 Aug 2001: read from stdin instead of a file --*/ 00204 00205 if( use_stdin ){ 00206 char lbuf[2560] , *cpt ; 00207 int nval ; 00208 float val[9] ; 00209 00210 cpt = fgets(lbuf,2560,stdin) ; 00211 if( cpt == NULL ){ 00212 fprintf(stderr,"*** Can't read from stdin!\n"); exit(1); 00213 } 00214 nval = sscanf(lbuf,"%f%f%f%f%f%f%f%f%f", 00215 val+0,val+1,val+2,val+3,val+4,val+5,val+6,val+7,val+8) ; 00216 if( nval < 1 ){ 00217 fprintf(stderr,"*** Can't read numbers from stdin!\n"); exit(1); 00218 } 00219 00220 subv[0] = '\0' ; nx = nval ; ny = 1 ; 00221 far = (float *) malloc(sizeof(float)*nval) ; 00222 memcpy(far,val,sizeof(float)*nx) ; 00223 while(1){ /* read from stdin */ 00224 cpt = fgets(lbuf,2560,stdin) ; 00225 if( cpt == NULL ) break ; 00226 nval = sscanf(lbuf,"%f%f%f%f%f%f%f%f%f", 00227 val+0,val+1,val+2,val+3,val+4,val+5,val+6,val+7,val+8) ; 00228 if( nval < 1 ) break ; 00229 far = (float *) realloc( far , sizeof(float)*(ny+1)*nx ) ; 00230 memcpy(far+ny*nx,val,sizeof(float)*nx) ; 00231 ny++ ; 00232 } 00233 if( ny < 2 ){ 00234 fprintf(stderr,"** Can't read enough data from stdin\n"); exit(1); 00235 } 00236 inim = mri_new_vol_empty( nx,ny,1 , MRI_float ) ; 00237 mri_fix_data_pointer( far , inim ) ; 00238 00239 } else { /*-- old code: read from a file --*/ 00240 00241 /* check input filename for index strings */ 00242 00243 tsfile = argv[iarg] ; 00244 cpt = strstr(tsfile,"[") ; 00245 00246 if( cpt == NULL ){ 00247 strcpy( dname , tsfile ) ; 00248 subv[0] = '\0' ; 00249 } else if( cpt == tsfile ){ 00250 fprintf(stderr,"** Illegal filename on command line!\n");exit(1); 00251 } else { 00252 ii = cpt - tsfile ; 00253 memcpy(dname,tsfile,ii) ; dname[ii] = '\0' ; 00254 strcpy(subv,cpt) ; 00255 } 00256 00257 /* read input file */ 00258 00259 inim = mri_read_ascii( dname ) ; 00260 if( inim == NULL ){ 00261 fprintf(stderr,"** Can't read input file %s\n",dname) ; 00262 exit(1); 00263 } 00264 } /* end of file input */ 00265 00266 if( inim->kind != MRI_float ){ /* should not happen */ 00267 flim = mri_to_float(inim) ; mri_free(inim) ; inim = flim ; 00268 } 00269 flim = mri_transpose(inim) ; mri_free(inim) ; 00270 far = MRI_FLOAT_PTR(flim) ; 00271 nx = flim->nx ; 00272 ny = flim->ny ; 00273 00274 /* make x axis */ 00275 00276 xar = (float *) malloc( sizeof(float) * nx ) ; 00277 for( ii=0 ; ii < nx ; ii++ ) xar[ii] = dx * ii ; 00278 00279 /* select data to plot */ 00280 00281 if( subv[0] == '\0' ){ /* no sub-list */ 00282 00283 nts = ny ; 00284 yar = (float **) malloc(sizeof(float *)*nts) ; 00285 for( ii=0 ; ii < ny ; ii++ ) yar[ii] = far + (ii*nx+ignore) ; 00286 00287 } else { /* process sub-list */ 00288 int * ivlist , * ivl ; 00289 00290 ivlist = MCW_get_intlist( ny , subv ) ; 00291 if( ivlist == NULL || ivlist[0] < 1 ){ 00292 fprintf(stderr,"** Illegal column selectors on command line!\n"); 00293 exit(1); 00294 } 00295 nts = ivlist[0] ; 00296 ivl = ivlist + 1 ; 00297 for( ii=0 ; ii < nts ; ii++ ){ 00298 if( ivl[ii] < 0 || ivl[ii] >= ny ){ 00299 fprintf(stderr,"** Illegal selector on command line!\n"); 00300 exit(1) ; 00301 } 00302 } 00303 yar = (float **) malloc(sizeof(float *)*nts) ; 00304 for( ii=0 ; ii < nts ; ii++ ) yar[ii] = far + (ivl[ii]*nx+ignore) ; 00305 free(ivlist) ; 00306 } 00307 00308 nx = nx - ignore ; /* cut off the ignored points */ 00309 00310 if( use > 1 && nx > use ) nx = use ; /* 29 Nov 1999 */ 00311 00312 /* start X11 */ 00313 00314 (void) XtAppAddTimeOut( app , 123 , startup_timeout_CB , NULL ) ; 00315 00316 XtAppMainLoop(app) ; 00317 exit(0) ; 00318 } |
|
Definition at line 324 of file qplot.c. References dpy, killfunc(), memplot_to_topshell(), mp, nx, and plot_ts_mem(). Referenced by startup_timeout_CB().
00328 { 00329 MEM_plotdata * mp ; 00330 MEM_topshell_data * mpmp=NULL ; 00331 int ymask = 0 ; 00332 00333 if( dpy == NULL ) return ; 00334 00335 if( ny < 0 ){ ymask = TSP_SEPARATE_YBOX ; ny = -ny ; } 00336 00337 mp = plot_ts_mem( nx,x , ny,ymask,y , lab_xxx , lab_yyy , lab_top , nam_yyy ) ; 00338 if( mp != NULL ) 00339 mpmp = memplot_to_topshell( dpy , mp , killfunc ) ; 00340 00341 return mpmp ; 00342 } |
|
Definition at line 361 of file qplot.c. References app, client_data, MEM_topshell_data::drawing, and scroll_timeout_CB(). Referenced by scroll_timeout_CB(), and startup_timeout_CB().
00362 { 00363 XWindowAttributes xwat ; 00364 00365 XGetWindowAttributes( XtDisplay(mp->drawing), 00366 XtWindow(mp->drawing) , &xwat ) ; 00367 00368 XCopyArea( XtDisplay(mp->drawing) , 00369 XtWindow(mp->drawing) , XtWindow(mp->drawing) , 00370 DefaultGC(XtDisplay(mp->drawing),0) , 00371 1 , 0 , xwat.width-1 , xwat.height , 0 , 0 ) ; 00372 00373 XClearArea( XtDisplay(mp->drawing) , 00374 XtWindow(mp->drawing) , 00375 xwat.width-1 , 0 , 1 , xwat.height , FALSE ) ; 00376 00377 (void) XtAppAddTimeOut( app , 16 , scroll_timeout_CB , NULL ) ; 00378 return ; 00379 } |
|
Definition at line 346 of file qplot.c. References app, client_data, MCW_DC::display, killfunc(), nts, nx, plot_ts_qqq(), scroll_timeout_CB(), title, xar, xlabel, yar, ylabel, and yname. Referenced by main().
00347 { 00348 int ng ; 00349 00350 /* make graph */ 00351 00352 ng = (sep) ? (-nts) : (nts) ; 00353 00354 mp = plot_ts_qqq( dc->display , nx , xar , ng , yar , 00355 xlabel , ylabel , title , yname , killfunc ) ; 00356 00357 (void) XtAppAddTimeOut( app , 16 , scroll_timeout_CB , NULL ) ; 00358 return ; 00359 } |
Variable Documentation
|
Definition at line 45 of file qplot.c. Referenced by main(), scroll_timeout_CB(), and startup_timeout_CB(). |
|
|
|
Initial value: { "Roll [\\degree]" , "Pitch [\\degree]" , "Yaw [\\degree]" , "\\Delta I-S [mm]" , "\\Delta R-L [mm]" , "\\Delta A-P [mm]" } Definition at line 34 of file qplot.c. Referenced by main(). |
|
Initial value: { "#ffff00" , "#ffcc00" , "#ff9900" , "#ff6900" , "#ff4400" , "#ff0000" , "#0000ff" , "#0044ff" , "#0069ff" , "#0099ff" , "#00ccff" , "#00ffff" , "green" , "limegreen" , "violet" , "hotpink" , "white" , "#dddddd" , "#bbbbbb" , "black" } Definition at line 15 of file qplot.c. Referenced by main(). |
|
Initial value: { "yellow" , "yell-oran" , "oran-yell" , "orange" , "oran-red" , "red" , "dk-blue", "blue" , "lt-blue1" , "lt-blue2" , "blue-cyan", "cyan" , "green" , "limegreen" , "violet" , "hotpink" , "white" , "gry-dd" , "gry-bb" , "black" } Definition at line 22 of file qplot.c. Referenced by main(). |
|
|
Definition at line 29 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 29 of file qplot.c. Referenced by main(), plot_ts_qqq(), and startup_timeout_CB(). |
|
Definition at line 38 of file qplot.c. Referenced by main(). |
|
Definition at line 29 of file qplot.c. Referenced by main(). |
|
Definition at line 32 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 30 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 32 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 30 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 32 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 40 of file qplot.c. Referenced by main(), and startup_timeout_CB(). |
|
Definition at line 39 of file qplot.c. Referenced by main(). |