1 #ifndef SUMA_COLOR_INCLUDED 2 #define SUMA_COLOR_INCLUDED 3 4 #define SUMA_DUNNO_GRAY 0.54321 5 /* Bitmasks for per_sv_extra */ 6 #define PSV_NOTHING 0 7 #define PSV_BIND_VOL 1 8 9 byte SUMA_Val_Meets_Thresh(float val, double *ThreshRange, 10 SUMA_THRESH_MODE ThrMode); 11 int SUMA_a_good_col(char *name, int i, float *acol); 12 SUMA_COLOR_MAP *SUMA_LabelsKeys2Cmap (char **str, int num, int *keys, 13 float **cols, int nc, char *Name); 14 SUMA_COLOR_MAP * SUMA_MakeColorMap (float **Fiducials, int Nfid, byte rgba, 15 int Ncols, SUMA_Boolean SkipLast, 16 char *Name); 17 void SUMA_Free_ColorMap (SUMA_COLOR_MAP* SM); 18 SUMA_COLOR_MAP* SUMA_DuplicateColorMap (SUMA_COLOR_MAP *cin, char *newname); 19 SUMA_SCALE_TO_MAP_OPT * SUMA_ScaleToMapOptInit(void); 20 void SUMA_Free_ColorScaledVect (SUMA_COLOR_SCALED_VECT * S); 21 SUMA_COLOR_SCALED_VECT * SUMA_Create_ColorScaledVect(int N_Node, int mode); 22 SUMA_Boolean SUMA_ScaleToMap (float *V, int N_V, float Vmin, float Vmax, 23 SUMA_COLOR_MAP *ColMap, SUMA_SCALE_TO_MAP_OPT *Opt, 24 SUMA_COLOR_SCALED_VECT * SV); 25 SUMA_COLOR_MAP * SUMA_MakeStandardMap (char *mapname); 26 SUMA_COLOR_MAP *SUMA_FindNamedColMap(char *Name); 27 SUMA_COLOR_MAP *SUMA_FindCodedColMap(int imap); 28 float * SUMA_PercRange (float *V, float *Vsort, int N_V, 29 float *PercRange, float *PercRangeVal, int *iPercRange); 30 double * SUMA_dPercRange ( double *V, double *Vsort, int N_V, 31 double *PercRange, double *PercRangeVal, 32 int *iPercRangeVal); 33 float * SUMA_PercRangeVol (float *V, byte *mask, int N_V, 34 float *PercRange, int N_PercRange, 35 float *PercRangeVal, int *iPercRangeVal, 36 int exzero, int *N_Vmsort); 37 float *SUMA_PercFullRangeVol(float *V, int N_V, int p10, int exzero, int *Nvals); 38 float SUMA_OverlayPercentile (SUMA_OVERLAYS *Sover, char vec, float perc); 39 SUMA_COLOR_MAP* SUMA_MakeColorMap_v2 ( float **Fiducials, int Nfid, byte rgba, 40 int *Nint, SUMA_Boolean SkipLast, 41 char *Name); 42 SUMA_OVERLAYS * SUMA_CreateOverlayPointer (const char *Name, SUMA_DSET *dset, 43 char *owner_id, SUMA_OVERLAYS *Recycle); 44 SUMA_Boolean SUMA_FreeOverlayPointerRecyclables (SUMA_OVERLAYS * Sover); 45 void SUMA_KillOverlayContours(SUMA_OVERLAYS * Sover); 46 SUMA_Boolean SUMA_FreeOverlayPointer (SUMA_OVERLAYS * Sover); 47 SUMA_Boolean SUMA_Overlays_2_GLCOLAR4(SUMA_ALL_DO *ADO, 48 SUMA_SurfaceViewer *sv, GLfloat *glcolar); 49 SUMA_Boolean SUMA_Overlays_2_GLCOLAR4_SO(SUMA_SurfaceObject *SO, 50 SUMA_SurfaceViewer *SV, GLfloat *glcolar); 51 SUMA_OVERLAYS * SUMA_Fetch_OverlayPointerByDset(SUMA_ALL_DO *ado, 52 SUMA_DSET *dset, int * OverInd); 53 SUMA_OVERLAYS * SUMA_Fetch_OverlayPointerByDset_arr (SUMA_OVERLAYS **Overlays, 54 int N_Overlays, SUMA_DSET *dset, int * OverInd); 55 SUMA_OVERLAYS * SUMA_Fetch_OverlayPointer (SUMA_ALL_DO *ado, 56 const char * Name, int * OverInd); 57 SUMA_OVERLAYS * SUMA_Fetch_OverlayPointer_arr (SUMA_OVERLAYS **Overlays, 58 int N_Overlays, const char * Name, int * OverInd); 59 SUMA_Boolean SUMA_Show_ColorOverlayPlanes (SUMA_OVERLAYS **Overlays, 60 int N_Overlays, int detail); 61 char *SUMA_ColorOverlayPlane_Info (SUMA_OVERLAYS **Overlays, int N_Overlays, 62 int detail); 63 SUMA_Boolean SUMA_MixOverlays (SUMA_OVERLAYS ** Overlays, int N_Overlays, 64 int *ShowOvelays, int N_ShowOverlays, 65 GLfloat *glcolar, int N_Node, 66 SUMA_Boolean *isColored, SUMA_Boolean FILL); 67 SUMA_Boolean SUMA_MixColors (SUMA_SurfaceViewer *sv); 68 SUMA_Boolean SUMA_iRGB_to_OverlayPointer (SUMA_ALL_DO *ado, 69 char *Name, SUMA_OVERLAY_PLANE_DATA *sopd, 70 int *PlaneInd, SUMA_DO *dov, int N_dov, 71 DList *DsetList); 72 SUMA_Boolean SUMA_iRGB_to_SO_OverlayPointer (SUMA_SurfaceObject *SO, char *Name, 73 SUMA_OVERLAY_PLANE_DATA *sopd, 74 int *PlaneInd, SUMA_DO *dov, 75 int N_dov, DList *DsetList); 76 SUMA_Boolean SUMA_iRGB_to_TDO_OverlayPointer (SUMA_TractDO *TDO, char *Name, 77 SUMA_OVERLAY_PLANE_DATA *sopd, 78 int *PlaneInd, SUMA_DO *dov, 79 int N_dov, DList *DsetList); 80 SUMA_Boolean SUMA_CompactOverlaysOrder (SUMA_SurfaceObject *SO); 81 void SUMA_FreeOverlayListDatum (void *OLDv); 82 SUMA_Boolean SUMA_AddNewPlane (SUMA_ALL_DO *ado, SUMA_OVERLAYS *Overlay, 83 SUMA_DO *dov, int N_dov, int DupFlag); 84 SUMA_Boolean SUMA_isOverlayOfDO (SUMA_ALL_DO *ado, SUMA_OVERLAYS *Plane); 85 SUMA_ALL_DO *SUMA_Overlay_OwnerADO(SUMA_OVERLAYS *Over); 86 int SUMA_GetSmallestForegroundOrder (DList *listop); 87 int SUMA_GetLargestBackroundOrder (DList *listop); 88 DList * SUMA_OverlaysToOrderedList (SUMA_ALL_DO *ado, int Opt); 89 SUMA_Boolean SUMA_ReleaseOverlay (SUMA_OVERLAYS * Overlays, 90 SUMA_INODE *Overlays_Inode); 91 SUMA_Boolean SUMA_ElementarizeOverlay(SUMA_OVERLAYS *iOver, float **ColEVec, 92 int **NodeEDef, int *N_NodeEDef, 93 float **LocalEOpacity); 94 char * SUMA_PlaneOrder_Info(SUMA_ALL_DO *ado); 95 void SUMA_Print_PlaneOrder (SUMA_ALL_DO *ado, FILE *Out); 96 SUMA_Boolean SUMA_ListOrderToPlaneOrder (DList *listop); 97 SUMA_Boolean SUMA_MovePlaneUp (SUMA_ALL_DO *ado, char *Name); 98 SUMA_Boolean SUMA_MovePlaneDown (SUMA_ALL_DO *ado, char *Name); 99 SUMA_OVERLAYS * SUMA_NewPlaneSearch(SUMA_ALL_DO *ado, 100 SUMA_OVERLAYS *Overlay); 101 SUMA_Boolean SUMA_LoadCIFTIDO (char *fname, 102 SUMA_DO_CoordUnits coord_type, SUMA_DSET **odset, 103 int OkAdopt, int SetupOverlay, int LaunchDisplay, 104 int MakeOverlayCurrent, SUMA_OVERLAYS **used_over); 105 SUMA_CIFTI_DO * SUMA_CIFTI_DO_from_dset(SUMA_DSET *cdset); 106 char *SUMA_CIFTI_find_sub_domain(SUMA_CIFTI_DO *CO, SUMA_DO_Types ModelType, 107 SUMA_SO_SIDE ModelSide, 108 int Max_N_Data, 109 int *k); 110 SUMA_CIFTI_DO *SUMA_CIFTI_find_matching_domain(SUMA_DSET *cdset, 111 SUMA_DO *dov, int N_dov); 112 SUMA_CIFTI_DO *SUMA_find_CIFTI_subdom_container(char *SD_id, int *ksubdom, 113 SUMA_DO *dov, int N_dov); 114 SUMA_ALL_DO *SUMA_CIFTI_subdom_ado(SUMA_CIFTI_DO *CO, int ksub); 115 int SUMA_CIFTI_SubDomFullOffset(SUMA_CIFTI_DO *CO, int ksub); 116 void SUMA_LoadDsetOntoSO (char *filename, void *data); 117 SUMA_Boolean SUMA_LoadDsetOntoSO_eng (char *filename, SUMA_SurfaceObject *SO, 118 int SetupOverlay, int MakeOverlayCurrent, 119 int LaunchDisplay, 120 SUMA_OVERLAYS **used_over); 121 void SUMA_LoadColorPlaneFile (char *filename, void *data); 122 SUMA_Boolean SUMA_PreserveOverlaySettings(SUMA_OVERLAYS *colplanepre, 123 SUMA_OVERLAYS *NewColPlane); 124 SUMA_ASSEMBLE_LIST_STRUCT * SUMA_AssembleColorPlaneList (SUMA_ALL_DO *ado); 125 void SUMA_RefreshDsetList (SUMA_ALL_DO *ado); 126 SUMA_Boolean SUMA_FlushPlaneNotInUse (char *PlaneName, SUMA_ALL_DO *ado, 127 SUMA_DO *dov, int N_dov); 128 char *SUMA_CmapModeName (SUMA_COLORMAP_INTERP_MODE mapmode); 129 int SUMA_StandardMapIndex (char *Name); 130 char *SUMA_StandardMapName (int mapindex, int *N_col); 131 SUMA_Boolean SUMA_NeedsLinearizing(SUMA_COLOR_MAP *ColMap); 132 SUMA_COLOR_MAP *SUMA_Linearize_Color_Map (SUMA_COLOR_MAP* SM, int N_lin); 133 SUMA_COLOR_MAP *SUMA_Read_Color_Map_1D (char *Name); 134 SUMA_COLOR_MAP *SUMA_Read_Color_Map_NIML (char *Name); 135 SUMA_Boolean SUMA_Write_Color_Map_1D (SUMA_COLOR_MAP* SM, char *Name); 136 SUMA_Boolean SUMA_Write_Color_Map_NIML (SUMA_COLOR_MAP* SM, char *Name); 137 SUMA_Boolean SUMA_ScaleToMap_alaAFNI ( float *V, int N_V, 138 float range, SUMA_COLOR_MAP *ColMap, 139 SUMA_SCALE_TO_MAP_OPT *Opt, 140 SUMA_COLOR_SCALED_VECT * SV); 141 SUMA_Boolean SUMA_ScaleToMap_alaHASH ( float *V, int N_V, 142 SUMA_COLOR_MAP *ColMap, 143 SUMA_SCALE_TO_MAP_OPT *Opt, 144 SUMA_COLOR_SCALED_VECT * SV); 145 SUMA_Boolean SUMA_ScaleToMap_Interactive ( SUMA_OVERLAYS *Sover ); 146 SUMA_Boolean SUMA_DSET_ClearOverlay_Vecs(SUMA_DSET *dset); 147 SUMA_Boolean SUMA_SetOverlay_Vecs(SUMA_OVERLAYS *Sover, char vec, 148 int colind, char *task, int perc); 149 SUMA_AFNI_COLORS * SUMA_Get_AFNI_Default_Color_Maps (); 150 SUMA_COLOR_MAP ** SUMA_Add_ColorMap (SUMA_COLOR_MAP *CM, 151 SUMA_COLOR_MAP **OldCMv, int *N_maps); 152 SUMA_RGB_NAME * SUMA_Add_Color (char *Name, float r, float g, float b, float a, SUMA_RGB_NAME *oCv, int *N_cols); 153 char *SUMA_ColorMapVec_Info (SUMA_COLOR_MAP **CMv, int N_maps, int detail); 154 char *SUMA_ColorVec_Info (SUMA_RGB_NAME *Cv, int N_cols); 155 void SUMA_Show_ColorMapVec (SUMA_COLOR_MAP **CMv, int N_maps, FILE *Out, int detail); 156 void SUMA_Show_ColorVec (SUMA_RGB_NAME *CMv, int N_maps, FILE *Out); 157 int SUMA_Find_ColorMap ( char *Name, SUMA_COLOR_MAP **CMv, int N_maps, int sgn); 158 int SUMA_Find_Color ( char *Name, SUMA_RGB_NAME *Cv, int N_cols); 159 SUMA_AFNI_COLORS *SUMA_DestroyAfniColors (SUMA_AFNI_COLORS *SAC); 160 SUMA_Boolean SUMA_Interpret_AFNIColor (char *Name, float RGB[3]); 161 int SUMA_AFNI_Extract_Colors ( char *fname, SUMA_AFNI_COLORS *SAC ); 162 void SUMA_Flip_Color_Map (SUMA_COLOR_MAP *CM); 163 int SUMA_Rotate_Color_Map (SUMA_COLOR_MAP *CM, float frac); 164 int SUMA_ColorizePlane (SUMA_OVERLAYS *cp); 165 SUMA_Boolean SUMA_ContourateDsetOverlay(SUMA_OVERLAYS *cp, 166 SUMA_COLOR_SCALED_VECT * SV); 167 SUMA_AFNI_COLORS *SUMA_Build_Color_maps(void); 168 char *SUMA_ScaleToMapOpt_Info (SUMA_SCALE_TO_MAP_OPT *OptScl, int detail); 169 SUMA_Boolean SUMA_ShowScaleToMapOpt(SUMA_SCALE_TO_MAP_OPT *OptScl, FILE *Out, 170 int detail); 171 SUMA_Boolean SUMA_SetConvexityPlaneDefaults(SUMA_SurfaceObject *SO, DList *DsetList); 172 SUMA_COLOR_MAP *SUMA_CmapOfPlane (SUMA_OVERLAYS *Sover ); 173 SUMA_SurfaceObject *SUMA_SO_of_ColPlane(SUMA_OVERLAYS *Sover); 174 SUMA_Boolean SUMA_SetSO_CoordBias(SUMA_SurfaceObject *SO, SUMA_OVERLAYS *ovr, float *NewBias, SUMA_WIDGET_INDEX_COORDBIAS BiasDim); 175 SUMA_Boolean SUMA_SetCoordBias(SUMA_OVERLAYS *ovr, float *NewBias, SUMA_WIDGET_INDEX_COORDBIAS BiasDim); 176 SUMA_Boolean SUMA_RemoveSO_CoordBias(SUMA_SurfaceObject *SO, SUMA_OVERLAYS *ovr); 177 SUMA_Boolean SUMA_RemoveCoordBias(SUMA_OVERLAYS *ovr); 178 SUMA_Boolean SUMA_TransferSO_CoordBias(SUMA_SurfaceObject *SO, SUMA_OVERLAYS 179 *ovr, SUMA_WIDGET_INDEX_COORDBIAS BiasDim); 180 SUMA_Boolean SUMA_AddVisX_CoordBias(SUMA_SurfaceObject *SO, SUMA_OVERLAYS *ovr, 181 SUMA_WIDGET_INDEX_COORDBIAS BiasDim, 182 float *BiasVect); 183 SUMA_Boolean SUMA_TransferCoordBias(SUMA_OVERLAYS *ovr, 184 SUMA_WIDGET_INDEX_COORDBIAS BiasDim); 185 SUMA_Boolean SUMA_NewSurfaceGeometry(SUMA_SurfaceObject *SO); 186 int SUMA_GetNodeOverInd (SUMA_OVERLAYS *Sover, int node); 187 int SUMA_GetSortedNodeOverInd (SUMA_OVERLAYS *Sover, int node); 188 SUMA_Boolean SUMA_isDsetColumn_inferred(SUMA_DSET *dset, int icol); 189 SUMA_Boolean SUMA_OKassign(SUMA_DSET *dset, SUMA_SurfaceObject *SO); 190 SUMA_COLOR_MAP * SUMA_pbardef_to_CM(char *cmd); 191 static char SUMA_COLOR_MAP_NAMES[][32]={ 192 "rgybr20" , "bgyr19" , "gray02" , 193 "gray_i02" , "gray20" , "ngray20" , 194 "bw20" , "byr64" , "bgyr64" , 195 "ygbrp256" , "ygbrp128", "ygbrp64", 196 "\0" }; 197 SUMA_Boolean SUMA_Selected_Node_Activate_Callbacks ( 198 SUMA_ALL_DO *ado, SUMA_OVERLAYS *Sover, 199 SUMA_ENGINE_SOURCE Src, NI_group *ngr); 200 SUMA_DRAWN_ROI * SUMA_is_NamedColPlane_ForROI(char *PlaneName); 201 SUMA_Boolean SUMA_isDsetRelated(SUMA_DSET *dset, SUMA_SurfaceObject *SO); 202 NI_group * SUMA_CreateCmapForLabelDset(SUMA_DSET *dset, 203 SUMA_COLOR_MAP *ThisCmap, int alaa) ; 204 SUMA_Boolean SUMA_IsCmapOKForLabelDset(SUMA_DSET *dset, SUMA_COLOR_MAP *cmap); 205 int SUMA_dset_to_Label_dset_cmap(SUMA_DSET *dset, SUMA_COLOR_MAP *cmap); 206 207 208 209 210 /* A fast version of SUMA_ColMapKeyIndex 211 key is set to the return value*/ 212 #define SUMA_COLMAPKEYTOINDEX(key,chd,hdbuf) { \ 213 HASH_FIND_INT(chd, &key, hdbuf); \ 214 if (hdbuf) key = hdbuf->colmapindex; else key = -1; \ 215 } 216 217 #define SUMA_COLMAP_INDEX_FROM_ID(id, ColMap, i0, HashMode) {\ 218 if (HashMode) { \ 219 i0 = id; SUMA_COLMAPKEYTOINDEX(i0, ColMap->chd, hdbuf); \ 220 /* or the function call way, same but slower \ 221 i0 = SUMA_ColMapKeyIndex((int)id, ColMap); */ \ 222 } else {\ 223 i0 = (int)id; /* handy if non int is passed */ \ 224 if (i0 < 0) i0 = 0; \ 225 else if (i0 >= ColMap->N_M[0]) i0 = ColMap->N_M[0] -1; \ 226 } \ 227 } 228 229 int SUMA_ColMapKeyIndex(int key, SUMA_COLOR_MAP *CM); 230 SUMA_Boolean SUMA_DestroyCmapHash(SUMA_COLOR_MAP *CM); 231 SUMA_Boolean SUMA_CreateCmapHash(SUMA_COLOR_MAP *CM); 232 NI_group *SUMA_CmapToNICmap(SUMA_COLOR_MAP *CM); 233 SUMA_COLOR_MAP *SUMA_NICmapToCmap(NI_group *ngr); 234 char *SUMA_RGB_to_hex(float *fv, char *here); 235 236 #endif 237