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