Doxygen Source Code Documentation
SUMA.c File Reference
#include "SUMA_suma.h"Go to the source code of this file.
Defines | |
| #define | DEBUG_1 |
| #define | DEBUG_2 |
| #define | DEBUG_3 |
Functions | |
| void | SUMA_usage () |
| int | main (int argc, char *argv[]) |
Variables | |
| SUMA_SurfaceViewer * | SUMAg_cSV |
| SUMA_SurfaceViewer * | SUMAg_SVv |
| int | SUMAg_N_SVv |
| SUMA_DO * | SUMAg_DOv |
| int | SUMAg_N_DOv = 0 |
| SUMA_CommonFields * | SUMAg_CF |
Define Documentation
|
|
|
|
|
|
|
|
|
Function Documentation
|
||||||||||||
|
\** File : SUMA.c
Input paramters :
Definition at line 82 of file SUMA.c. References AO_type, argc, SUMA_CommonFields::Dev, SUMA_SurfSpecFile::N_Groups, SUMA_AddDO(), SUMA_Alloc_Axis(), SUMA_Alloc_DisplayObject_Struct(), SUMA_Alloc_SurfaceViewer_Struct(), SUMA_Assign_HostName(), SUMA_Boolean, SUMA_Create_CommonFields(), SUMA_error_message(), SUMA_Free_CommonFields(), SUMA_Free_Displayable_Object_Vect(), SUMA_Free_SurfaceViewer_Struct_Vect(), SUMA_LoadSpec(), SUMA_MAX_DISPLAYABLE_OBJECTS, SUMA_MAX_SURF_VIEWERS, SUMA_Read_SpecFile(), SUMA_SCREEN, SUMA_SetupSVforDOs(), SUMA_usage(), SUMA_X_SurfaceViewer_Create(), SUMAg_N_DOv, and SUMAg_N_SVv.
00083 {/* Main */
00084 static char FuncName[]={"SUMA"};
00085 int kar;
00086 SUMA_SFname *SF_name;
00087 SUMA_Boolean brk, SurfIn;
00088 char *VolParName, *NameParam, *specfilename = NULL, *AfniHostName;
00089 SUMA_SurfSpecFile Spec;
00090 SUMA_Axis *EyeAxis;
00091
00092 if (argc < 3)
00093 {
00094 SUMA_usage ();
00095 exit (1);
00096 }
00097
00098 /* allocate space for CommonFields structure */
00099 SUMAg_CF = SUMA_Create_CommonFields ();
00100 if (SUMAg_CF == NULL) {
00101 fprintf(SUMA_STDERR,"Error %s: Failed in SUMA_Create_CommonFields\n", FuncName);
00102 exit(1);
00103 }
00104
00105 /* initialize Volume Parent and AfniHostName to nothing */
00106 VolParName = NULL;
00107 AfniHostName = NULL;
00108
00109 /* Allocate space for DO structure */
00110 SUMAg_DOv = SUMA_Alloc_DisplayObject_Struct (SUMA_MAX_DISPLAYABLE_OBJECTS);
00111
00112 /* read in the surfaces */
00113 kar = 1;
00114 brk = NOPE;
00115 SurfIn = NOPE;
00116 while (kar < argc) { /* loop accross command ine options */
00117 /*fprintf(stdout, "%s verbose: Parsing command line...\n", FuncName);*/
00118 if (strcmp(argv[kar], "-h") == 0 || strcmp(argv[kar], "-help") == 0) {
00119 SUMA_usage ();
00120 exit (1);
00121 }
00122
00123 if (!brk && (strcmp(argv[kar], "-dev") == 0)) {
00124 fprintf(SUMA_STDOUT,"Warning %s: SUMA running in developer mode, some options may malfunction.\n", FuncName);
00125 SUMAg_CF->Dev = YUP;
00126 brk = YUP;
00127 }
00128
00129 if (!brk && (strcmp(argv[kar], "-vp") == 0 || strcmp(argv[kar], "-sa") == 0 || strcmp(argv[kar], "-sv") == 0))
00130 {
00131 kar ++;
00132 if (kar >= argc) {
00133 fprintf (SUMA_STDERR, "need argument after -vp|-sa|-sv ");
00134 exit (1);
00135 }
00136 VolParName = argv[kar];
00137 /*fprintf(SUMA_STDOUT, "Found: %s\n", VolParName);*/
00138
00139 brk = YUP;
00140 }
00141
00142 if (!brk && strcmp(argv[kar], "-ah") == 0)
00143 {
00144 kar ++;
00145 if (kar >= argc) {
00146 fprintf (SUMA_STDERR, "need argument after -ah ");
00147 exit (1);
00148 }
00149 AfniHostName = argv[kar];
00150 /*fprintf(SUMA_STDOUT, "Found: %s\n", AfniHostName);*/
00151
00152 brk = YUP;
00153 }
00154 if (!brk && strcmp(argv[kar], "-spec") == 0)
00155 {
00156 kar ++;
00157 if (kar >= argc) {
00158 fprintf (SUMA_STDERR, "need argument after -spec ");
00159 exit (1);
00160 }
00161
00162 specfilename = argv[kar];
00163 /*fprintf(SUMA_STDOUT, "Found: %s\n", specfilename);*/
00164 brk = YUP;
00165 }
00166
00167
00168 if (!brk) {
00169 fprintf (SUMA_STDERR,"Error %s: Option %s not understood. Try -help for usage\n", FuncName, argv[kar]);
00170 exit (1);
00171 } else {
00172 brk = NOPE;
00173 kar ++;
00174 }
00175
00176 }/* loop accross command ine options */
00177
00178
00179 if (specfilename == NULL) {
00180 fprintf (SUMA_STDERR,"Error %s: No spec filename specified.\n", FuncName);
00181 exit(1);
00182 }
00183
00184 if(!SUMA_Assign_HostName (SUMAg_CF, AfniHostName, -1)) {
00185 fprintf (SUMA_STDERR, "Error %s: Failed in SUMA_Assign_HostName", FuncName);
00186 exit (1);
00187 }
00188
00189 /* load the specs file and the specified surfaces*/
00190 /* Load The spec file */
00191 if (!SUMA_Read_SpecFile (specfilename, &Spec)) {
00192 fprintf(SUMA_STDERR,"Error %s: Error in SUMA_Read_SpecFile\n", FuncName);
00193 exit(1);
00194 }
00195
00196 /* make sure only one group was read in */
00197 if (Spec.N_Groups != 1) {
00198 fprintf(SUMA_STDERR,"Error %s: One and only one group of surfaces is allowed at the moment (%d found).\n", FuncName, Spec.N_Groups);
00199 exit(1);
00200 }
00201
00202 /* load the surfaces specified in the specs file, one by one*/
00203 if (!SUMA_LoadSpec (&Spec, SUMAg_DOv, &SUMAg_N_DOv, VolParName)) {
00204 fprintf(SUMA_STDERR,"Error %s: Failed in SUMA_LoadSpec.\n", FuncName);
00205 exit(1);
00206 }
00207
00208 /* create an Eye Axis DO */
00209 EyeAxis = SUMA_Alloc_Axis ("Eye Axis");
00210 if (EyeAxis == NULL) {
00211 SUMA_error_message (FuncName,"Error Creating Eye Axis",1);
00212 exit(1);
00213 }
00214
00215 /* Store it into SUMAg_DOv */
00216 if (!SUMA_AddDO(SUMAg_DOv, &SUMAg_N_DOv, (void *)EyeAxis, AO_type, SUMA_SCREEN)) {
00217 SUMA_error_message (FuncName,"Error Adding DO", 1);
00218 exit(1);
00219 }
00220 /*fprintf (SUMA_STDERR, "SUMAg_N_DOv = %d created\n", SUMAg_N_DOv);*/
00221
00222
00223 /* Allocate space (and initialize) Surface Viewer Structure */
00224 SUMAg_SVv = SUMA_Alloc_SurfaceViewer_Struct (SUMA_MAX_SURF_VIEWERS);
00225
00226 /* Check on initialization */
00227 /*SUMA_Show_SurfaceViewer_Struct (SUMAg_cSV, stdout);*/
00228
00229 /* Register the surfaces in Spec file with the surface viewer and perform setups */
00230 for (kar = 0; kar < SUMA_MAX_SURF_VIEWERS; ++kar) {
00231 if (!SUMA_SetupSVforDOs (Spec, SUMAg_DOv, SUMAg_N_DOv, &SUMAg_SVv[kar])) {
00232 fprintf (SUMA_STDERR, "Error %s: Failed in SUMA_SetupSVforDOs function.\n", FuncName);
00233 exit (1);
00234 }
00235 }
00236
00237 /* Create the Surface Viewer Window */
00238 if (!SUMA_X_SurfaceViewer_Create ()) {
00239 fprintf(stderr,"Error in SUMA_X_SurfaceViewer_Create. Exiting\n");
00240 return 1;
00241 }
00242 /* One Surface Viewer created and initialized */
00243 SUMAg_N_SVv += 1;
00244
00245
00246 /*Main loop */
00247 XtAppMainLoop(SUMAg_CF->App);
00248
00249
00250 /* Done, clean up time */
00251
00252 if (!SUMA_Free_Displayable_Object_Vect (SUMAg_DOv, SUMAg_N_DOv)) SUMA_error_message(FuncName,"DO Cleanup Failed!",1);
00253 if (!SUMA_Free_SurfaceViewer_Struct_Vect (SUMAg_SVv, SUMAg_N_SVv)) SUMA_error_message(FuncName,"SUMAg_SVv Cleanup Failed!",1);
00254 if (!SUMA_Free_CommonFields(SUMAg_CF)) SUMA_error_message(FuncName,"SUMAg_CF Cleanup Failed!",1);
00255 return 0; /* ANSI C requires main to return int. */
00256 }/* Main */
|
|
|
Definition at line 21 of file SUMA.c. References SUMA_Version(). Referenced by main().
00023 {/*Usage*/
00024 printf ("\n\33[1mUsage: \33[0m SUMA \n\t-spec <Spec file> [-sv <SurfVol>] [-ah AfniHost]\n\n");
00025 printf ("\n\t-spec <Spec file>: File containing surface specification. This file is typically \n");
00026 printf ("\n\t generated by @SUMA_Make_Spec_FS (for FreeSurfer surfaces) or \n");
00027 printf ("\n\t @SUMA_Make_Spec_SF (for SureFit surfaces). The Spec file should \n");
00028 printf ("\n\t be located in the directory containing the surfaces.\n");
00029 printf ("\n\t[-sv <SurfVol>]: Anatomical volume used in creating the surface and registerd to \n");
00030 printf ("\n\t the current experiment's anatomical volume (using @SUMA_AlignToExperiment).\n");
00031 printf ("\n\t This parameter is optional but linking to AFNI is impossible without it.\n");
00032 printf ("\n\t[-ah <AfniHost>]: Name (or IP address) of the computer running AFNI. This parameter is \n");
00033 printf ("\n\t optional, the default is localhost.\n");
00034 /*
00035 printf ("\n\t[-dev]: This option will give access to options that are not well polished for consuption.\n");
00036 printf ("\n\t \n");
00037 */
00038 /*SUMA_VolSurf_help(NULL); OBSOLETE */
00039 printf ("\n\n\tFor help on interacting with SUMA, press 'h' with the mouse pointer inside SUMA's window.\n");
00040 printf ("\n\n\tFor more help: http://afni.nimh.nih.gov/ssc/ziad/SUMA/SUMA_doc.htm\n");
00041 printf ("\n\n\tIf you can't get help here, please get help somewhere.\n");
00042 SUMA_Version(NULL);
00043
00044 printf ("\n\t Ziad S. Saad SSCC/NIMH/NIH ziad@nih.gov \n\n");
00045 exit (0);
00046 }/*Usage*/
|
Variable Documentation
|
|
Global pointer to structure containing info common to all viewers |
|
|
Global pointer to current Surface Viewer structure |
|
|
Global pointer to Displayable Object structure vector |
|
|
Number of DOs stored in DOv Definition at line 18 of file SUMA.c. Referenced by main(). |
|
|
Number of SVs stored in SVv Definition at line 16 of file SUMA.c. Referenced by main(). |
|
|
Global pointer to the vector containing the various Surface Viewer Structures |