#include "SUMA_suma.h" SUMA_SurfaceViewer *SUMAg_cSV = NULL; /*!< Global pointer to current Surface Viewer structure*/ SUMA_SurfaceViewer *SUMAg_SVv = NULL; /*!< Global pointer to the vector containing the various Surface Viewer Structures SUMAg_SVv contains SUMA_MAX_SURF_VIEWERS structures */ int SUMAg_N_SVv = 0; /*!< Number of SVs realized by X */ SUMA_DO *SUMAg_DOv = NULL; /*!< Global pointer to Displayable Object structure vector*/ int SUMAg_N_DOv = 0; /*!< Number of DOs stored in DOv */ SUMA_CommonFields *SUMAg_CF = NULL; /*!< Global pointer to structure containing info common to all viewers */ void usage_SUMA_FScurv_to_1D_Main () {/*Usage*/ static char FuncName[]={"usage_FScurv_to_1D"}; char * s = NULL; printf ("\n" "Usage: FScurv_to_1D [-skip_coords] [-output outfile] -input curv_name.asc \n" " Reads in a FreeSurfer curvature file and writes it out in 1D format. \n" " But the format is 1D to begin with, so 'what is that program for?' you ask. \n" " Not much, I say. It is used to test a SUMA function and also allows you\n" " to select the node index and data values from the 5 columns of the curv files.\n" "\n" " -input curv_name.asc: name of ASCII curvature file. To change a curvature file \n" " to ASCII, use mris_convert -c curv_name surf curvfile.asc \n" " surf is the surface over which the curvfile is defined, like\n" " lh.inflated.\n" " -skip_coords: If specified, the node coordinates are not included in the output.\n" " -output outfile: If specified, the output goes to a file instead of stdout, \n" " which is the screen\n" "\n"); s = SUMA_New_Additions(0, 1); printf("%s\n", s);SUMA_free(s); s = NULL; printf(" Ziad S. Saad SSCC/NIMH/NIH saadz@mail.nih.gov \n"); exit (0); }/*Usage*/ int main (int argc,char *argv[]) {/* Main */ static char FuncName[]={"FScurv_to_1D"}; int i, j, id, nrows=0, ncols=0, kar; float *v = NULL; char *outname = NULL; char *fname = NULL; FILE *outfile=NULL; SUMA_Boolean SkipCoords = NOPE, brk, rowmajor; SUMA_Boolean LocalHead = NOPE; /* allocate space for CommonFields structure */ SUMAg_CF = SUMA_Create_CommonFields (); if (SUMAg_CF == NULL) { fprintf(SUMA_STDERR,"Error %s: Failed in SUMA_Create_CommonFields\n", FuncName); exit(1); } /* parse command line */ kar = 1; outname = NULL; fname = NULL; SkipCoords = NOPE; rowmajor = YUP; /* just to test the function's execution */ brk = NOPE; while (kar < argc) { /* loop accross command ine options */ /*fprintf(stdout, "%s verbose: Parsing command line...\n", FuncName);*/ if (strcmp(argv[kar], "-h") == 0 || strcmp(argv[kar], "-help") == 0) { usage_SUMA_FScurv_to_1D_Main(); exit (0); } if (!brk && ( (strcmp(argv[kar], "-skip_coords") == 0) ) ) { SkipCoords = YUP; brk = YUP; } if (!brk && (strcmp(argv[kar], "-output") == 0)) { kar ++; if (kar >= argc) { fprintf (SUMA_STDERR, "need argument after -output\n"); exit (1); } outname = argv[kar]; brk = YUP; } if (!brk && (strcmp(argv[kar], "-input") == 0)) { kar ++; if (kar >= argc) { fprintf (SUMA_STDERR, "need argument after -input\n"); exit (1); } fname = argv[kar]; brk = YUP; } if (!brk) { fprintf (SUMA_STDERR,"Error %s:\nOption %s not understood. Try -help for usage\n", FuncName, argv[kar]); exit (1); } else { brk = NOPE; kar ++; } } if (!fname) { SUMA_SL_Err("No input file specified."); exit(1); } /* work the output name */ if (!outname) { outfile = SUMA_STDOUT; } else { outname = SUMA_Extension(outname, ".1D", NOPE); /* outname should be freed at the end */ if (SUMA_filexists(outname)) { fprintf(SUMA_STDERR,"Error %s: Output file %s exists, will not overwrite.\n", FuncName, outname); exit(1); } outfile = fopen(outname, "w"); if (!outfile) { SUMA_SL_Crit("Failed to open file for writing.\n" "Check file permissions."); exit(1); } } /* do the deed */ v = SUMA_readFScurv (fname, &nrows, &ncols, rowmajor, SkipCoords); if (!v) { SUMA_SL_Err("Failed in SUMA_readFScurv"); exit(1); } if (rowmajor) { for (i=0; i