00001 #ifndef SUMA_XCOLBAR_INCLUDED
00002 #define SUMA_XCOLBAR_INCLUDED
00003
00004 #define SUMA_CMAP_WIDTH 20
00005 #define SUMA_CMAP_HEIGHT 300
00006 #define SUMA_SCALE_WIDTH 70
00007 #define SUMA_SCALE_HEIGHT SUMA_CMAP_HEIGHT
00008 #define SUMA_CMAP_ORIGIN 0.0, 0.0, 0.0
00009 #define SUMA_CMAP_TOPLEFT SUMA_CMAP_WIDTH, SUMA_CMAP_HEIGHT, 0.0
00010 #define SUMA_CMAP_VIEW_FROM (2 * SUMA_CMAP_HEIGHT)
00011 #define SUMA_CMAP_FOV_INITIAL 28.07249
00012 #if 0
00013 #define SUMA_RANGE_STRING(m_nel, m_i, m_str_min, m_str_max, m_range){ \
00014 int m_loc[2]; \
00015 if (SUMA_GetColRange(m_nel, m_i, m_range, m_loc)) { \
00016 sprintf(m_str_min, "%.2f %d", m_range[0], m_loc[0]); \
00017 sprintf(m_str_max, "%.2f %d", m_range[1], m_loc[1]); \
00018 } else { \
00019 sprintf(m_str_min, "??? ???"); \
00020 sprintf(m_str_max, "??? ???"); \
00021 } \
00022 }
00023 #else
00024 #define SUMA_RANGE_STRING(m_dset, m_i, m_str_min, m_str_max, m_str_minloc, m_str_maxloc, m_range){ \
00025 int m_loc[2]; \
00026 if (SUMA_GetDsetColRange(m_dset, m_i, m_range, m_loc)) { \
00027 SUMA_SurfaceObject *m_SOp = NULL; \
00028 char *m_idcode_str = NULL; \
00029 int m_N_Node=-1; \
00030 \
00031 m_idcode_str = NI_get_attribute(m_dset->ngr, "MeshParent_idcode"); \
00032 if (!m_idcode_str) m_idcode_str = NI_get_attribute(m_dset->ngr, "Parent_ID"); \
00033 if (m_idcode_str) { \
00034 m_SOp = SUMA_findSOp_inDOv(m_idcode_str, SUMAg_DOv, SUMAg_N_DOv); \
00035 if (m_SOp) { \
00036 m_N_Node = m_SOp->N_Node; \
00037 } \
00038 } \
00039 sprintf(m_str_min, "%s", MV_format_fval2(m_range[0], 7)); \
00040 sprintf(m_str_max, "%s", MV_format_fval2(m_range[1], 7)); \
00041 sprintf(m_str_minloc, "%d", SUMA_GetNodeIndex_FromNodeRow(m_dset, m_loc[0], m_N_Node)); \
00042 sprintf(m_str_maxloc, "%d", SUMA_GetNodeIndex_FromNodeRow(m_dset, m_loc[1], m_N_Node)); \
00043 } else { \
00044 sprintf(m_str_min, "???"); \
00045 sprintf(m_str_max, "???"); \
00046 sprintf(m_str_minloc, "???"); \
00047 sprintf(m_str_maxloc, "???"); \
00048 } \
00049 }
00050 #endif
00051
00052 #define SUMA_XHAIR_STRING(v, str) {\
00053
00054 \
00055
00056
00057
00058 \
00059 sprintf(str,"%s", MV_format_fval2(v[0], 7)); \
00060 sprintf(str,"%s, %s", str, MV_format_fval2(v[1], 7)); \
00061 sprintf(str,"%s, %s", str, MV_format_fval2(v[2], 7)); \
00062 }
00063
00064 #define SUMA_INSERT_CELL_STRING(TF, i, j, strng) { \
00065 if (TF->str_value) { \
00066 SUMA_STRING_REPLACE(TF->str_value[j*TF->Ni+i], strng);\
00067 } \
00068 XtVaSetValues (TF->cells[j*TF->Ni+i], XmNvalue, strng, NULL); \
00069 }
00070
00071 #define SUMA_INSERT_CELL_VALUE(TF, i, j, val) { \
00072 if (TF->type == SUMA_int || TF->type == SUMA_float) { \
00073 TF->cell_modified = j*TF->Ni+i; \
00074 TF->num_value[TF->cell_modified] = val; \
00075 SUMA_TableF_SetString(TF);\
00076 TF->cell_modified = -1; \
00077 } else { \
00078 SUMA_SL_Err("Macro for numerical tables only"); \
00079 } \
00080 }
00081
00082
00083
00084
00085 #define SUMA_WHICH_CELL(TF, w, Found) { \
00086 int m_nmx, m_i=0; \
00087 m_nmx = TF->Ni*TF->Nj; \
00088 Found = -1; \
00089 while (m_i<m_nmx) { \
00090 if (TF->cells[m_i] == w) { Found = m_i; m_i = m_nmx; } \
00091 ++m_i; \
00092 } \
00093 }
00094
00095
00096
00097
00098 #define SUMA_FORCE_SCALE_HEIGHT(SO) {\
00099 XtVaSetValues( SO->SurfCont->thr_sc, XmNheight, SUMA_CMAP_HEIGHT, NULL ) ; \
00100 }
00101
00102 void SUMA_ShowMeTheChildren(Widget w);
00103 XImage *SUMA_cmap_to_XImage (Widget wid, SUMA_COLOR_MAP *cm);
00104 void SUMA_DrawCmap(SUMA_COLOR_MAP *Cmap);
00105 void SUMA_cmap_wid_display(SUMA_SurfaceObject *SO);
00106 void SUMA_cmap_context_Init(SUMA_SurfaceObject *SO);
00107 void SUMA_cmap_wid_graphicsInit (Widget w, XtPointer clientData, XtPointer call);
00108 Boolean SUMA_cmap_wid_handleRedisplay(XtPointer clientData);
00109 void SUMA_cmap_wid_postRedisplay(Widget w, XtPointer clientData, XtPointer call);
00110 void SUMA_cmap_wid_expose(Widget w, XtPointer clientData, XtPointer call);
00111 void SUMA_cmap_wid_resize(Widget w, XtPointer clientData, XtPointer call);
00112 void SUMA_cmap_wid_input(Widget w, XtPointer clientData, XtPointer call);
00113 unsigned char *SUMA_read_ppm(char *fname, int *width, int *height, int verb);
00114 void SUMA_CreateCmapWidgets(Widget parent, SUMA_SurfaceObject *SO);
00115 void SUMA_cb_ColMap_Switch(Widget w, XtPointer clientData, XtPointer call);
00116 void SUMA_cb_SwitchBrightness(Widget w, XtPointer clientData, XtPointer call);
00117 void SUMA_cb_SwitchThreshold(Widget w, XtPointer clientData, XtPointer call);
00118 void SUMA_cb_SwitchIntensity(Widget w, XtPointer clientData, XtPointer call);
00119 SUMA_MenuItem *SUMA_FreeMenuVector(SUMA_MenuItem *menu, int Nels);
00120 SUMA_MenuItem *SUMA_FormSwitchColMenuVector(SUMA_SurfaceObject *SO, int what, int *N_items);
00121 void SUMA_set_cmap_options(SUMA_SurfaceObject *SO, SUMA_Boolean NewDset, SUMA_Boolean NewMap);
00122 void SUMA_cb_SwitchCmap(Widget w, XtPointer client_data, XtPointer call);
00123 SUMA_MenuItem *SUMA_FormSwitchCmapMenuVector(SUMA_COLOR_MAP **CMv, int N_maps);
00124 void SUMA_cb_SelectSwitchCmap (Widget w, XtPointer client_data, XtPointer call);
00125 void SUMA_cb_CloseSwitchCmap (Widget w, XtPointer client_data, XtPointer call);
00126 SUMA_Boolean SUMA_CmapSelectList(SUMA_SurfaceObject *SO, int type, int bringup);
00127 SUMA_Boolean SUMA_SwitchColPlaneCmap(SUMA_SurfaceObject *SO, SUMA_COLOR_MAP *CM);
00128 SUMA_Boolean SUMA_SetCmapMenuChoice(SUMA_SurfaceObject *SO, char *str);
00129 void SUMA_SetScaleRange(SUMA_SurfaceObject *SO, float range[2]);
00130 void SUMA_cb_set_threshold_label(Widget w, XtPointer clientData, XtPointer call);
00131 void SUMA_optmenu_EV( Widget w , XtPointer cd ,
00132 XEvent *ev , Boolean *continue_to_dispatch );
00133 void SUMA_cb_SetCoordBias(Widget widget, XtPointer client_data, XtPointer call_data);
00134 SUMA_Boolean SUMA_RedisplayAllShowing(char *SO_idcode_str, SUMA_SurfaceViewer *SVv, int N_SVv);
00135 void SUMA_CreateTable( Widget parent,
00136 int Ni, int Nj,
00137 char **row_tit, char **col_tit,
00138 char **row_hint, char **col_hint,
00139 char **row_help, char **col_help,
00140 int *cwidth, SUMA_Boolean editable, SUMA_VARTYPE type,
00141 void (*NewValueCallback)(void * data), void *cb_data,
00142 void (*TitLabelEVHandler)(Widget w , XtPointer cd , XEvent *ev , Boolean *ctd), void *TitLabelEVHandlerData,
00143 void (*CellEVHandler)(Widget w , XtPointer cd , XEvent *ev , Boolean *ctd), void *CellEVHandlerData,
00144 SUMA_TABLE_FIELD *TF);
00145 void SUMA_TableF_cb_label_Modify (Widget w, XtPointer client_data, XtPointer call_data);
00146 void SUMA_TableF_SetString (SUMA_TABLE_FIELD * AF);
00147 void SUMA_TableF_cb_label_change (Widget w, XtPointer client_data, XtPointer call_data);
00148 void SUMA_leave_TableField( Widget w , XtPointer client_data ,
00149 XEvent * ev , Boolean * continue_to_dispatch );
00150 void SUMA_SetRangeValue (void *data);
00151 SUMA_TABLE_FIELD * SUMA_AllocTableField(void);
00152 SUMA_TABLE_FIELD * SUMA_FreeTableField(SUMA_TABLE_FIELD *TF);
00153 SUMA_CELL_VARIETY SUMA_cellvariety (SUMA_TABLE_FIELD *TF, int n);
00154 SUMA_Boolean SUMA_InitRangeTable(SUMA_SurfaceObject *SO, int what);
00155 void SUMA_CreateXhairWidgets(Widget parent, SUMA_SurfaceObject *SO);
00156 SUMA_Boolean SUMA_UpdateXhairField(SUMA_SurfaceViewer *sv);
00157 void SUMA_XhairInput (void* data);
00158 SUMA_Boolean SUMA_UpdateNodeField(SUMA_SurfaceObject *SO);
00159 void SUMA_NodeInput (void* data);
00160 void SUMA_SetCellEditMode(SUMA_TABLE_FIELD *TF, int i, int j, int Mode);
00161 void SUMA_TriInput (void* data);
00162 SUMA_Boolean SUMA_UpdateTriField(SUMA_SurfaceObject *SO);
00163 SUMA_Boolean SUMA_UpdateNodeLblField(SUMA_SurfaceObject *SO);
00164 SUMA_Boolean SUMA_UpdateNodeValField(SUMA_SurfaceObject *SO);
00165 SUMA_Boolean SUMA_UpdateNodeNodeField(SUMA_SurfaceObject *SO);
00166 SUMA_Boolean SUMA_Init_SurfCont_CrossHair(SUMA_SurfaceObject *SO);
00167 void SUMA_cb_AbsThresh_tb_toggled (Widget w, XtPointer data, XtPointer client_data);
00168 void SUMA_cb_SymIrange_tb_toggled (Widget w, XtPointer data, XtPointer client_data);
00169 void SUMA_cb_ShowZero_tb_toggled (Widget w, XtPointer data, XtPointer client_data);
00170 void SUMA_cb_SetCmapMode(Widget widget, XtPointer client_data, XtPointer call_data);
00171 void SUMA_cb_Cmap_Load(Widget w, XtPointer data, XtPointer client_data);
00172 void SUMA_LoadCmapFile (char *filename, void *data);
00173 void SUMA_CreateUpdatableCmapMenu(SUMA_SurfaceObject *SO);
00174 int SUMA_ThreshVal2ScalePos(SUMA_SurfaceObject *SO, float *val);
00175 void SUMA_SetScaleThr(void *data);
00176
00177
00178
00179
00180 #define SUMA_SurfContHelp_more \
00181 "Opens a dialog with detailed\n" \
00182 "information about the surface\n"\
00183 "object."
00184
00185 #define SUMA_SurfContHelp_RenderMode \
00186 "Choose the rendering mode for this surface.\n" \
00187 " Viewer: Surface's rendering mode is set\n" \
00188 " by the viewer's setting which can\n" \
00189 " be changed with the 'p' option.\n" \
00190 " Fill: Shaded rendering mode.\n" \
00191 " Line: Mesh rendering mode.\n" \
00192 " Points: Points rendering mode."
00193
00194 #define SUMA_SurfContHelp_Dsets \
00195 "Show/Hide Dataset (previously Color Plane) controllers"
00196
00197 #define SUMA_SurfContHelp_Xhr \
00198 "Crosshair coordinates on\n" \
00199 "this controller's surface.\n" \
00200 "Entering new coordinates \n" \
00201 "makes the crosshair jump\n" \
00202 "to that location (like 'ctrl+j').\n" \
00203 "Use 'alt+l' to center the\n" \
00204 "cross hair in your viewer."
00205
00206 #define SUMA_SurfContHelp_Node \
00207 "Node index of node in\n" \
00208 "focus on this controller's\n" \
00209 "surface. Nodes in focus are\n" \
00210 "highlighted by the blue sphere\n" \
00211 "in the crosshair.\n" \
00212 "Entering a new node's index\n" \
00213 "will put that node in focus\n" \
00214 "and send the crosshair to its\n" \
00215 "location (like 'j').\n" \
00216 "Use 'alt+l' to center the\n" \
00217 "cross hair in your viewer."
00218
00219 #define SUMA_SurfContHelp_Tri \
00220 "1- Triangle (faceset) index of\n" \
00221 "triangle in focus on this \n" \
00222 "on this controller's surface.\n" \
00223 "Triangle in focus is highlighted\n" \
00224 "in gray. Entering a new triangle's\n" \
00225 "index will set a new triangle in\n" \
00226 "focus (like 'J').\n" \
00227 "2- Nodes forming triangle."
00228
00229 #define SUMA_SurfContHelp_NodeValTblr0 \
00230 "Data Values at node in focus"
00231
00232 #define SUMA_SurfContHelp_NodeValTblc0 \
00233 "Data Values at node in focus"
00234
00235 #define SUMA_SurfContHelp_NodeValTblc1 \
00236 "Intensity (I) value"
00237
00238 #define SUMA_SurfContHelp_NodeValTblc2 \
00239 "Threshold (T) value"
00240
00241 #define SUMA_SurfContHelp_NodeValTblc3 \
00242 "Brightness modulation (B) value"
00243
00244 #define SUMA_SurfContHelp_NodeLabelTblr0 \
00245 "Color from the selected Dset\n" \
00246 "at the node in focus.\n" \
00247 "For the moment, only color\n" \
00248 "is displayed. The plan is\n" \
00249 "to display labels of various\n" \
00250 "sorts here."
00251
00252 #define SUMA_SurfContHelp_DsetLblTblr0 \
00253 "Label of Dset."
00254
00255 #define SUMA_SurfContHelp_DsetLblTblr1 \
00256 "Parent surface of Dset."
00257
00258 #define SUMA_SurfContHelp_DsetOrd \
00259 "Order of Dset's colorplane.\n" \
00260 "Dset with highest number is \n" \
00261 "on top of the stack. Separate \n" \
00262 "stacks exits for foreground (fg:)\n" \
00263 "and background planes (bg:)."
00264
00265 #define SUMA_SurfContHelp_DsetOpa \
00266 "Opacity of Dset's colorplane.\n" \
00267 "Opaque planes have an opacity\n" \
00268 "of 1, transparent planes have\n" \
00269 "an opacity of 0. \n" \
00270 "Opacities are used when mixing\n" \
00271 "planes within the same group \n" \
00272 "foreground (fg:) or background(bg:).\n" \
00273 "\n" \
00274 "Opacity values are not applied\n" \
00275 "to the first plane in a group.\n" \
00276 "Consequently, if you have just\n" \
00277 "one plane to work with, opacity \n" \
00278 "value is meaningless.\n" \
00279 "\n" \
00280 "Color mixing can be done in two \n" \
00281 "ways, use F7 to toggle between \n" \
00282 "mixing modes.\n"
00283
00284 #define SUMA_SurfContHelp_DsetDim \
00285 "Dimming factor to apply to colormap\n" \
00286 "before mapping the intensity (I) data.\n" \
00287 "The colormap, if displayed on the right,\n" \
00288 "is not visibly affected by Dim but the\n" \
00289 "colors mapped onto the surface are.\n" \
00290 "For RGB Dsets (.col files), Dim is\n" \
00291 "applied to the RGB colors directly"
00292
00293 #define SUMA_SurfContHelp_DsetView \
00294 "View (ON)/Hide Dset node colors."
00295
00296 #define SUMA_SurfContHelp_DsetViewOne \
00297 "If ON, view only the selected\n"\
00298 "Dset's colors. No mixing of colors in the\n"\
00299 "foreground stack is done.\n" \
00300 "\n" \
00301 "If OFF, then mix the color planes\n" \
00302 "in the foreground stack.\n" \
00303 "\n" \
00304 "This option makes it easy to view \n" \
00305 "one Dset's colors at a time without\n" \
00306 "having to worry about color mixing,\n" \
00307 "opacity, and stacking order.\n" \
00308 "\n" \
00309 "Needless to say, options such as\n" \
00310 "'Ord:' and 'Opa:' in this panel are \n" \
00311 "of little use when this button is ON."
00312
00313 #define SUMA_SurfContHelp_DsetSwitch \
00314 "Switch between datasets."
00315
00316 #define SUMA_SurfContHelp_SetThreshTblr0 \
00317 "Set the threshold."
00318
00319 #define SUMA_SurfContHelp_DsetLoad \
00320 "Load a new dataset (Dset).\n" \
00321 "Datasets can be of 2 formats:\n" \
00322 "1- NIML (.niml.dset)\n" \
00323 " This format is internal \n" \
00324 " to AFNI/SUMA. \n" \
00325 "2- 1D (.1D.dset)\n" \
00326 " Simple ASCII tabular format\n" \
00327 " supporting numerical values\n" \
00328 " only.\n" \
00329 " Each row i contains Nj data\n" \
00330 " values per node.\n" \
00331 " Since this format has no header\n" \
00332 " associated with it, it makes\n" \
00333 " some assumption about the data\n" \
00334 " in the columns. \n" \
00335 " You can choose from 3 options:\n" \
00336 " (see below for nomenclature)\n" \
00337 " - Each column has Ni values where\n" \
00338 " Ni = N_Node \n" \
00339 " In this case, it is assumed that\n" \
00340 " row i has values for node i on\n" \
00341 " the surface.\n" \
00342 " - If Ni is not equal to N_Node then\n" \
00343 " SUMA will check to see if column 0\n" \
00344 " (Col_0) is all integers with values\n" \
00345 " v satisfying: 0 <= v < N_Node .\n" \
00346 " If that is the case then column 0\n" \
00347 " contains the node indices. The values\n" \
00348 " in row j of Dset are for the node\n" \
00349 " indexed Col_0[j].\n" \
00350 " In the Sample 1D Dset shown below\n" \
00351 " assuming N_Node > 58, SUMA\n" \
00352 " will consider the 1st column to \n" \
00353 " contain node indices. In that case\n" \
00354 " the values -12.1 and 0.9 are for \n" \
00355 " node 58 on the surface.\n" \
00356 " - Lastly, if Col_0 fails the node index\n" \
00357 " test, then SUMA considers the data\n" \
00358 " in row i to be associated with node i.\n" \
00359 "\n" \
00360 " If you're confused, try creating some\n" \
00361 " toy datasets like the one below and \n" \
00362 " load them into SUMA.\n" \
00363 "\n" \
00364 " Sample 1D Dset (Call it pickle.1D.dset):\n" \
00365 " 25 22.7 1.2 \n" \
00366 " 58 -12.1 0.9 \n" \
00367 "\n" \
00368 " Nomenclature and conventions:\n" \
00369 " - N_Node is the number of nodes\n" \
00370 " forming the surface.\n" \
00371 " - Indexing always starts at 0.\n" \
00372 " In the example, value v at \n" \
00373 " row 0, column 1 is v = 22.7 .\n" \
00374 " - A Dset has Ni rows and Nj columns.\n" \
00375 " In other terms, Ni is the number\n" \
00376 " of values per node and Nj is the\n" \
00377 " number of nodes for which data are\n" \
00378 " specified in Dset.\n" \
00379 " Ni = 2, Nj = 3 in the example."
00380
00381 #define SUMA_SurfContHelp_DsetLoadCol \
00382 "Load a new color plane.\n" \
00383 "(Same as ctrl+c option)."
00384
00385 #define SUMA_SurfContHelp_SelInt \
00386 "Select Intensity (I) column.\n" \
00387 "Use this menu to select\n" \
00388 "which column in the\n" \
00389 "dataset (Dset) should be \n" \
00390 "used for an Intensity (I)\n" \
00391 "measure.\n" \
00392 "\n" \
00393 "I values are the ones that \n" \
00394 "get colored by the colormap.\n" \
00395 "\n" \
00396 "No coloring is done if the\n" \
00397 "'v' button on the right is\n" \
00398 "turned off.\n" \
00399 "\n" \
00400 "I value for the selected node\n" \
00401 "is shown in the 'Val' table\n" \
00402 "of the 'Xhair Info' section \n" \
00403 "on the left."
00404
00405 #define SUMA_SurfContHelp_SelThr \
00406 "Select Threshold (T) column.\n" \
00407 "Use this menu to select\n" \
00408 "which column in the\n" \
00409 "dataset (Dset) should be \n" \
00410 "used for a Threshold (T)\n" \
00411 "measure.\n" \
00412 "\n" \
00413 "T values are the ones used \n" \
00414 "to determine if a node \n" \
00415 "gets colored based on its\n" \
00416 "I value.\n" \
00417 "\n" \
00418 "A node n is not colored if:\n" \
00419 " T(n) < Tscale \n" \
00420 "or if '|T|' option below\n" \
00421 "is turned ON.\n" \
00422 " | T(n) | < Tscale .\n" \
00423 "\n" \
00424 "Thresholding is not applied\n" \
00425 "when the 'v' button on the \n" \
00426 "right is turned off.\n" \
00427 "\n" \
00428 "T(n) for the selected node n\n" \
00429 "is shown in the 'Val'\n" \
00430 "table of the 'Xhair Info'\n" \
00431 "section on the left."
00432
00433 #define SUMA_SurfContHelp_SelBrt \
00434 "Select Brightness (B) column.\n" \
00435 "Use this menu to select\n" \
00436 "which column in the\n" \
00437 "dataset (Dset) should be \n" \
00438 "used for color Brightness (B)\n" \
00439 "modulation.\n" \
00440 "\n" \
00441 "B values are the ones used \n" \
00442 "to control the brightness of\n" \
00443 "a node's color.\n" \
00444 "\n" \
00445 "Brightness modulation is\n" \
00446 "controlled by ranges in the\n" \
00447 "'B' cells of the table below.\n" \
00448 "\n" \
00449 "Brightness modulation is not\n" \
00450 "applied when the 'v' button on \n" \
00451 "the right is turned off.\n" \
00452 "\n" \
00453 "B(n) for the selected node n\n" \
00454 "is shown in the 'Val'\n" \
00455 "table of the 'Xhair Info'\n" \
00456 "section on the left."
00457
00458 #define SUMA_SurfContHelp_SelIntTgl \
00459 "View (ON)/Hide Dset node colors."
00460
00461 #define SUMA_SurfContHelp_SelThrTgl \
00462 "Apply (ON)/Ignore thresholding"
00463
00464 #define SUMA_SurfContHelp_SelBrtTgl \
00465 "View (ON)/Ignore brightness modulation"
00466
00467 #define SUMA_SurfContHelp_SetRngTbl_r0 \
00468 "Used for setting the clipping ranges." \
00469 "Clipping is only done for \n" \
00470 "color mapping. Actual data \n" \
00471 "values do not change."
00472
00473 #define SUMA_SurfContHelp_SetRngTbl_r1 \
00474 "Intensity clipping range.\n" \
00475 "Values in the intensity data \n" \
00476 "that are less than Min are colored\n" \
00477 "by the first (bottom) color of the \n" \
00478 "colormap. \n" \
00479 "Values larger than Max are mapped \n" \
00480 "to the top color.\n" \
00481 "\n" \
00482 "Left click locks ranges\n" \
00483 "from automatic resetting.\n" \
00484 "Locked range is applied to\n" \
00485 "current Dset only.\n" \
00486 "\n" \
00487 "Right click resets values\n" \
00488 "to full range in data."
00489
00490 #define SUMA_SurfContHelp_SetRngTbl_r2 \
00491 "Brightness modulation clipping range.\n" \
00492 "Values in the brightness data are\n" \
00493 "clipped to the Min to Max range before\n" \
00494 "calculating their modulation factor\n" \
00495 "(see next table row).\n" \
00496 "\n" \
00497 "Left click locks ranges\n" \
00498 "from automatic resetting.\n" \
00499 "Locked range is applied to\n" \
00500 "current Dset only.\n" \
00501 "\n" \
00502 "Right click resets values\n" \
00503 "to full range in data."
00504
00505 #define SUMA_SurfContHelp_SetRngTbl_r3 \
00506 "Brightness modulation factor range.\n" \
00507 "Brightness modulation values, after\n" \
00508 "clipping per the values in the row above,\n" \
00509 "are scaled to fit the range specified\n" \
00510 "here."
00511
00512 #define SUMA_SurfContHelp_SetRngTbl_r4 \
00513 "Coordinate bias range.\n" \
00514 "Coordinates of nodes that are mapped\n" \
00515 "to the colormap can have a bias added\n" \
00516 "to their coordinates. \n" \
00517 "\n" \
00518 "Nodes mapped to the first color of \n" \
00519 "the map receive the minimum bias and\n" \
00520 "nodes mapped to the last color receive\n" \
00521 "the maximum bias. \n" \
00522 "\n" \
00523 "Nodes not colored, because of \n" \
00524 "thresholding for example, will \n" \
00525 "have no bias applied."
00526
00527 #define SUMA_SurfContHelp_SetRngTbl_c1 \
00528 "Minimum clip value.\n" \
00529 "Clips values (v) in the Dset\n" \
00530 "less than Minimum (min):\n" \
00531 " if v < min then v = min "
00532
00533 #define SUMA_SurfContHelp_SetRngTbl_c2 \
00534 "Maximum clip value.\n" \
00535 "Clips values (v) in the Dset\n" \
00536 "larger than Maximum (max):\n" \
00537 " if v > max then v = max "
00538
00539 #define SUMA_SurfContHelp_Col \
00540 "Switch between color mapping modes.\n" \
00541 "Int: Interpolate linearly between\n" \
00542 " colors in colormap\n" \
00543 "NN : Use the nearest color in the\n" \
00544 " colormap. \n" \
00545 "Dir: Use intensity values as indices\n" \
00546 " into the colormap.\n" \
00547 " In Dir mode, the intensity \n" \
00548 " clipping range is of no use."
00549
00550 #define SUMA_SurfContHelp_Bias \
00551 "Coordinate bias direction.\n" \
00552 " -: No bias thank you\n" \
00553 " x: X coord bias\n" \
00554 " y: Y coord bias\n" \
00555 " z: Z coord bias\n" \
00556 " n: bias along node's normal\n" \
00557 "\n" \
00558 "See more info in Bhelp for\n" \
00559 "'C' table entry above.\n" \
00560 "\n" \
00561 "This option will produce\n" \
00562 "'Extremely Cool'[1] images.\n" \
00563 "[1] Chuck E. Weiss (Slow River/\n" \
00564 " Rykodisc) 1999."
00565
00566 #define SUMA_SurfContHelp_Cmp \
00567 "Switch between available color maps.\n" \
00568 "If the number of colormaps is too large\n" \
00569 "for the menu button, right click over\n" \
00570 "the 'Cmp' label and a chooser with a \n" \
00571 "slider bar will appear.\n" \
00572 "\n" \
00573 "More help is available via\n" \
00574 "ctrl+h while mouse is over the\n" \
00575 "colormap."
00576
00577 #define SUMA_SurfContHelp_CmpNew \
00578 "Load new colormap.\n" \
00579 "Loaded map will replace a\n" \
00580 "pre-existing one with the\n" \
00581 "same name.\n" \
00582 "\n" \
00583 "See ScaleToMap -help for \n" \
00584 "details on the format of \n" \
00585 "colormap file. The formats\n" \
00586 "are described in the section\n" \
00587 "for the option -cmapfile.\n" \
00588 "\n" \
00589 "A sample colormap would be:\n" \
00590 " 0 0 1\n" \
00591 " 1 1 1\n" \
00592 " 1 0 0\n" \
00593 "saved into a cmap file called\n" \
00594 "cmap_test.1D.cmap"
00595
00596 #define SUMA_SurfContHelp_AbsThr \
00597 "Toggle Absolute thresholding.\n" \
00598 "OFF: Mask node color for\n" \
00599 " nodes that have: \n" \
00600 " T(n) < Tscale\n" \
00601 "ON: Mask node color for\n" \
00602 " nodes that have:\n" \
00603 " | T(n) | < Tscale\n" \
00604 "where:\n" \
00605 "Tscale is the value set by\n" \
00606 " the threshold scale.\n" \
00607 "T(n) is the node value in the \n" \
00608 " selected threshold column (T).\n" \
00609 " this value is seen in the \n" \
00610 " second cell of the 'Value'\n" \
00611 " table on the left side."
00612
00613 #define SUMA_SurfContHelp_Isym \
00614 "Toggle Intensity range symmetry\n" \
00615 "about 0. \n" \
00616 "ON : Intensity clipping range\n" \
00617 " is forced to go from \n" \
00618 " -val to val\n" \
00619 " This allows you to mimic\n" \
00620 " AFNI's ranging mode.\n" \
00621 "OFF: Intensity clipping range\n" \
00622 " can be set to your liking."
00623
00624 #define SUMA_SurfContHelp_Shw0 \
00625 "Toggle color masking of nodes \n" \
00626 "with intensity = 0 \n" \
00627 "ON : 0 intensities are mapped\n" \
00628 " to the colormap as any\n" \
00629 " other values.\n" \
00630 "OFF: 0 intensities are masked,\n" \
00631 " a la AFNI"
00632
00633 #define SUMA_SurfContHelp_RangeTbl_c0 \
00634 "Full range of values in Dset."
00635
00636 #define SUMA_SurfContHelp_RangeTbl_c1 \
00637 "Minimum value in Dset column."
00638
00639 #define SUMA_SurfContHelp_RangeTbl_c2 \
00640 "Node index at minimum.\n" \
00641 "Right click in cell to\n" \
00642 "have crosshair jump to\n" \
00643 "node's index.\n" \
00644 "Same as 'ctrl+j' or\n" \
00645 "an entry in the 'Node' cell\n" \
00646 "under Xhair Info block."
00647
00648 #define SUMA_SurfContHelp_RangeTbl_c3 \
00649 "Maximum value in Dset column."
00650
00651 #define SUMA_SurfContHelp_RangeTbl_c4 \
00652 "Node index at maximum.\n" \
00653 "Right click in cell to\n" \
00654 "have crosshair jump to\n" \
00655 "node's index.\n" \
00656 "Same as 'ctrl+j' or\n" \
00657 "an entry in the 'Node' cell\n" \
00658 "under Xhair Info block."
00659
00660 #define SUMA_SurfContHelp_RangeTbl_r1 \
00661 "Range of values in intensity (I) column."
00662
00663 #define SUMA_SurfContHelp_RangeTbl_r2 \
00664 "Range of values in threshold (T) column."
00665
00666 #define SUMA_SurfContHelp_RangeTbl_r3 \
00667 "Range of values in brightness (B) column."
00668
00669 #endif