1 #ifndef _THD_ATLAS_H_ 2 #define _THD_ATLAS_H_ 3 4 #include "thd_ttatlas_query.h" 5 #undef DEBUG_SPACES 6 /* continuous colormap */ 7 #define CONT_CMAP 0 8 /* integer colormap */ 9 #define INT_CMAP 1 10 /* sparse integer colormap */ 11 #define SPARSE_CMAP 2 12 13 /* continuous colormap */ 14 #define CONT_CMAP 0 15 /* integer colormap */ 16 #define INT_CMAP 1 17 /* sparse integer colormap */ 18 #define SPARSE_CMAP 2 19 20 #define MAXINT 65535 21 #define MAX_WAMI_LINE_CHARS 80 22 23 #define LINKRBRAIN_SITE "linkrbrain.eu" /* 16 Oct 2015 */ 24 extern char * get_linkrbrain_site(void) ; 25 26 void free_atlas_point_list(ATLAS_POINT_LIST *apl); 27 void print_atlas_point_list(ATLAS_POINT_LIST *apl); 28 ATLAS_POINT_LIST * niml_atlas_label_table_to_atlas_list(NI_group *ngr); 29 ATLAS_POINT_LIST *dset_niml_to_atlas_list(THD_3dim_dataset *dset); 30 int dset_atlas_label_index(THD_3dim_dataset *dset, char *label); 31 32 ATLAS_POINT_LIST *label_table_to_atlas_point_list(Dtable *dtbl); 33 int whereami_9yards( ATLAS_COORD ac, ATLAS_QUERY **wamip, 34 ATLAS_LIST *atlas_alist); 35 void init_custom_atlas(void); 36 const char *Space_Code_to_Space_Name (AFNI_STD_SPACES cod); 37 AFNI_STD_SPACES Space_Name_to_Space_Code(char *nm); 38 const char *Atlas_Code_to_Atlas_Space_Name (AFNI_ATLAS_CODES cod); 39 const char *Atlas_Code_to_Atlas_Dset_Name (AFNI_ATLAS_CODES cod); 40 AFNI_ATLAS_CODES Atlas_Dset_Name_to_Atlas_Code(char *dset_name); 41 char *Atlas_Name(ATLAS *atl); 42 int is_Atlas_Named(ATLAS *atl, char *name); 43 int is_Coord_Space_Named(ATLAS_COORD ac, char *name); 44 int set_Coord_Space_Name(ATLAS_COORD *ac, char *name); 45 int init_global_atlas_from_niml_files(void); 46 ATLAS_LIST *create_atlas_list(void); 47 ATLAS_XFORM_LIST *report_xform_chain(char *src, char *dest, int report); 48 int is_known_coord_space(char *space_name); 49 void print_atlas_coord (ATLAS_COORD ac); 50 int show_wrapping_line(char * str, char * prefix, int indent, FILE * fp); 51 52 int init_space_structs(ATLAS_XFORM_LIST **atlas_xfl, 53 ATLAS_LIST **atlas_alist, 54 ATLAS_SPACE_LIST **atlas_spaces, 55 ATLAS_TEMPLATE_LIST **atlas_templates); 56 int read_space_niml_file(char *fname, ATLAS_XFORM_LIST *atlas_xfl, 57 ATLAS_LIST *atlas_alist, 58 ATLAS_SPACE_LIST *atlas_spaces, 59 ATLAS_TEMPLATE_LIST *atlas_template, THD_string_array *sar); 60 int add_atlas_nel(NI_element *nel, ATLAS_XFORM_LIST *atlas_xfl, 61 ATLAS_LIST *atlas_alist, 62 ATLAS_SPACE_LIST *atlas_spaces, 63 ATLAS_TEMPLATE_LIST *atlas_templates, 64 THD_string_array *sar, 65 char *parentdir); 66 int atlas_read_xform(NI_element *nel, ATLAS_XFORM *atlas_xf); 67 int atlas_read_template(NI_element *nel, ATLAS_TEMPLATE *atlas_tpl); 68 int atlas_read_atlas(NI_element *nel, ATLAS *atlas, char *pd); 69 int atlas_read_atlas_space(NI_element *nel, ATLAS_SPACE *at_space); 70 int make_space_neighborhood(ATLAS_SPACE_LIST *at_spl, ATLAS_XFORM_LIST *atlas_xfl); 71 ATLAS_XFORM *get_xform_neighbor(ATLAS_XFORM_LIST *atlas_xfl, ATLAS_SPACE *at_space, 72 ATLAS_SPACE *dest_space, int *inv_xf); 73 ATLAS_XFORM_LIST * 74 pathlist_to_xform_list(int *nPath, int N_n, ATLAS_XFORM_LIST *atlas_xfl, 75 ATLAS_SPACE_LIST *at_spl); 76 int copy_xform(ATLAS_XFORM *src_xform, ATLAS_XFORM *dest_xform); 77 ATLAS_XFORM_LIST * 78 get_xform_chain(ATLAS_SPACE *at_space, ATLAS_SPACE *dest_space); 79 80 ATLAS_XFORM_LIST *read_space_xforms(NI_stream space_niml); 81 ATLAS_XFORM_LIST *calc_xform_list(ATLAS_XFORM_LIST *xfl); 82 int find_atlas_space_index(char *spacename); 83 void report_available_spaces(char *src); 84 ATLAS_SPACE_LIST *find_available_spaces(char *src_space_name, 85 ATLAS_SPACE_LIST *this_list); 86 char * THD_get_generic_space(THD_3dim_dataset *dset); 87 char * THD_get_view_space(THD_3dim_dataset *dset); 88 89 void free_global_atlas_structs(void); 90 91 void free_xform_list(ATLAS_XFORM_LIST *xfl); 92 void free_xform(ATLAS_XFORM *xf); 93 void free_space_list(ATLAS_SPACE_LIST *xsl); 94 void free_space(ATLAS_SPACE *xs); 95 void free_template_list(ATLAS_TEMPLATE_LIST *xtl); 96 void free_template(ATLAS_TEMPLATE *xt); 97 void free_atlas_list(ATLAS_LIST *xal); 98 void free_atlas(ATLAS *xa); 99 int is_identity_xform_chain(char *src, char *dest); 100 int is_identity_xform_list(ATLAS_XFORM_LIST *xfl, int combine); 101 void print_xform_chain(char *src, char *dest); 102 void print_xform_list(ATLAS_XFORM_LIST *xfl); 103 void print_space_list(ATLAS_SPACE_LIST *xsl); 104 void print_atlas_list(ATLAS_LIST *xal); 105 void print_atlas_table(ATLAS_LIST *xal); 106 void print_atlas(ATLAS *xa, int level) ; 107 void print_atlas_comment(ATLAS *xa) ; 108 void print_atlas_type(ATLAS *xa) ; 109 void print_atlas_supp_web_info(ATLAS *xa); 110 void print_atlas_orient(ATLAS *xa) ; 111 void print_point_lists(ATLAS_LIST *xal); 112 void print_template_list(ATLAS_TEMPLATE_LIST *xtl); 113 void print_xform(ATLAS_XFORM *xf); 114 void print_all_xforms(ATLAS_XFORM_LIST *xfl); 115 void print_affine_xform_data(float *xfptr); 116 void print_atlas_dset(ATLAS_LIST *xal, char *atlasname); 117 char * find_atlas_dset(ATLAS_LIST *xal, char *atlasname); 118 119 ATLAS_POINT *atlas_point_named(ATLAS_POINT_LIST *apl, char *name); 120 char *atlas_point_long_name_named(ATLAS_POINT_LIST *apl, char *name); 121 122 ATLAS_XFORM *calc_xf(ATLAS_XFORM *xf, ATLAS_XFORM *xf2); 123 int affine_mult(ATLAS_XFORM *xf, ATLAS_XFORM *xf2, ATLAS_XFORM *xf3); 124 int affine_2piece_mult(ATLAS_XFORM *xf, 125 ATLAS_XFORM *xf2, ATLAS_XFORM *xf3, int dir); 126 int affine_12piece_mult(ATLAS_XFORM *xf, 127 ATLAS_XFORM *xf2, ATLAS_XFORM *xf3, int dir); 128 int x2piece_2piece_mult(ATLAS_XFORM *xf, 129 ATLAS_XFORM *xf2, ATLAS_XFORM *xf3); 130 int x2piece_12piece_mult(ATLAS_XFORM *xf, 131 ATLAS_XFORM *xf2, ATLAS_XFORM *xf3, int dir); 132 int x12piece_12piece_mult(ATLAS_XFORM *xf, 133 ATLAS_XFORM *xf2, ATLAS_XFORM *xf3); 134 135 int invert_xform(ATLAS_XFORM *xf); 136 int invert_affine(ATLAS_XFORM *xf); 137 int invert_12piece(ATLAS_XFORM *xf); 138 int invert_2piece(ATLAS_XFORM *xf); 139 int invert_brett(ATLAS_XFORM *xf); 140 141 ATLAS_XFORM *identity_xform(void); 142 143 int find_atlas_space(ATLAS_SPACE_LIST *at_spl, ATLAS_SPACE *at_space); 144 int apply_xform_chain(ATLAS_XFORM_LIST *xfl, float x, float y, float z, 145 float *xout, float *yout, float *zout); 146 147 int apply_xform_affine(ATLAS_XFORM *xf, float x, float y, float z, \ 148 float *xout, float *yout, float *zout); 149 int apply_xform_2piece(ATLAS_XFORM *xf, float x, float y, float z, \ 150 float *xout, float *yout, float *zout); 151 int apply_xform_12piece(ATLAS_XFORM *xf, float x, float y, float z, \ 152 float *xout, float *yout, float *zout); 153 int apply_xform_brett_tt2mni(float x, float y, float z, \ 154 float *xout, float *yout, float *zout); 155 int apply_xform_brett_mni2tt(float x, float y, float z, \ 156 float *xout, float *yout, float *zout); 157 158 NI_element *NI_find_next_element(NI_stream ns, char *name); 159 160 void AFNI_atlas_list_to_niml(void); 161 void atlas_list_to_niml(ATLAS_POINT_LIST *atp, char *atlas_file); 162 NI_element *atlas_point_to_niml_element(ATLAS_POINT *at_pt); 163 char *atlas_point_to_niml_string(ATLAS_POINT *at_pt); 164 int atlas_dup_atlas(ATLAS *srcatlas, ATLAS *destatlas); 165 int atlas_max_label_length(ATLAS_POINT *ap, int n_points); 166 int atlas_level(ATLAS_POINT *ap, int n_points); 167 168 char *get_jump_space(void); 169 void set_jump_space(char *spacename); 170 171 #endif 172