1 /***************************************************************************** 2 Major portions of this software are copyrighted by the Medical College 3 of Wisconsin, 1994-2000, and are released under the Gnu General Public 4 License, Version 2. See the file README.Copyright for details. 5 ******************************************************************************/ 6 7 #ifndef _MCW_TO3D_HEADER_ 8 #define _MCW_TO3D_HEADER_ 9 10 #include "mrilib.h" 11 #include "imseq.h" 12 #include "killer.h" 13 #include "afni_warp.h" 14 #include "mcw_glob.h" 15 16 #include <Xm/SeparatoG.h> 17 18 #include <Xm/Display.h> 19 #include <stdlib.h> 20 #include <ctype.h> 21 #include <unistd.h> 22 23 #define NO_NAMES 24 25 typedef struct { 26 int xorient,yorient,zorient , voxshape , voxcontig , 27 xyz_centered , view_type , 28 dataset_type , anatomy_type , function_type , nx,ny,nz ; 29 30 float fov , xsize,ysize,zsize , zspacing , 31 xorigin,yorigin,zorigin ; 32 33 char dataset_name[THD_MAX_NAME] , 34 short_label1[THD_MAX_LABEL] , short_label2[THD_MAX_LABEL] ; 35 36 char dataset_type_string[THD_MAX_NAME] , 37 anatomy_type_string[THD_MAX_NAME] , 38 function_type_string[THD_MAX_NAME] , 39 geometry_parent_filename[THD_MAX_NAME] , 40 anatomy_parent_filename[THD_MAX_NAME] , 41 output_filename[THD_MAX_NAME] , 42 session_filename[THD_MAX_NAME] ; 43 44 char geometry_dataname[THD_MAX_NAME] , 45 anatomy_dataname[THD_MAX_NAME] ; 46 47 int nimage , nvals , nosave, writebrik ; 48 49 MCW_idcode anatomy_parent_idcode ; 50 51 int need_stat_aux ; 52 float stat_aux[MAX_STAT_AUX] ; 53 54 int xincode , yincode , zincode ; 55 float xin_bot,xin_top , yin_bot,yin_top , zin_bot,zin_top ; 56 57 int ntt , nzz , t_then_z , tunits ; 58 float TR ; 59 float *tpattern ; 60 61 float Torg ; /* 23 Feb 2005 */ 62 } to3d_data ; 63 64 #define INCODE_NONE -666 65 #define INCODE_FOV 100 66 #define INCODE_SLAB 200 67 68 #undef ORCODE 69 #define ORCODE(aa) \ 70 ( ((aa)=='R'||(aa)=='r') ? ORI_R2L_TYPE \ 71 :((aa)=='L'||(aa)=='l') ? ORI_L2R_TYPE \ 72 :((aa)=='P'||(aa)=='p') ? ORI_P2A_TYPE \ 73 :((aa)=='A'||(aa)=='a') ? ORI_A2P_TYPE \ 74 :((aa)=='I'||(aa)=='i') ? ORI_I2S_TYPE \ 75 :((aa)=='S'||(aa)=='s') ? ORI_S2I_TYPE : ILLEGAL_TYPE ) 76 77 typedef struct { 78 Widget topshell , topform ; 79 80 MCW_arrowval * xorient_av , * yorient_av , * zorient_av , 81 * xsize_av , * ysize_av , * zsize_av , 82 * xorigin_av , * yorigin_av , * zorigin_av , 83 * fov_av , * zspacing_av ; 84 MCW_bbox * voxshape_bbox , * voxcontig_bbox , * centered_bbox ; 85 86 Widget region_separator ; 87 88 Widget 89 #ifndef NO_NAMES 90 dataset_name_label , dataset_name_textfield , 91 short_label1_label , short_label1_textfield , 92 short_label2_label , short_label2_textfield , 93 #endif 94 geometry_parent_label , geometry_parent_textfield , 95 anatomy_parent_label , anatomy_parent_textfield ; 96 97 #ifndef NO_NAMES 98 Widget geometry_dataname_label , geometry_dataname_textfield , 99 anatomy_dataname_label , anatomy_dataname_textfield ; 100 #endif 101 102 MCW_arrowval * dataset_type_av , * function_type_av , * anatomy_type_av ; 103 104 Widget output_file_label , output_file_textfield ; 105 Widget session_file_label , session_file_textfield ; 106 107 Widget action_frame , action_rowcol , 108 button_help_pb , open_view_pb , save_file_pb , quit_pb ; 109 Widget swap_pb ; /* 14 Sep 1998 */ 110 111 /** April 1996: new widgets **/ 112 113 Widget xorigin_label , yorigin_label , zorigin_label ; 114 MCW_arrowval * view_type_av ; 115 Widget stat_aux_label , stat_aux_textfield , datum_label , TR_label ; 116 117 /** Miscellaneous other stuff */ 118 119 MCW_DC * dc ; 120 MCW_imseq * seq ; 121 122 int good ; 123 } to3d_widget_set ; 124 125 #define T3D_NAME_WIDTH 25 126 #define T3D_FORM_SPACING 11 127 128 static char orbuf[2] ; 129 #define SET_ORIGIN_LABEL(ww,cc) \ 130 ( orbuf[1] = '\0' , \ 131 orbuf[0] = ORIENT_typestr[(cc)][0] , \ 132 MCW_set_widget_label((ww),orbuf) ) 133 134 /*-----------------------------------------------------------------*/ 135 136 static char * T3D_voxshape_label[3] = { 137 "cubical" , "square" , "irregular" 138 } ; 139 140 #define VOXSHAPE_CUBICAL 1 141 #define VOXSHAPE_SQUARE 2 142 #define VOXSHAPE_IRREGULAR 4 143 144 static char * T3D_voxcontig_label[3] = { 145 "contiguous" , "unif.noncontig" , "irreg.noncontig" } ; 146 147 #define VOXCONTIG_YES 1 148 #define VOXCONTIG_UNIF 2 149 #define VOXCONTIG_IRREG 4 150 151 static char * T3D_centered_label[3] = { 152 "x axis centered" , "y axis centered" , "z axis centered" } ; 153 154 #define XCENTERED 1 155 #define YCENTERED 2 156 #define ZCENTERED 4 157 158 /*-----------------------------------------------------------------*/ 159 160 #define NCOLOVR 2 161 static char * FD_colovr[NCOLOVR] = { "yellow" , "cyan" } ; 162 163 #define NGRAY 80 /* default for -ncolor */ 164 #define GAMMA 1.0 /* default for -gamma */ 165 166 /*-----------------------------------------------------------------*/ 167 168 void T3D_create_widgets(void) ; 169 void T3D_read_images(void) ; 170 void T3D_setup_stat_aux(void) ; 171 172 void T3D_stat_aux_CB (Widget, XtPointer, XtPointer ); 173 void T3D_voxshape_CB (Widget, XtPointer, XtPointer ); 174 void T3D_voxcontig_CB (Widget, XtPointer, XtPointer ); 175 void T3D_centered_CB (Widget, XtPointer, XtPointer ); 176 void T3D_open_view_CB (Widget, XtPointer, XtPointer ); 177 void T3D_save_file_CB (Widget, XtPointer, XtPointer ); 178 void T3D_quit_CB (Widget, XtPointer, XtPointer ); 179 void T3D_swap_CB (Widget, XtPointer, XtPointer ); 180 181 void T3D_geometry_parent_CB(Widget, XtPointer, XtPointer ); 182 void T3D_anatomy_parent_CB (Widget, XtPointer, XtPointer ); 183 void T3D_pointer_leave_EV (Widget, XtPointer, XEvent * , RwcBoolean * ) ; 184 185 void T3D_imseq_CB( MCW_imseq * , FD_brick * , ISQ_cbs * ) ; 186 187 XtPointer T3D_getim( int , int , FD_brick * ) ; 188 189 #define RESET_QUIT T3D_quit_CB(NULL,NULL,NULL) 190 191 char * T3D_text_display( MCW_arrowval * , XtPointer ) ; 192 193 void T3D_initialize_user_data(void) ; 194 RwcBoolean T3D_check_data(RwcBoolean) ; 195 196 void T3D_orient_av_CB ( MCW_arrowval * , XtPointer ) ; 197 void T3D_origin_av_CB ( MCW_arrowval * , XtPointer ) ; 198 void T3D_fov_av_CB ( MCW_arrowval * , XtPointer ) ; 199 void T3D_size_av_CB ( MCW_arrowval * , XtPointer ) ; 200 void T3D_type_av_CB ( MCW_arrowval * , XtPointer ) ; 201 202 void T3D_set_dependent_geometries(void) ; 203 void T3D_widgets_to_data(void) ; 204 void T3D_data_to_widgets(void) ; 205 206 void T3D_poperr(char *,char *, RwcBoolean) ; 207 208 void T3D_fix_dataset_dimen(void) ; 209 void Syntax() ; 210 211 void AFNI_load_defaults( Widget ) ; 212 213 int decode_location( char * str , float * val , int * dcode ) ; 214 215 void T3D_check_outliers(int) ; /* 15 Aug 2001 */ 216 217 static int INIT_ngray ; 218 static float INIT_gamma ; 219 static float INIT_fov ; 220 221 #endif /* _MCW_TO3D_HEADER_ */ 222