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_WARP_HEADER_
8 #define _AFNI_WARP_HEADER_
9 
10 #include "mrilib.h"
11 
12 #ifdef  __cplusplus
13 extern "C" {
14 #endif
15 
16 /** external routine for freeing memory in THD_load_datablock **/
17 
18 extern MRI_IMAGE * AFNI_dataset_slice( THD_3dim_dataset * , int,int,int,int ) ;
19 extern MRI_IMAGE * FD_warp_to_mri( int,int , FD_brick * ) ;
20 extern void AFNI_set_ignore_vedit( int ) ; /* 28 Jan 2008 */
21 
22 extern MRI_IMAGE * AFNI_dataset_displayim( THD_3dim_dataset *dset , int ival ) ;
23 
24 extern MRI_IMAGE * AFNI_slice_flip(int,int,int,int,int,int, THD_3dim_dataset *);
25 
26 /***********************************************************************/
27 /*  Prototypes for the template routines in afni_slice.c               */
28 
29 /* macro to test data type for OK-ness with slicing and dicing routines */
30 
31 #define AFNI_GOOD_DTYPE(dt) ((dt)==MRI_short || (dt)==MRI_float   || \
32                              (dt)==MRI_byte  || (dt)==MRI_complex || \
33                              (dt)==MRI_rgb   || (dt)==MRI_double      )
34 
35 /* macro to test data type for OK-ness with functional processing routines */
36 
37 #define AFNI_GOOD_FUNC_DTYPE(dt) ((dt)==MRI_short || (dt)==MRI_rgb  || \
38                                   (dt)==MRI_float || (dt)==MRI_byte || \
39                                   (dt)==MRI_double )
40 
41 /*---------------------------------------------------------------------*/
42 /* There should be one set of routines for each legal datum type above */
43 /*---------------------------------------------------------------------*/
44 #undef  WTYPE
45 #undef  LMAP_XNAME
46 #undef  LMAP_YNAME
47 #undef  LMAP_ZNAME
48 #undef  B2SL_NAME
49 #define WTYPE short
50 #define LMAP_XNAME TWO_TWO(AFNI_lmap_to_xslice_,WTYPE)
51 #define LMAP_YNAME TWO_TWO(AFNI_lmap_to_yslice_,WTYPE)
52 #define LMAP_ZNAME TWO_TWO(AFNI_lmap_to_zslice_,WTYPE)
53 #define B2SL_NAME  TWO_TWO(AFNI_br2sl_,WTYPE)
54 
55 extern void LMAP_XNAME( THD_linear_mapping * , int ,
56                         THD_dataxes * , WTYPE * ,
57                         THD_dataxes * new_daxes , int , WTYPE * ) ;
58 
59 extern void LMAP_YNAME( THD_linear_mapping * , int ,
60                         THD_dataxes * , WTYPE * ,
61                         THD_dataxes * new_daxes , int , WTYPE * ) ;
62 
63 extern void LMAP_ZNAME( THD_linear_mapping * , int ,
64                         THD_dataxes * , WTYPE * ,
65                         THD_dataxes * new_daxes , int , WTYPE * ) ;
66 
67 extern void B2SL_NAME( int nxx, int nyy, int nzz ,
68                        int fixed_axis , int fixed_index ,
69                        WTYPE * bold , WTYPE * bslice ) ;
70 /*------------------------------------------------------------------*/
71 #undef  WTYPE
72 #undef  LMAP_XNAME
73 #undef  LMAP_YNAME
74 #undef  LMAP_ZNAME
75 #undef  B2SL_NAME
76 #define WTYPE float
77 #define LMAP_XNAME TWO_TWO(AFNI_lmap_to_xslice_,WTYPE)
78 #define LMAP_YNAME TWO_TWO(AFNI_lmap_to_yslice_,WTYPE)
79 #define LMAP_ZNAME TWO_TWO(AFNI_lmap_to_zslice_,WTYPE)
80 #define B2SL_NAME  TWO_TWO(AFNI_br2sl_,WTYPE)
81 
82 extern void LMAP_XNAME( THD_linear_mapping * , int ,
83                         THD_dataxes * , WTYPE * ,
84                         THD_dataxes * new_daxes , int , WTYPE * ) ;
85 
86 extern void LMAP_YNAME( THD_linear_mapping * , int ,
87                         THD_dataxes * , WTYPE * ,
88                         THD_dataxes * new_daxes , int , WTYPE * ) ;
89 
90 extern void LMAP_ZNAME( THD_linear_mapping * , int ,
91                         THD_dataxes * , WTYPE * ,
92                         THD_dataxes * new_daxes , int , WTYPE * ) ;
93 
94 extern void B2SL_NAME( int nxx, int nyy, int nzz ,
95                        int fixed_axis , int fixed_index ,
96                        WTYPE * bold , WTYPE * bslice ) ;
97 /*---------------------------------------------------------------------*/
98 #undef  WTYPE
99 #undef  LMAP_XNAME
100 #undef  LMAP_YNAME
101 #undef  LMAP_ZNAME
102 #undef  B2SL_NAME
103 #define WTYPE byte
104 #define LMAP_XNAME TWO_TWO(AFNI_lmap_to_xslice_,WTYPE)
105 #define LMAP_YNAME TWO_TWO(AFNI_lmap_to_yslice_,WTYPE)
106 #define LMAP_ZNAME TWO_TWO(AFNI_lmap_to_zslice_,WTYPE)
107 #define B2SL_NAME  TWO_TWO(AFNI_br2sl_,WTYPE)
108 
109 extern void LMAP_XNAME( THD_linear_mapping * , int ,
110                         THD_dataxes * , WTYPE * ,
111                         THD_dataxes * new_daxes , int , WTYPE * ) ;
112 
113 extern void LMAP_YNAME( THD_linear_mapping * , int ,
114                         THD_dataxes * , WTYPE * ,
115                         THD_dataxes * new_daxes , int , WTYPE * ) ;
116 
117 extern void LMAP_ZNAME( THD_linear_mapping * , int ,
118                         THD_dataxes * , WTYPE * ,
119                         THD_dataxes * new_daxes , int , WTYPE * ) ;
120 
121 extern void B2SL_NAME( int nxx, int nyy, int nzz ,
122                        int fixed_axis , int fixed_index ,
123                        WTYPE * bold , WTYPE * bslice ) ;
124 /*---------------------------------------------------------------------*/
125 #undef  WTYPE
126 #undef  LMAP_XNAME
127 #undef  LMAP_YNAME
128 #undef  LMAP_ZNAME
129 #undef  B2SL_NAME
130 #define WTYPE complex
131 #define LMAP_XNAME TWO_TWO(AFNI_lmap_to_xslice_,WTYPE)
132 #define LMAP_YNAME TWO_TWO(AFNI_lmap_to_yslice_,WTYPE)
133 #define LMAP_ZNAME TWO_TWO(AFNI_lmap_to_zslice_,WTYPE)
134 #define B2SL_NAME  TWO_TWO(AFNI_br2sl_,WTYPE)
135 
136 extern void LMAP_XNAME( THD_linear_mapping * , int ,
137                         THD_dataxes * , WTYPE * ,
138                         THD_dataxes * new_daxes , int , WTYPE * ) ;
139 
140 extern void LMAP_YNAME( THD_linear_mapping * , int ,
141                         THD_dataxes * , WTYPE * ,
142                         THD_dataxes * new_daxes , int , WTYPE * ) ;
143 
144 extern void LMAP_ZNAME( THD_linear_mapping * , int ,
145                         THD_dataxes * , WTYPE * ,
146                         THD_dataxes * new_daxes , int , WTYPE * ) ;
147 
148 extern void B2SL_NAME( int nxx, int nyy, int nzz ,
149                        int fixed_axis , int fixed_index ,
150                        WTYPE * bold , WTYPE * bslice ) ;
151 /*---------------------------------------------------------------------*/
152 #undef  WTYPE
153 #undef  LMAP_XNAME
154 #undef  LMAP_YNAME
155 #undef  LMAP_ZNAME
156 #undef  B2SL_NAME
157 #define WTYPE rgbyte
158 #define LMAP_XNAME TWO_TWO(AFNI_lmap_to_xslice_,WTYPE)
159 #define LMAP_YNAME TWO_TWO(AFNI_lmap_to_yslice_,WTYPE)
160 #define LMAP_ZNAME TWO_TWO(AFNI_lmap_to_zslice_,WTYPE)
161 #define B2SL_NAME  TWO_TWO(AFNI_br2sl_,WTYPE)
162 
163 extern void LMAP_XNAME( THD_linear_mapping * , int ,
164                         THD_dataxes * , WTYPE * ,
165                         THD_dataxes * new_daxes , int , WTYPE * ) ;
166 
167 extern void LMAP_YNAME( THD_linear_mapping * , int ,
168                         THD_dataxes * , WTYPE * ,
169                         THD_dataxes * new_daxes , int , WTYPE * ) ;
170 
171 extern void LMAP_ZNAME( THD_linear_mapping * , int ,
172                         THD_dataxes * , WTYPE * ,
173                         THD_dataxes * new_daxes , int , WTYPE * ) ;
174 
175 extern void B2SL_NAME( int nxx, int nyy, int nzz ,
176                        int fixed_axis , int fixed_index ,
177                        WTYPE * bold , WTYPE * bslice ) ;
178 /*------------------------------------------------------------------*/
179 #undef  WTYPE
180 #undef  LMAP_XNAME
181 #undef  LMAP_YNAME
182 #undef  LMAP_ZNAME
183 #undef  B2SL_NAME
184 /********************************************************************/
185 
186 #ifdef  __cplusplus
187 }
188 #endif
189 
190 #endif /* _AFNI_WARP_HEADER_ */
191