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 _AFNI_SETUP_HEADER_ 8 #define _AFNI_SETUP_HEADER_ 9 10 #include "mcw_malloc.h" 11 12 #define PAL_FIGNORE -9753.0 13 #define PAL_IIGNORE -1 14 #define MAX_PALABEL 16 15 16 #ifndef MCW_strncpy 17 #define MCW_strncpy(dest,src,n) \ 18 ( (void) strncpy( (dest) , (src) , (n)-1 ) , (dest)[(n)-1] = '\0' ) 19 #endif 20 21 #define SETUP_INIT_MODE 701 22 #define SETUP_LATER_MODE 703 23 #define SETUP_ENVIRON_MODE 707 24 25 /*-------------------------------------------------------------------------*/ 26 27 typedef struct { 28 int npane , mode ; 29 float val[NPANE_MAX+1] ; 30 int col[NPANE_MAX] ; 31 } PBAR_palette ; 32 33 typedef struct { 34 char label[32] ; 35 PBAR_palette * psgn[NPANE_MAX+1] ; 36 PBAR_palette * ppos[NPANE_MAX+1] ; 37 } PBAR_palette_array ; 38 39 #define INIT_PALARR(name,lab) \ 40 do{ int qp ; (name) = XtNew(PBAR_palette_array) ; \ 41 MCW_strncpy((name)->label,(lab),32) ; \ 42 for( qp=0 ; qp <= NPANE_MAX ; qp++ ) \ 43 (name)->psgn[qp] = (name)->ppos[qp] = NULL ; } while(0) 44 45 typedef struct { 46 int num , nall ; 47 PBAR_palette_array ** par ; 48 } PBAR_palette_table ; 49 50 #define INC_PALTAB 8 51 52 #define INIT_PALTAB(name) \ 53 ( (name) = XtNew(PBAR_palette_table) , \ 54 (name)->num = (name)->nall = 0 , \ 55 (name)->par = NULL ) 56 57 #define ADDTO_PALTAB(name,pp) \ 58 do { if( (name)->num == (name)->nall ){ \ 59 (name)->nall += INC_PALTAB ; \ 60 (name)->par = (PBAR_palette_array **) \ 61 XtRealloc( (char *) (name)->par , \ 62 sizeof(PBAR_palette_array *) * (name)->nall ) ; \ 63 } \ 64 if( (pp) != NULL ){ \ 65 (name)->par[(name)->num] = (pp) ; ((name)->num)++ ; \ 66 } } while(0) 67 68 #define PALTAB_NUM(name) ( (name)->num ) 69 #define PALTAB_ARR(name,qq) ( (name)->par[(qq)] ) 70 #define PALTAB_ARR_LABEL(name,qq) ( (name)->par[(qq)]->label ) 71 #define PALTAB_ARR_PSGN(name,qq,ww) ( (name)->par[(qq)]->psgn[(ww)] ) 72 #define PALTAB_ARR_PPOS(name,qq,ww) ( (name)->par[(qq)]->ppos[(ww)] ) 73 74 #ifdef __cplusplus 75 extern "C" { 76 #endif 77 78 extern int label_in_PALTAB( PBAR_palette_table * , char * ) ; 79 extern void AFNI_process_setup( char * , int , MCW_DC * ) ; 80 extern int check_PBAR_palette( PBAR_palette * ) ; 81 extern char * dump_PBAR_palette_table(int) ; 82 extern void AFNI_pbar_CB( Widget , XtPointer , XtPointer ) ; 83 extern void AFNI_pbar_EV( Widget , XtPointer , XEvent * , RwcBoolean * ) ; 84 extern char * AFNI_palette_label_CB( MCW_arrowval * , XtPointer ) ; 85 extern void AFNI_palette_av_CB( MCW_arrowval * , XtPointer ) ; 86 extern void load_PBAR_palette_array( MCW_pbar * , PBAR_palette_array * , int ) ; 87 extern void AFNI_finalize_read_palette_CB( Widget , XtPointer , XtPointer ) ; 88 extern void AFNI_set_pbar_top_CB( Widget, XtPointer , MCW_choose_cbs * ) ; 89 extern void AFNI_ignore_pbar_top(int) ; 90 extern void AFNI_finalize_write_palette_CB( Widget, XtPointer, MCW_choose_cbs * ); 91 extern void AFNI_finalize_saveim_CB( Widget, XtPointer, MCW_choose_cbs * ); 92 extern void AFNI_palette_tran_CB( MCW_arrowval * , XtPointer ) ; 93 94 extern void AFNI_thr_EV( Widget , XtPointer , XEvent * , RwcBoolean * ) ; 95 extern void AFNI_clu_CB( Widget , XtPointer , XtPointer ) ; 96 97 extern void AFNI_thronoff_change_CB( Widget, XtPointer, XtPointer ) ; 98 extern void AFNI_throlayx_change_CB( Widget, XtPointer, XtPointer ) ; 99 extern void AFNI_enforce_throlayx( Three_D_View * ) ; 100 101 extern void set_vedit_cluster_label( Three_D_View *, int ) ; /* 26 Mar 2007 */ 102 103 extern void AFNI_cluster_dispkill( Three_D_View *im3d ) ; 104 extern void AFNI_cluster_dispize( Three_D_View *im3d , int force ) ; 105 106 #define VEDIT_unhelpize(iq) \ 107 do{ MCW_unregister_help((iq)->vwid->func->options_label); \ 108 if( (iq)->vedlabel != NULL ){ free((iq)->vedlabel); (iq)->vedlabel=NULL; } \ 109 } while(0) 110 111 #define VEDIT_clear_label(iq) \ 112 do{ set_vedit_cluster_label(iq,0); VEDIT_unhelpize(iq); } while(0) 113 114 #define VEDIT_clust_label(iq) set_vedit_cluster_label(iq,1) 115 116 #define VEDIT_cluster_helpize(iq) \ 117 do{ char *hc = mri_clusterize_report(); VEDIT_unhelpize(iq) ; \ 118 if( hc != NULL ){ \ 119 (iq)->vedlabel = strdup(hc); \ 120 MCW_register_help((iq)->vwid->func->options_label,(iq)->vedlabel); \ 121 } \ 122 } while(0) 123 124 #ifdef __cplusplus 125 } 126 #endif 127 128 #endif 129