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

Last change on this file since 844 was 631, checked in by garnier, 18 years ago

maj a jour par rapport au repository de geant4

  • 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: $
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 "G4OpenGLSceneHandler.hh"
42#include "globals.hh"
43
44#include <Xm/Xm.h>
45#include <Xm/MainW.h>
46#include <Xm/Label.h>
47#include <Xm/Form.h>
48#include <Xm/RowColumn.h>
49#include <Xm/PushB.h>
50#include <Xm/ToggleB.h>
51#include <Xm/ArrowBG.h>
52#include <Xm/CascadeB.h>
53#include <Xm/DrawingA.h>
54#include <Xm/Frame.h>
55#include <X11/keysym.h>
56#include <Xm/XmStrDefs.h>
57#include <X11/Xmu/StdCmap.h>
58#include <Xm/TextF.h>
59#include <Xm/ToggleB.h>
60#include <X11/Shell.h>
61#include <Xm/Separator.h>
62#include <Xm/Scale.h>
63
64class G4OpenGLXmTopLevelShell;
65class G4OpenGLXmRadioButton;
66class G4OpenGLXmPushButton;
67class G4OpenGLXmSliderBar;
68class G4OpenGLXmBox;
69class G4OpenGLXmTextField;
70class G4OpenGLXmFramedBox;
71class G4OpenGLXmFourArrowButtons;
72class G4OpenGLXmSeparator;
73
74class G4OpenGLXmViewer: public G4OpenGLXViewer {
75
76public:
77 G4OpenGLXmViewer (G4OpenGLSceneHandler& scene);
78 virtual ~G4OpenGLXmViewer ();
79
80protected:
81 virtual void ShowView ();
82 void GetXmConnection ();
83 virtual void CreateMainWindow ();
84
85 XtAppContext app;
86 XtWorkProcId workId;
87 Widget toplevel,
88 shell,
89 main_win,
90 menubar,
91 style_cascade,
92 actions_cascade,
93 misc_cascade,
94 spec_cascade,
95 rep_style_pullright,
96 drawing_style_pullright,
97 background_color_pullright,
98 transparency_pullright,
99 antialias_pullright,
100 haloing_pullright,
101 aux_edge_pullright,
102 frame,
103 glxarea;
104
105 XmString style_str,
106 actions_str,
107 misc_str,
108 spec_str,
109 rep_str,
110 draw_str,
111 polyhedron_str,
112 nurbs_str,
113 wireframe_str,
114 hlr_str,
115 hsr_str,
116 hlhsr_str,
117 set_str,
118 rot_str,
119 pan_str,
120 exit_str,
121 quit_str,
122 print_str,
123 white_str,
124 black_str,
125 anti_str,
126 trans_str,
127 halo_str,
128 aux_edge_str,
129 bgnd_str,
130 off_str,
131 on_str;
132
133 G4double zoom_high,
134 zoom_low,
135 pan_low,
136 pan_high,
137 dolly_low,
138 dolly_high,
139 fov,
140 rot_sens_limit,
141 pan_sens_limit,
142 rot_sens,
143 pan_sens,
144 wob_sens;
145
146 Pixel bgnd,
147 borcol;
148
149 G4bool pan_right,
150 rotate_right,
151 pan_up,
152 rotate_up;
153
154 XtIntervalId rotation_timer,
155 pan_timer,
156 wobble_timer;
157
158 G4Vector3D original_vp;
159
160 G4int frameNo;
161
162 G4OpenGLXmTopLevelShell* fprotation_top;
163 G4OpenGLXmBox* fprotation_button_box;
164 G4OpenGLXmRadioButton* fprotation_button1;
165 G4OpenGLXmRadioButton* fprotation_button2;
166 G4OpenGLXmBox* fprotation_slider_box;
167 G4OpenGLXmSliderBar* fprotation_slider;
168 G4OpenGLXmBox* fprotation_arrow_box;
169 G4OpenGLXmFourArrowButtons* fprotation_arrow;
170
171 G4OpenGLXmTopLevelShell* fppanning_top;
172 G4OpenGLXmFramedBox* fppanning_box;
173 G4OpenGLXmFourArrowButtons* fppanning_arrows;
174 G4OpenGLXmSliderBar* fppanning_slider;
175 G4OpenGLXmFramedBox* fpzoom_box;
176 G4OpenGLXmSliderBar* fpzoom_slider;
177 G4OpenGLXmFramedBox* fpdolly_box;
178 G4OpenGLXmSliderBar* fpdolly_slider;
179
180 G4OpenGLXmTopLevelShell* fpsetting_top;
181 G4OpenGLXmFramedBox* fpsetting_box;
182 G4OpenGLXmTextField* fppan_set;
183 G4OpenGLXmTextField* fprot_set;
184 G4OpenGLXmTextField* fpzoom_upper;
185 G4OpenGLXmTextField* fpzoom_lower;
186 G4OpenGLXmTextField* fpdolly_upper;
187 G4OpenGLXmTextField* fpdolly_lower;
188 G4OpenGLXmPushButton* fpok_button;
189
190 G4OpenGLXmTopLevelShell* fpmiscellany_top;
191 G4OpenGLXmFramedBox* fpwobble_box;
192 G4OpenGLXmPushButton* fpwobble_button;
193 G4OpenGLXmSliderBar* fpwobble_slider;
194 G4OpenGLXmFramedBox* fpreset_box;
195 G4OpenGLXmPushButton* fpreset_button;
196 G4OpenGLXmFramedBox* fpproj_style_box;
197 G4OpenGLXmRadioButton* fporthogonal_button;
198 G4OpenGLXmRadioButton* fpperspective_button;
199 G4OpenGLXmTextField* fpfov_text;
200
201 G4OpenGLXmTopLevelShell* fpprint_top;
202 G4OpenGLXmFramedBox* fpprint_box;
203 G4OpenGLXmFramedBox* fpprint_col_box;
204 G4OpenGLXmFramedBox* fpprint_style_box;
205 G4OpenGLXmTextField* fpprint_text;
206 G4OpenGLXmPushButton* fpprint_button;
207 G4OpenGLXmSeparator* fpprint_line;
208 G4OpenGLXmRadioButton* fpprint_col_radio1;
209 G4OpenGLXmRadioButton* fpprint_col_radio2;
210 G4OpenGLXmRadioButton* fpprint_style_radio1;
211 G4OpenGLXmRadioButton* fpprint_style_radio2;
212
213public:
214
215 static void expose_callback (Widget w,
216 XtPointer clientData,
217 XtPointer callData);
218
219 static void resize_callback (Widget w,
220 XtPointer clientData,
221 XtPointer callData);
222
223 static void actions_callback (Widget w,
224 XtPointer clientData,
225 XtPointer callData);
226
227 static void misc_callback (Widget w,
228 XtPointer clientData,
229 XtPointer callData);
230
231 static void Add_set_field (char* widget,
232 char* widget_text,
233 Widget* row_col_box,
234 Widget* wid,
235 G4double* val,
236 G4OpenGLXmViewer* pView);
237
238 static void zoom_callback (Widget w,
239 XtPointer clientData,
240 XtPointer callData);
241
242 static void dolly_callback (Widget w,
243 XtPointer clientData,
244 XtPointer callData);
245
246 static void pan_left_right_callback (Widget w,
247 XtPointer clientData,
248 XtPointer callData);
249
250 static void left_right_pan_callback (XtPointer clientData,
251 XtIntervalId* timer_id);
252
253 static void theta_rotation_callback (Widget w,
254 XtPointer clientData,
255 XtPointer callData);
256
257 static void phi_rotation_callback (Widget w,
258 XtPointer clientData,
259 XtPointer callData);
260
261 static void pan_up_down_callback (Widget w,
262 XtPointer clientData,
263 XtPointer callData);
264
265 static void up_down_pan_callback (XtPointer clientData,
266 XtIntervalId* timer_id);
267
268 static void drawing_style_callback (Widget w,
269 XtPointer clientData,
270 XtPointer callData);
271
272 static void rep_style_callback (Widget w,
273 XtPointer clientData,
274 XtPointer callData);
275
276 static void background_color_callback (Widget w,
277 XtPointer clientData,
278 XtPointer callData);
279
280 static void set_rot_subject_callback (Widget w,
281 XtPointer clientData,
282 XtPointer callData);
283
284 static void set_rot_sens_callback (Widget w,
285 XtPointer clientData,
286 XtPointer callData);
287
288 static void set_pan_sens_callback (Widget w,
289 XtPointer clientData,
290 XtPointer callData);
291
292 static void set_wob_sens_callback (Widget w,
293 XtPointer clientData,
294 XtPointer callData);
295
296 static void projection_callback (Widget w,
297 XtPointer clientData,
298 XtPointer callData);
299
300 static void wobble_callback (Widget w,
301 XtPointer clientData,
302 XtPointer callData);
303
304 static void reset_callback (Widget w,
305 XtPointer clientData,
306 XtPointer callData);
307
308 static void update_panels_callback (Widget w,
309 XtPointer clientData,
310 XtPointer callData);
311
312 static void wobble_timer_callback (XtPointer clientData,
313 XtIntervalId* timerid);
314
315 static void Add_radio_box (char* label_string,
316 Widget* parent_frame_widget,
317 XtCallbackRec* radio_box_cb,
318 G4int num_buttons,
319 G4int default_button,
320 char* radio_box_name,
321 char** button_names,
322 G4OpenGLXmViewer* pView);
323
324 static void Add_four_arrow_buttons (G4OpenGLXmViewer* pView,
325 XtCallbackRec** arrow_callbacks,
326 Widget* parent_widget);
327
328 static void Add_slider_box (char* label_string,
329 G4int num_sliders,
330 char** slider_name,
331 G4OpenGLXmViewer* pView,
332 G4double* min_array,
333 G4double* max_array,
334 G4double* value_array,
335 G4bool* show,
336 short* decimals,
337 unsigned char* orientation,
338 unsigned char* direction,
339 XtCallbackRec** slider_box_cb,
340 Widget* parent_frame_widget);
341
342 static void rotate_in_theta (XtPointer clientData,
343 XtIntervalId* timer_id);
344
345 static void rotate_in_phi (XtPointer clientData,
346 XtIntervalId* timer_id);
347
348 static void get_double_value_callback (Widget w,
349 XtPointer clientData,
350 XtPointer callData);
351
352 static void get_text_callback (Widget w,
353 XtPointer clientData,
354 XtPointer callData);
355
356 static void transparency_callback (Widget w,
357 XtPointer clientData,
358 XtPointer callData);
359
360 static void antialias_callback (Widget w,
361 XtPointer clientData,
362 XtPointer callData);
363
364 static void haloing_callback (Widget w,
365 XtPointer clientData,
366 XtPointer callData);
367
368 static void aux_edge_callback (Widget w,
369 XtPointer clientData,
370 XtPointer callData);
371
372 static void set_print_colour_callback (Widget w,
373 XtPointer clientData,
374 XtPointer callData);
375
376 static void set_print_style_callback (Widget w,
377 XtPointer clientData,
378 XtPointer callData);
379
380 static void print_callback (Widget w,
381 XtPointer clientData,
382 XtPointer callData);
383
384 static G4bool get_boolean_userData (Widget w);
385
386 static G4int get_int_userData (Widget w);
387
388 friend class G4OpenGLXmVWidgetObject;
389 friend class G4OpenGLXmViewerMessenger;
390
391private:
392 G4OpenGLXmViewer (const G4OpenGLXmViewer&);
393 G4OpenGLXmViewer& operator = (const G4OpenGLXmViewer&);
394
395};
396
397#endif
398
399#endif
400
Note: See TracBrowser for help on using the repository browser.