source: trunk/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh@ 914

Last change on this file since 914 was 914, checked in by garnier, 17 years ago

test avec des predefined headers...mais +10% de temps de compilation....

  • Property svn:mime-type set to text/cpp
File size: 13.2 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id: G4OpenGLXmViewer.hh,v 1.10 2006/06/29 21:18:52 gunter Exp $
28// GEANT4 tag $Name: HEAD $
29//
30//
31// Andrew Walkden 10th February 1997
32// G4OpenGLXmViewer : Class derived from G4OpenGLXViewer, to provide
33// (Motif) widget OpenGL functionality for GEANT4.
34
35#ifdef G4VIS_BUILD_OPENGLXM_DRIVER
36
37#ifndef G4OPENGLXMVIEWER_HH
38#define G4OPENGLXMVIEWER_HH
39
40#include "G4OpenGLXViewer.hh"
41#include "globals.hh"
42
43#include <Xm/Xm.h>
44#include <Xm/MainW.h>
45#include <Xm/Label.h>
46#include <Xm/Form.h>
47#include <Xm/RowColumn.h>
48#include <Xm/PushB.h>
49#include <Xm/ToggleB.h>
50#include <Xm/ArrowBG.h>
51#include <Xm/CascadeB.h>
52#include <Xm/DrawingA.h>
53#include <Xm/Frame.h>
54#include <X11/keysym.h>
55#include <Xm/XmStrDefs.h>
56#include <X11/Xmu/StdCmap.h>
57#include <Xm/TextF.h>
58#include <Xm/ToggleB.h>
59#include <X11/Shell.h>
60#include <Xm/Separator.h>
61#include <Xm/Scale.h>
62
63class G4OpenGLXmTopLevelShell;
64class G4OpenGLXmRadioButton;
65class G4OpenGLXmPushButton;
66class G4OpenGLXmSliderBar;
67class G4OpenGLXmBox;
68class G4OpenGLXmTextField;
69class G4OpenGLXmFramedBox;
70class G4OpenGLXmFourArrowButtons;
71class G4OpenGLXmSeparator;
72
73class G4OpenGLXmViewer: public G4OpenGLXViewer {
74
75public:
76 G4OpenGLXmViewer (G4OpenGLSceneHandler& scene);
77 virtual ~G4OpenGLXmViewer ();
78
79protected:
80 virtual void ShowView ();
81 void GetXmConnection ();
82 virtual void CreateMainWindow ();
83
84 XtAppContext app;
85 XtWorkProcId workId;
86 Widget toplevel,
87 shell,
88 main_win,
89 menubar,
90 style_cascade,
91 actions_cascade,
92 misc_cascade,
93 spec_cascade,
94 rep_style_pullright,
95 drawing_style_pullright,
96 background_color_pullright,
97 transparency_pullright,
98 antialias_pullright,
99 haloing_pullright,
100 aux_edge_pullright,
101 frame,
102 glxarea;
103
104 XmString style_str,
105 actions_str,
106 misc_str,
107 spec_str,
108 rep_str,
109 draw_str,
110 polyhedron_str,
111 nurbs_str,
112 wireframe_str,
113 hlr_str,
114 hsr_str,
115 hlhsr_str,
116 set_str,
117 rot_str,
118 pan_str,
119 exit_str,
120 quit_str,
121 print_str,
122 white_str,
123 black_str,
124 anti_str,
125 trans_str,
126 halo_str,
127 aux_edge_str,
128 bgnd_str,
129 off_str,
130 on_str;
131
132 G4double zoom_high,
133 zoom_low,
134 pan_low,
135 pan_high,
136 dolly_low,
137 dolly_high,
138 fov,
139 rot_sens_limit,
140 pan_sens_limit,
141 rot_sens,
142 pan_sens,
143 wob_sens;
144
145 Pixel bgnd,
146 borcol;
147
148 G4bool pan_right,
149 rotate_right,
150 pan_up,
151 rotate_up;
152
153 XtIntervalId rotation_timer,
154 pan_timer,
155 wobble_timer;
156
157 G4Vector3D original_vp;
158
159 G4int frameNo;
160
161 G4OpenGLXmTopLevelShell* fprotation_top;
162 G4OpenGLXmBox* fprotation_button_box;
163 G4OpenGLXmRadioButton* fprotation_button1;
164 G4OpenGLXmRadioButton* fprotation_button2;
165 G4OpenGLXmBox* fprotation_slider_box;
166 G4OpenGLXmSliderBar* fprotation_slider;
167 G4OpenGLXmBox* fprotation_arrow_box;
168 G4OpenGLXmFourArrowButtons* fprotation_arrow;
169
170 G4OpenGLXmTopLevelShell* fppanning_top;
171 G4OpenGLXmFramedBox* fppanning_box;
172 G4OpenGLXmFourArrowButtons* fppanning_arrows;
173 G4OpenGLXmSliderBar* fppanning_slider;
174 G4OpenGLXmFramedBox* fpzoom_box;
175 G4OpenGLXmSliderBar* fpzoom_slider;
176 G4OpenGLXmFramedBox* fpdolly_box;
177 G4OpenGLXmSliderBar* fpdolly_slider;
178
179 G4OpenGLXmTopLevelShell* fpsetting_top;
180 G4OpenGLXmFramedBox* fpsetting_box;
181 G4OpenGLXmTextField* fppan_set;
182 G4OpenGLXmTextField* fprot_set;
183 G4OpenGLXmTextField* fpzoom_upper;
184 G4OpenGLXmTextField* fpzoom_lower;
185 G4OpenGLXmTextField* fpdolly_upper;
186 G4OpenGLXmTextField* fpdolly_lower;
187 G4OpenGLXmPushButton* fpok_button;
188
189 G4OpenGLXmTopLevelShell* fpmiscellany_top;
190 G4OpenGLXmFramedBox* fpwobble_box;
191 G4OpenGLXmPushButton* fpwobble_button;
192 G4OpenGLXmSliderBar* fpwobble_slider;
193 G4OpenGLXmFramedBox* fpreset_box;
194 G4OpenGLXmPushButton* fpreset_button;
195 G4OpenGLXmFramedBox* fpproj_style_box;
196 G4OpenGLXmRadioButton* fporthogonal_button;
197 G4OpenGLXmRadioButton* fpperspective_button;
198 G4OpenGLXmTextField* fpfov_text;
199
200 G4OpenGLXmTopLevelShell* fpprint_top;
201 G4OpenGLXmFramedBox* fpprint_box;
202 G4OpenGLXmFramedBox* fpprint_col_box;
203 G4OpenGLXmFramedBox* fpprint_style_box;
204 G4OpenGLXmTextField* fpprint_text;
205 G4OpenGLXmPushButton* fpprint_button;
206 G4OpenGLXmSeparator* fpprint_line;
207 G4OpenGLXmRadioButton* fpprint_col_radio1;
208 G4OpenGLXmRadioButton* fpprint_col_radio2;
209 G4OpenGLXmRadioButton* fpprint_style_radio1;
210 G4OpenGLXmRadioButton* fpprint_style_radio2;
211
212public:
213
214 static void expose_callback (Widget w,
215 XtPointer clientData,
216 XtPointer callData);
217
218 static void resize_callback (Widget w,
219 XtPointer clientData,
220 XtPointer callData);
221
222 static void actions_callback (Widget w,
223 XtPointer clientData,
224 XtPointer callData);
225
226 static void misc_callback (Widget w,
227 XtPointer clientData,
228 XtPointer callData);
229
230 static void Add_set_field (char* widget,
231 char* widget_text,
232 Widget* row_col_box,
233 Widget* wid,
234 G4double* val,
235 G4OpenGLXmViewer* pView);
236
237 static void zoom_callback (Widget w,
238 XtPointer clientData,
239 XtPointer callData);
240
241 static void dolly_callback (Widget w,
242 XtPointer clientData,
243 XtPointer callData);
244
245 static void pan_left_right_callback (Widget w,
246 XtPointer clientData,
247 XtPointer callData);
248
249 static void left_right_pan_callback (XtPointer clientData,
250 XtIntervalId* timer_id);
251
252 static void theta_rotation_callback (Widget w,
253 XtPointer clientData,
254 XtPointer callData);
255
256 static void phi_rotation_callback (Widget w,
257 XtPointer clientData,
258 XtPointer callData);
259
260 static void pan_up_down_callback (Widget w,
261 XtPointer clientData,
262 XtPointer callData);
263
264 static void up_down_pan_callback (XtPointer clientData,
265 XtIntervalId* timer_id);
266
267 static void drawing_style_callback (Widget w,
268 XtPointer clientData,
269 XtPointer callData);
270
271 static void rep_style_callback (Widget w,
272 XtPointer clientData,
273 XtPointer callData);
274
275 static void background_color_callback (Widget w,
276 XtPointer clientData,
277 XtPointer callData);
278
279 static void set_rot_subject_callback (Widget w,
280 XtPointer clientData,
281 XtPointer callData);
282
283 static void set_rot_sens_callback (Widget w,
284 XtPointer clientData,
285 XtPointer callData);
286
287 static void set_pan_sens_callback (Widget w,
288 XtPointer clientData,
289 XtPointer callData);
290
291 static void set_wob_sens_callback (Widget w,
292 XtPointer clientData,
293 XtPointer callData);
294
295 static void projection_callback (Widget w,
296 XtPointer clientData,
297 XtPointer callData);
298
299 static void wobble_callback (Widget w,
300 XtPointer clientData,
301 XtPointer callData);
302
303 static void reset_callback (Widget w,
304 XtPointer clientData,
305 XtPointer callData);
306
307 static void update_panels_callback (Widget w,
308 XtPointer clientData,
309 XtPointer callData);
310
311 static void wobble_timer_callback (XtPointer clientData,
312 XtIntervalId* timerid);
313
314 static void Add_radio_box (char* label_string,
315 Widget* parent_frame_widget,
316 XtCallbackRec* radio_box_cb,
317 G4int num_buttons,
318 G4int default_button,
319 char* radio_box_name,
320 char** button_names,
321 G4OpenGLXmViewer* pView);
322
323 static void Add_four_arrow_buttons (G4OpenGLXmViewer* pView,
324 XtCallbackRec** arrow_callbacks,
325 Widget* parent_widget);
326
327 static void Add_slider_box (char* label_string,
328 G4int num_sliders,
329 char** slider_name,
330 G4OpenGLXmViewer* pView,
331 G4double* min_array,
332 G4double* max_array,
333 G4double* value_array,
334 G4bool* show,
335 short* decimals,
336 unsigned char* orientation,
337 unsigned char* direction,
338 XtCallbackRec** slider_box_cb,
339 Widget* parent_frame_widget);
340
341 static void rotate_in_theta (XtPointer clientData,
342 XtIntervalId* timer_id);
343
344 static void rotate_in_phi (XtPointer clientData,
345 XtIntervalId* timer_id);
346
347 static void get_double_value_callback (Widget w,
348 XtPointer clientData,
349 XtPointer callData);
350
351 static void get_text_callback (Widget w,
352 XtPointer clientData,
353 XtPointer callData);
354
355 static void transparency_callback (Widget w,
356 XtPointer clientData,
357 XtPointer callData);
358
359 static void antialias_callback (Widget w,
360 XtPointer clientData,
361 XtPointer callData);
362
363 static void haloing_callback (Widget w,
364 XtPointer clientData,
365 XtPointer callData);
366
367 static void aux_edge_callback (Widget w,
368 XtPointer clientData,
369 XtPointer callData);
370
371 static void set_print_colour_callback (Widget w,
372 XtPointer clientData,
373 XtPointer callData);
374
375 static void set_print_style_callback (Widget w,
376 XtPointer clientData,
377 XtPointer callData);
378
379 static void print_callback (Widget w,
380 XtPointer clientData,
381 XtPointer callData);
382
383 static G4bool get_boolean_userData (Widget w);
384
385 static G4int get_int_userData (Widget w);
386
387 friend class G4OpenGLXmVWidgetObject;
388 friend class G4OpenGLXmViewerMessenger;
389
390private:
391 G4OpenGLXmViewer (const G4OpenGLXmViewer&);
392 G4OpenGLXmViewer& operator = (const G4OpenGLXmViewer&);
393
394};
395
396#endif
397
398#endif
399
Note: See TracBrowser for help on using the repository browser.