Files
geant4/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh
T
2016-06-08 16:03:00 +02:00

375 lines
12 KiB
C++

// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4OpenGLXmViewer.hh,v 1.5 2001/02/23 15:43:10 johna Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// Andrew Walkden 10th February 1997
// G4OpenGLXmViewer : Class derived from G4OpenGLXViewer, to provide
// (Motif) widget OpenGL functionality for GEANT4.
#ifdef G4VIS_BUILD_OPENGLXM_DRIVER
#ifndef G4OPENGLXMVIEWER_HH
#define G4OPENGLXMVIEWER_HH
#include "G4OpenGLXViewer.hh"
#include "G4OpenGLSceneHandler.hh"
#include "globals.hh"
#include <Xm/Xm.h>
#include <Xm/MainW.h>
#include <Xm/Label.h>
#include <Xm/Form.h>
#include <Xm/RowColumn.h>
#include <Xm/PushB.h>
#include <Xm/ToggleB.h>
#include <Xm/ArrowBG.h>
#include <Xm/CascadeB.h>
#include <Xm/DrawingA.h>
#include <Xm/Frame.h>
#include <X11/keysym.h>
#include <Xm/XmStrDefs.h>
#include <X11/Xmu/StdCmap.h>
#include <Xm/TextF.h>
#include <Xm/ToggleB.h>
#include <X11/Shell.h>
#include <Xm/Separator.h>
#include <Xm/Scale.h>
class G4OpenGLXmTopLevelShell;
class G4OpenGLXmRadioButton;
class G4OpenGLXmPushButton;
class G4OpenGLXmSliderBar;
class G4OpenGLXmBox;
class G4OpenGLXmTextField;
class G4OpenGLXmFramedBox;
class G4OpenGLXmFourArrowButtons;
class G4OpenGLXmSeparator;
class G4OpenGLXmViewer: public G4OpenGLXViewer {
public:
G4OpenGLXmViewer (G4OpenGLSceneHandler& scene);
virtual ~G4OpenGLXmViewer ();
protected:
virtual void ShowView ();
void GetXmConnection ();
virtual void CreateMainWindow ();
XtAppContext app;
XtWorkProcId workId;
Widget toplevel,
shell,
main_win,
menubar,
style_cascade,
actions_cascade,
misc_cascade,
spec_cascade,
rep_style_pullright,
drawing_style_pullright,
background_color_pullright,
transparency_pullright,
antialias_pullright,
haloing_pullright,
frame,
glxarea;
XmString style_str,
actions_str,
misc_str,
spec_str,
rep_str,
draw_str,
polyhedron_str,
nurbs_str,
wireframe_str,
hlr_str,
hsr_str,
hlhsr_str,
set_str,
rot_str,
pan_str,
exit_str,
quit_str,
print_str,
white_str,
black_str,
anti_str,
trans_str,
halo_str,
bgnd_str,
off_str,
on_str;
G4double zoom_high,
zoom_low,
pan_low,
pan_high,
dolly_low,
dolly_high,
fov,
rot_sens_limit,
pan_sens_limit,
rot_sens,
pan_sens,
wob_sens;
Pixel bgnd,
borcol;
G4bool pan_right,
rotate_right,
pan_up,
rotate_up;
XtIntervalId rotation_timer,
pan_timer,
wobble_timer;
G4Vector3D original_vp;
G4int frameNo;
G4OpenGLXmTopLevelShell* fprotation_top;
G4OpenGLXmBox* fprotation_button_box;
G4OpenGLXmRadioButton* fprotation_button1;
G4OpenGLXmRadioButton* fprotation_button2;
G4OpenGLXmBox* fprotation_slider_box;
G4OpenGLXmSliderBar* fprotation_slider;
G4OpenGLXmBox* fprotation_arrow_box;
G4OpenGLXmFourArrowButtons* fprotation_arrow;
G4OpenGLXmTopLevelShell* fppanning_top;
G4OpenGLXmFramedBox* fppanning_box;
G4OpenGLXmFourArrowButtons* fppanning_arrows;
G4OpenGLXmSliderBar* fppanning_slider;
G4OpenGLXmFramedBox* fpzoom_box;
G4OpenGLXmSliderBar* fpzoom_slider;
G4OpenGLXmFramedBox* fpdolly_box;
G4OpenGLXmSliderBar* fpdolly_slider;
G4OpenGLXmTopLevelShell* fpsetting_top;
G4OpenGLXmFramedBox* fpsetting_box;
G4OpenGLXmTextField* fppan_set;
G4OpenGLXmTextField* fprot_set;
G4OpenGLXmTextField* fpzoom_upper;
G4OpenGLXmTextField* fpzoom_lower;
G4OpenGLXmTextField* fpdolly_upper;
G4OpenGLXmTextField* fpdolly_lower;
G4OpenGLXmPushButton* fpok_button;
G4OpenGLXmTopLevelShell* fpmiscellany_top;
G4OpenGLXmFramedBox* fpwobble_box;
G4OpenGLXmPushButton* fpwobble_button;
G4OpenGLXmSliderBar* fpwobble_slider;
G4OpenGLXmFramedBox* fpreset_box;
G4OpenGLXmPushButton* fpreset_button;
G4OpenGLXmFramedBox* fpproj_style_box;
G4OpenGLXmRadioButton* fporthogonal_button;
G4OpenGLXmRadioButton* fpperspective_button;
G4OpenGLXmTextField* fpfov_text;
G4OpenGLXmTopLevelShell* fpprint_top;
G4OpenGLXmFramedBox* fpprint_box;
G4OpenGLXmFramedBox* fpprint_col_box;
G4OpenGLXmFramedBox* fpprint_style_box;
G4OpenGLXmTextField* fpprint_text;
G4OpenGLXmPushButton* fpprint_button;
G4OpenGLXmSeparator* fpprint_line;
G4OpenGLXmRadioButton* fpprint_col_radio1;
G4OpenGLXmRadioButton* fpprint_col_radio2;
G4OpenGLXmRadioButton* fpprint_style_radio1;
G4OpenGLXmRadioButton* fpprint_style_radio2;
public:
static void expose_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void resize_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void actions_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void misc_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void Add_set_field (char* widget,
char* widget_text,
Widget* row_col_box,
Widget* wid,
G4double* val,
G4OpenGLXmViewer* pView);
static void zoom_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void dolly_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void pan_left_right_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void left_right_pan_callback (XtPointer clientData,
XtIntervalId* timer_id);
static void theta_rotation_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void phi_rotation_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void pan_up_down_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void up_down_pan_callback (XtPointer clientData,
XtIntervalId* timer_id);
static void drawing_style_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void rep_style_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void background_color_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void set_rot_subject_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void set_rot_sens_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void set_pan_sens_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void set_wob_sens_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void projection_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void wobble_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void reset_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void update_panels_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void wobble_timer_callback (XtPointer clientData,
XtIntervalId* timerid);
static void Add_radio_box (char* label_string,
Widget* parent_frame_widget,
XtCallbackRec* radio_box_cb,
G4int num_buttons,
G4int default_button,
char* radio_box_name,
char** button_names,
G4OpenGLXmViewer* pView);
static void Add_four_arrow_buttons (G4OpenGLXmViewer* pView,
XtCallbackRec** arrow_callbacks,
Widget* parent_widget);
static void Add_slider_box (char* label_string,
G4int num_sliders,
char** slider_name,
G4OpenGLXmViewer* pView,
G4double* min_array,
G4double* max_array,
G4double* value_array,
G4bool* show,
short* decimals,
unsigned char* orientation,
unsigned char* direction,
XtCallbackRec** slider_box_cb,
Widget* parent_frame_widget);
static void rotate_in_theta (XtPointer clientData,
XtIntervalId* timer_id);
static void rotate_in_phi (XtPointer clientData,
XtIntervalId* timer_id);
static void get_double_value_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void get_text_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void transparency_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void antialias_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void haloing_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void set_print_colour_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void set_print_style_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static void print_callback (Widget w,
XtPointer clientData,
XtPointer callData);
static G4bool get_boolean_userData (Widget w);
static G4int get_int_userData (Widget w);
friend class G4OpenGLXmVWidgetObject;
private:
G4OpenGLXmViewer (const G4OpenGLXmViewer&);
G4OpenGLXmViewer& operator = (const G4OpenGLXmViewer&);
};
#endif
#endif