1 #ifndef SUMA_SVMANIP_INCLUDED
2 #define SUMA_SVMANIP_INCLUDED
3 
4 #define UPDATE_NO_VIEWING_PARAMS_MASK (1<<1)
5 #define UPDATE_ROT_MASK (1<<2)
6 #define UPDATE_VIEW_POINT_MASK (1<<3)
7 #define UPDATE_EYE_AXIS_STD_MASK (1<<4)
8 #define UPDATE_STANDARD_VIEW_MASK (1<<5)
9 #define UPDATE_ALL_VIEWING_PARAMS_MASK ( UPDATE_ROT_MASK | UPDATE_VIEW_POINT_MASK | UPDATE_EYE_AXIS_STD_MASK | UPDATE_STANDARD_VIEW_MASK )
10 
11 #define ROI_MODE(sv) ( SUMAg_CF->ROI_mode )
12 #define MASK_MANIP_MODE(sv) ( sv->MouseMode == SUMA_MASK_MANIP_MMODE )
13 typedef enum {
14    SUMA_DEF_MMODE=0,
15    SUMA_ROI_MMODE,
16    SUMA_MASK_MANIP_MMODE,
17 
18    SUMA_N_MMODES
19 } SUMA_MOUSE_MODES;
20 
21 /*! functions defined in SUMA_SVmanip.c */
22 SUMA_Boolean SUMA_LockEnum_LockType (SUMA_LINK_TYPES i, char *Name);
23 SUMA_Boolean SUMA_DiffGeomViewStruct(SUMA_GEOMVIEW_STRUCT gvs1,
24                                      SUMA_GEOMVIEW_STRUCT gvs2,
25                                      int level);
26 SUMA_Boolean SUMA_CopyGeomViewStruct(SUMA_GEOMVIEW_STRUCT *gvs1,
27                                      SUMA_GEOMVIEW_STRUCT *gvs2);
28 SUMA_SurfaceViewer *SUMA_Alloc_SurfaceViewer_Struct (int N);
29 SUMA_PICK_RESULT *SUMA_Get_From_PickResult_List(SUMA_SurfaceViewer *sv,
30                               SUMA_ALL_DO *ado, char *variant);
31 SUMA_Boolean SUMA_Add_To_PickResult_List(SUMA_SurfaceViewer *sv,
32                          SUMA_ALL_DO *ado, char *variant, SUMA_PICK_RESULT **PR);
33 void SUMA_Show_PickList(DList *SelAdo, int detail, char *headstring, FILE *out);
34 char *SUMA_PickList_Info(DList *SelAdo, int detail);
35 SUMA_Boolean SUMA_Process_Selected_ADO(SUMA_SurfaceViewer *sv, int deepfirst);
36 void SUMA_Free_SelectedDO_Datum(void *data);
37 void SUMA_Show_SurfaceViewer_Struct (SUMA_SurfaceViewer *SV, FILE *Out,
38                                      int detail);
39 SUMA_Boolean SUMA_isViewerStateAnatomical(SUMA_SurfaceViewer *sv);
40 char *SUMA_SurfaceViewer_StructInfo (SUMA_SurfaceViewer *SV, int detail);
41 SUMA_Boolean SUMA_SetViewerLightsForSO(SUMA_SurfaceViewer *cSV,
42                                        SUMA_SurfaceObject *SO);
43 
44 SUMA_Boolean SUMA_UpdateRotaCenter (SUMA_SurfaceViewer *SV,
45                                     SUMA_DO *dov, int N_dov);
46 SUMA_Boolean SUMA_Apply_VisX_Chain(float *xyz, int N, DList *dl, int inv);
47 DListElmt *SUMA_Fetch_VisX_Element(char *label, DList *dl);
48 SUMA_VIS_XFORM_DATUM *SUMA_Fetch_VisX_Datum (char *label, DList *dl,
49                                   SUMA_VISX_ADD_POSITIONS add, char *ref_label);
50 SUMA_Boolean SUMA_UpdateViewPoint (SUMA_SurfaceViewer *SV,
51                                     SUMA_DO *dov, int N_dov, byte keepzoom);
52 SUMA_Boolean SUMA_UpdateViewPoint_RegisteredADO(SUMA_ALL_DO *ado, byte keepzoom);
53 SUMA_Boolean SUMA_SetGLHome(SUMA_SurfaceViewer *sv);
54 SUMA_Boolean SUMA_Free_SurfaceViewer_Struct (SUMA_SurfaceViewer *SV);
55 SUMA_Boolean SUMA_Free_SurfaceViewer_Struct_Vect (SUMA_SurfaceViewer *SVv,
56                                                   int N);
57 SUMA_Boolean SUMA_Free_ViewState (SUMA_ViewState *vs);
58 SUMA_ViewState *SUMA_Alloc_ViewState (int N);
59 SUMA_Boolean SUMA_New_ViewState (SUMA_SurfaceViewer *csv);
60 SUMA_Boolean SUMA_Free_ViewState_Hist (SUMA_ViewState_Hist *vsh);
61 SUMA_ViewState_Hist *SUMA_Alloc_ViewState_Hist (void);
62 SUMA_Boolean SUMA_Show_ViewState(SUMA_ViewState *VS, FILE *Out, int detail);
63 SUMA_Boolean SUMA_ViewState_MembsRefresh(SUMA_ViewState *VS);
64 SUMA_Boolean SUMA_AllViewState_MembsRefresh(void);
65 int *SUMA_ViewState_Membs(SUMA_ViewState *VS, SUMA_DO_Types *tt,
66                           int *uN_MembSOs);
67 char *SUMA_ViewStateInfo(SUMA_ViewState *VS, int detail);
68 int SUMA_SV_GetShowSelectedDatum(SUMA_SurfaceViewer *sv);
69 SUMA_Boolean SUMA_SV_SetShowSelectedDatum(SUMA_SurfaceViewer *sv,
70                                           int act, int callback);
71 int SUMA_SV_GetShowSelectedFaceSet(SUMA_SurfaceViewer *sv);
72 SUMA_Boolean SUMA_SV_SetShowSelectedFaceSet(SUMA_SurfaceViewer *sv,
73                                           int act, int callback);
74 SUMA_Boolean SUMA_AdoptSurfGroup(SUMA_SurfaceViewer *csv,
75                                  SUMA_SurfaceObject *SO);
76 SUMA_Boolean SUMA_RegisterSpecSO (SUMA_SurfSpecFile *Spec,
77                                   SUMA_SurfaceViewer *csv,
78                                   SUMA_DO* dov, int N_dov, int viewopt);
79 int SUMA_WhichState (char *state, SUMA_SurfaceViewer *csv, char *ForceGroup);
80 int SUMA_Which_iDO_State(int dov_id, SUMA_SurfaceViewer *cSV, int addifmissing);
81 SUMA_Boolean SUMA_Free_CommonFields (SUMA_CommonFields *cf);
82 SUMA_CommonFields * SUMA_Create_CommonFields (void);
83 void SUMA_Show_CommonFields (SUMA_CommonFields *cf, FILE *out);
84 char * SUMA_CommonFieldsInfo (SUMA_CommonFields *cf, int detail);
85 SUMA_STANDARD_VIEWS SUMA_BestStandardView (SUMA_SurfaceViewer *sv, SUMA_DO *dov, int N_dov);
86 SUMA_Boolean SUMA_SetupSVforDOs (SUMA_SurfSpecFile *Spec, SUMA_DO *DOv,
87                            int N_DOv, SUMA_SurfaceViewer *cSV, int viewopt);
88 SUMA_Boolean SUMA_ADO_FillColorList_Params(SUMA_ALL_DO *ADO,
89                                      int *N_points, char **idcode);
90 SUMA_Boolean SUMA_FillColorList (SUMA_SurfaceViewer *sv, SUMA_ALL_DO *SO);
91 SUMA_Boolean SUMA_Free_ColorList (SUMA_COLORLIST_STRUCT *cl);
92 SUMA_Boolean SUMA_EmptyColorList (SUMA_SurfaceViewer *sv, char *DO_idstr);
93 GLfloat * SUMA_GetColorList (SUMA_SurfaceViewer *sv, char *DO_idstr);
94 GLfloat * SUMA_GetColorListPtr (SUMA_COLORLIST_STRUCT *cl);
95 SUMA_Boolean SUMA_SetRemixFlag (char *SO_idcode_str, SUMA_SurfaceViewer *SVv,
96                                 int N_SVv);
97 SUMA_COLORLIST_STRUCT * SUMA_GetColorListStruct (SUMA_SurfaceViewer *sv,
98                                                  char *DO_idstr);
99 SUMA_Boolean SUMA_BlankColorListStruct(SUMA_COLORLIST_STRUCT *cl);
100 SUMA_Boolean SUMA_SetShownLocalRemixFlag (SUMA_SurfaceViewer *sv);
101 SUMA_Boolean SUMA_SetLocalRemixFlag(char *SO_idcode_str, SUMA_SurfaceViewer *sv);
102 SUMA_Boolean SUMA_SetAllRemixFlag (SUMA_SurfaceViewer *SVv, int N_SVv);
103 int SUMA_WhichSVg(SUMA_SurfaceViewer *sv);
104 int SUMA_WhichSV (SUMA_SurfaceViewer *sv, SUMA_SurfaceViewer *SVv, int N_SVv);
105 char SUMA_WhichSVc(SUMA_SurfaceViewer *sv, SUMA_SurfaceViewer *SVv, int N_SVv);
106 SUMA_X_SumaCont *SUMA_CreateSumaContStruct (void);
107 void *SUMA_FreeSumaContStruct (SUMA_X_SumaCont *SumaCont);
108 SUMA_X_ViewCont *SUMA_CreateViewContStruct (void);
109 void *SUMA_FreeViewContStruct (SUMA_X_ViewCont *ViewCont);
110 SUMA_X_SurfCont *SUMA_CreateSurfContStruct (char *idcode_str, SUMA_DO_Types dd);
111 void *SUMA_FreeSurfContStruct (SUMA_X_SurfCont *SurfCont);
112 SUMA_X_SurfCont *SUMA_GlobalMaskContStruct(char *idcode);
113 SUMA_MENU_WIDGET *SUMA_Free_Menu_Widget(SUMA_MENU_WIDGET *smw);
114 SUMA_MENU_WIDGET *SUMA_Alloc_Menu_Widget(int nw);
115 SUMA_rb_group *SUMA_CreateLock_rb (int N_rb_group, int N_but);
116 void * SUMA_FreeLock_rb (SUMA_rb_group *Lock_rb);
117 SUMA_X_DrawROI *SUMA_CreateDrawROIStruct (void);
118 void *SUMA_FreeDrawROIStruct (SUMA_X_DrawROI *DrawROI);
119 void SUMA_UpdateViewerTitle(SUMA_SurfaceViewer *sv);
120 void SUMA_UpdateAllViewerCursor(void);
121 void SUMA_UpdateViewerCursor(SUMA_SurfaceViewer *sv);
122 float SUMA_DimSclFac(char *units, char *specie);
123 int SUMA_WhichViewerInMomentum(SUMA_SurfaceViewer *SVv,
124                                int N_SV, SUMA_SurfaceViewer *sv);
125 int SUMA_WhichGroup (SUMA_CommonFields *cf, char *nm);
126 SUMA_Boolean SUMA_RegisterGroup (SUMA_CommonFields *cf, char *gname);
127 SUMA_Boolean SUMA_RegisterSpecGroup (SUMA_CommonFields *cf,
128                                      SUMA_SurfSpecFile *spec);
129 SUMA_ASSEMBLE_LIST_STRUCT * SUMA_AssembleGroupList (SUMA_SurfaceViewer *sv);
130 SUMA_Boolean SUMA_SwitchGroups (SUMA_SurfaceViewer *sv, char *group);
131 SUMA_Boolean SUMA_AdoptGroup(SUMA_SurfaceViewer *csv, char *group);
132 const char * SUMA_Clip_Type_to_Clip_Name (SUMA_CLIP_PLANE_TYPES tp);
133 char * SUMA_Show_Clip_Planes_Info (SUMA_CommonFields *cf);
134 void SUMA_Show_Clip_Planes (SUMA_CommonFields *cf, FILE *out);
135 float SUMA_sv_auto_fov(SUMA_SurfaceViewer *sv);
136 SUMA_SurfaceViewer *SUMA_OneViewerWithADORegistered(SUMA_ALL_DO *ADO);
137 SUMA_SurfaceViewer *SUMA_OneViewerWithADOVisible(SUMA_ALL_DO *ADO);
138 SUMA_SurfaceViewer *SUMA_OneViewerWithADOinFocus(SUMA_ALL_DO *ADO);
139 SUMA_SurfaceViewer *SUMA_OneViewerWithSOinFocus(
140                               SUMA_SurfaceObject *curSO);
141 SUMA_SurfaceViewer *SUMA_OneViewerWithSOVisible(
142                               SUMA_SurfaceObject *curSO);
143 SUMA_SurfaceViewer *SUMA_OneViewerWithSORegistered(
144                               SUMA_SurfaceObject *curSO);
145 int SUMA_UpdateCrossHairNodeLabelFieldForDO(SUMA_ALL_DO *ado);
146 SUMA_SurfaceViewer *SUMA_BestViewerForADO(SUMA_ALL_DO *ado);
147 SUMA_PARSED_NAME *SUMA_SetAutoRecord(char *pref);
148 SUMA_SurfaceObject *SUMA_SV_Focus_SO(SUMA_SurfaceViewer *sv);
149 SUMA_SurfaceObject *SUMA_SV_Focus_any_SO(SUMA_SurfaceViewer *sv, int *dov_id);
150 SUMA_ALL_DO *SUMA_SV_Focus_ADO(SUMA_SurfaceViewer *sv);
151 SUMA_ALL_DO *SUMA_findanyFocusable_ADO(int *dov_id);
152 SUMA_ALL_DO *SUMA_SV_Focus_any_ADO(SUMA_SurfaceViewer *sv, int *dov_id);
153 SUMA_ALL_DO *SUMA_findany_ADO_WithSurfContWidget(int *dov_id,
154                                                  SUMA_DO_Types thisdotp);
155 SUMA_ALL_DO *SUMA_SV_any_ADO_WithSurfContWidget(SUMA_SurfaceViewer *sv,
156                                           int *dov_id, SUMA_DO_Types thisdotp);
157 SUMA_Boolean SUMA_SurfCont_SetcurDOp(SUMA_X_SurfCont *SurfCont,
158                                      SUMA_ALL_DO *ado);
159 SUMA_ALL_DO *SUMA_SurfCont_GetcurDOp(SUMA_X_SurfCont *SurfCont);
160 SUMA_Boolean SUMA_SetMouseMode(SUMA_SurfaceViewer *sv,
161                                SUMA_MOUSE_MODES mmode, void *val);
162 char *SUMA_ADO_ContName(SUMA_ALL_DO *ado);
163 int SUMA_SetObjectDisplayOrder(char *ord, int *otseq);
164 int SUMA_VerifyRenderOrder(char *ord, void *unused);
165 
166 
167 #endif
168