Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

plug_roiedit.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002    Major portions of this software are copyrighted by the Medical College
00003    of Wisconsin, 1994-2000, and are released under the Gnu General Public
00004    License, Version 2.  See the file README.Copyright for details.
00005 ******************************************************************************/
00006    
00007 /***********************************************************************
00008  * plug_roiedit.h               - see plug_roiedit.c v1.7
00009  ***********************************************************************
00010 */
00011 
00012 #define rWARNING( string ) fprintf( stderr, "\033[1m%s\033[0m\n", string )
00013 #define rERROR( string ) fprintf( stderr, "\007\033[2m%s\033[0m\n", string )
00014 
00015 #define R_BOUND_VAL    -250
00016 #define R_HL_BAD_VAL   -280
00017 #define R_BUTTON_SPACE    4
00018 #define R_DIST_STEP     0.1
00019 #define R_FILE_L        128
00020 
00021 #ifdef LINUX
00022 
00023 #define R_HOSTID_MASK   0xffff00ff
00024 #define R_HOSTID_VAL    0x6a8d006a
00025 
00026 #else
00027 
00028 #define R_HOSTID_MASK   0xffffff00
00029 #define R_HOSTID_VAL    0x8d6a6a00
00030 
00031 #endif
00032 
00033 typedef struct
00034 {
00035     int   x, y, z;
00036 } r_ipt_t;
00037 
00038 typedef struct
00039 {
00040     int * points;
00041     int   used;
00042     int   M;
00043 } points_t;
00044 
00045 typedef struct
00046 {
00047     Display * display;
00048 
00049     /* main widgets */
00050 
00051     Widget    main;
00052     Widget    mainForm;
00053 
00054     int       main_is_open;
00055 
00056     Widget    save_as_file_d;   /* dialog with save as info           */
00057 
00058     /* white/grey widgets */
00059 
00060     Widget    wtgr_main;        /* main white/grey widget */
00061     Widget    wtgr_mainRC;      /* main row/column widget */
00062 
00063     Widget    wt_diag_conn_w;   /* widget for diagonal connect level  */
00064     Widget    wt_fill_val_w;    /* widget for user fill value         */
00065     Widget    wt_min_nbrs_w;    /* widget for minimum neighbors value */
00066     Widget    wt_range_min_w;   /* minimum value in search range      */
00067     Widget    wt_range_max_w;   /* maximum value in search range      */
00068 
00069     Widget    gr_range_min_w;   /* minimum value in search range      */
00070     Widget    gr_range_max_w;   /* maximum value in search range      */
00071     Widget    gr_fill_val_w;    /* widget for user fill value         */
00072 
00073     XmStringCharSet charset;
00074 } r_X_s;
00075 
00076 typedef struct
00077 {
00078     /* general */
00079     int     point_value;        /* value at initial fill point */
00080     int     point_coord;        /* location of initial fill point */
00081     int     adjust_point;       /* boolean - should we adjust initial point */
00082 
00083     char    save_as_name[ R_FILE_L ];   /* string to save a copy as      */
00084 
00085 
00086     /* white matter filler info */
00087     int     wt_fill_val;                /* value to use in fill process  */
00088     int     wt_range_min;
00089     int     wt_range_max;
00090     int     wt_diag_connect;            /* level of diagonal connection */
00091 
00092     /* grey matter filler info */
00093     int     gr_fill_val;                /* value to use in fill process  */
00094     int     gr_range_min;
00095     int     gr_range_max;
00096 
00097     int     gr_max_dist;                /* max distance in grey search */
00098 
00099 
00100     /* afni */
00101     THD_3dim_dataset * anat;    /* background anatomy data for searching  */
00102     THD_3dim_dataset * func;    /* foreground functional data for display */
00103 
00104     short * adata;              /* pointer to anatomical background data */
00105     short * fdata;              /* pointer to functional foreground data */
00106     float   factor;
00107 
00108     int     nx, ny, nz;         /* dimensions of data */
00109     int     nxy;
00110     int     nvox;               /* total size of data */
00111 
00112 
00113     /* boundary stuff */
00114     points_t Bold;
00115     points_t Bnew;
00116     points_t border;
00117 
00118     short  * neighbors;
00119     short  * undo_data;         /* always contains previous image       */
00120 
00121     int      min_nbrs;
00122     int      strong_borders;
00123 } r_alg_s;
00124 
00125 typedef struct
00126 {
00127     Widget    main;             /* main application widget */
00128     Widget    mainRC;           /* main rowcolumn widget   */
00129 
00130     Widget    fillval_w;        /* widget holding integer  */
00131 
00132     int       fill_val;         /* value to fill with      */
00133     int       afni_undo;        /* flag denoting when afni is undoing a curve */
00134     points_t  A, B;             /* two point structures for interpolation */
00135 } interp_s;
00136 
00137 typedef struct
00138 {
00139     Widget   main;
00140     Widget   mainRC;
00141 
00142     Widget   fillval_w;
00143     Widget   maxsize_w;
00144 
00145     int      max_size;
00146     int      fill_val;
00147 
00148     points_t wtgr_edge;
00149     points_t gr_edge;
00150     points_t filled;
00151 } holes_s;
00152 
00153 typedef struct
00154 {
00155     points_t  plist;
00156     r_ipt_t   source;
00157     r_ipt_t   dest;
00158 
00159     int       cur_pt;           /* flag denoting first or second point */
00160 } r_pt_conn_s;
00161 
00162 
00163 r_X_s       gRX;                /* X structure for RCR                      */
00164 r_alg_s     gRA;                /* algorithm structure                      */
00165 interp_s    gRI;                /* interpolation structure (both X and alg) */
00166 holes_s     gRH;                /* hole filling structure  (both X and alg) */
00167 r_pt_conn_s gRCP;               /* point connection structure               */
00168 char        gRmessage[ 1024 ];  /* error messgae memory                     */
00169 
00170 
00171 static int      r_afni_set_fill_point    ( int *, r_alg_s * );
00172 static void     r_any_cb_apply           ( Widget, XtPointer, XtPointer );
00173 static void     r_any_cb_fill_stats      ( Widget, XtPointer, XtPointer );
00174 static void     r_any_cb_hide            ( Widget, char *, XtPointer );
00175 static void     r_any_cb_raise           ( Widget, char *, XtPointer );
00176 static void     r_any_cb_undo            ( Widget, XtPointer, XtPointer );
00177 static void     r_any_cb_unfill          ( Widget, XtPointer, XtPointer );
00178 static void     r_main_cb_help           ( Widget, XtPointer, XtPointer );
00179 static void     r_main_cb_quit           ( void );
00180 static void     r_main_cb_show_structs   ( void );
00181 static void     r_main_cb_saveas         ( Widget, int, XtPointer );
00182 static void     r_main_mk_main_shell     ( void );
00183 static void     r_main_mk_save_as_fr     ( Widget );
00184 static void     r_main_mk_show_buttons   ( void );
00185 static void     r_main_show_alg_vals     ( r_alg_s * );
00186 static void     r_main_show_HOL_vals     ( holes_s * );
00187 static void     r_main_show_INT_vals     ( interp_s * );
00188 static void     r_main_show_pt_conn_vals ( r_pt_conn_s * );
00189 
00190 static int      r_add_to_boundary        ( points_t *, int );
00191 static int      r_check_host             ( void );
00192 static void     r_histogram              ( r_alg_s *, int, int, int );
00193 static r_ipt_t  r_index2pt               ( int, int, int, int );
00194 static double   r_p_distance             ( r_ipt_t, r_ipt_t );
00195 static int      r_save_dataset_as        ( char *, int );
00196 
00197 static void     r_init_afni_vars         ( r_alg_s *, THD_3dim_dataset * );
00198 static int      r_init_Alg_values        ( r_alg_s * );
00199 static int      r_init_holes_vals        ( holes_s * );
00200 static int      r_init_interp_vals       ( interp_s * );
00201 static int      r_init_pt_conn_s         ( r_pt_conn_s * );
00202 
00203 static void     r_HL_cb_fill             ( Widget, XtPointer, XtPointer );
00204 static void     r_HL_cb_set_fill_val     ( Widget, XtPointer, XtPointer );
00205 static void     r_HL_cb_set_maxsize      ( Widget, XtPointer, XtPointer );
00206 static int      r_HL_check_neighbors     ( points_t *, int );
00207 static Widget   r_HL_mk_buttons          ( holes_s *, Widget );
00208 static Widget   r_HL_mk_fillval_fr       ( holes_s *, Widget );
00209 static void     r_HL_mk_main_shell       ( holes_s * );
00210 static Widget   r_HL_mk_maxsize_fr       ( holes_s *, Widget );
00211 
00212 static void     r_INT_cb_fill            ( Widget, XtPointer, XtPointer );
00213 static void     r_INT_cb_set_fill_val    ( Widget, XtPointer, XtPointer );
00214 static Widget   r_INT_mk_app_buttons     ( interp_s *, Widget );
00215 static Widget   r_INT_mk_fillval_fr      ( interp_s *, Widget );
00216 static void     r_INT_mk_main_shell      ( interp_s * );
00217 
00218 static void     r_gr_cb_fill             ( Widget, XtPointer, XtPointer );
00219 static void     r_gr_cb_set_max_dist     ( Widget, XtPointer, XtPointer );
00220 static void     r_gr_cb_set_range        ( Widget, XtPointer, XtPointer );
00221 static void     r_gr_set_fill_val        ( Widget, XtPointer, XtPointer );
00222 static int      r_gr_check_insert        ( r_alg_s *, points_t *, int );
00223 static Widget   r_gr_mk_fill_buttons     ( r_X_s *, Widget );
00224 static Widget   r_gr_mk_fillval_fr       ( r_X_s *, Widget );
00225 static Widget   r_gr_mk_main_frame       ( r_X_s *, Widget );
00226 static void     r_gr_mk_misc_buttons     ( r_X_s *, Widget );
00227 static Widget   r_gr_mk_max_dist_w       ( r_X_s *, Widget );
00228 static Widget   r_gr_mk_range_fr         ( r_X_s *, Widget );
00229 
00230 static int      r_wtgr_calc_max_frm_val  ( int value );
00231 static int      r_wtgr_calc_min_frm_val  ( int value );
00232 static void     r_wtgr_cb_suggest_limits ( Widget, XtPointer, XtPointer );
00233 static void     r_wtgr_mk_main_shell     ( r_X_s * );
00234  
00235 static int      r_wt_bad_ngbr_exists     ( r_alg_s *, int, int );
00236 static void     r_wt_cb_activate_SA      ( void );
00237 static void     r_wt_cb_fill             ( Widget, XtPointer, XtPointer );
00238 static void     r_wt_cb_SB_toggle        ( Widget, XtPointer, XtPointer );
00239 static void     r_wt_cb_set_diag_conn    ( Widget, XtPointer, XtPointer );
00240 static void     r_wt_cb_set_fill_val     ( Widget, XtPointer, XtPointer );
00241 static void     r_wt_cb_set_min_nbrs     ( Widget, XtPointer, XtPointer );
00242 static void     r_wt_cb_set_range        ( Widget, XtPointer, XtPointer );
00243 static int      r_wt_check_insert        ( r_alg_s *, int );
00244 static Widget   r_wt_mk_diag_conn_fr     ( r_X_s *, Widget );
00245 static void     r_wt_mk_fill_buttons     ( r_X_s *, Widget );
00246 static Widget   r_wt_mk_fillval_fr       ( r_X_s *, Widget );
00247 static Widget   r_wt_mk_main_frame       ( r_X_s *, Widget );
00248 static void     r_wt_mk_misc_buttons     ( r_X_s *, Widget );
00249 static Widget   r_wt_mk_nbrs_fr          ( r_X_s *, Widget );
00250 static Widget   r_wt_mk_range_fr         ( r_X_s *, Widget );
00251 static Widget   r_wt_mk_strong_bord_fr   ( r_X_s *, Widget );
00252 static void     r_wt_set_neighbors       ( r_alg_s * );
00253 
00254 static Widget   r_mk_scale_bar           ( Widget, char *, int, int,
00255                                           int, int, XtCallbackProc );
00256 
00257 static void r_junk (void);
00258 
00259 
00260 /*-----------------  for logging of messages  ---------------------------*/
00261 /*#define R_LOG_INFO_D*/
00262 #ifdef R_LOG_INFO_D
00263 
00264 
00265 #define R_LOG_FILE      "/var/tmp/.rickr.log.GF"
00266 
00267 #define R_LOG( string ) fprintf( stderr, "\007\033[2m%s\033[0m\n", string )
00268 
00269 
00270 FILE * gr_logfile
00271 
00272 
00273 static int      r_open_log_file         ( void );
00274 
00275 #endif
 

Powered by Plone

This site conforms to the following standards: