34 #ifdef G4VIS_BUILD_OPENGLXM_DRIVER 
   36 #ifndef G4OPENGLXMVIEWER_HH 
   37 #define G4OPENGLXMVIEWER_HH 
   44 class G4OpenGLXmTopLevelShell;
 
   45 class G4OpenGLXmRadioButton;
 
   46 class G4OpenGLXmPushButton;
 
   47 class G4OpenGLXmSliderBar;
 
   49 class G4OpenGLXmTextField;
 
   50 class G4OpenGLXmFramedBox;
 
   51 class G4OpenGLXmFourArrowButtons;
 
   52 class G4OpenGLXmSeparator;
 
   54 class G4OpenGLXmViewer: 
public G4OpenGLXViewer {
 
   57   G4OpenGLXmViewer (G4OpenGLSceneHandler& scene);
 
   58   virtual ~G4OpenGLXmViewer ();
 
   61   virtual void ShowView ();
 
   63   void GetXmConnection ();
 
   64   virtual void CreateMainWindow ();
 
   76                                     drawing_style_pullright,
 
   77                                     background_color_pullright, 
 
   78                                     transparency_pullright, 
 
  132   XtIntervalId                      rotation_timer,
 
  140   G4OpenGLXmTopLevelShell*          fprotation_top;
 
  141   G4OpenGLXmBox*                    fprotation_button_box;
 
  142   G4OpenGLXmRadioButton*            fprotation_button1;
 
  143   G4OpenGLXmRadioButton*            fprotation_button2;
 
  144   G4OpenGLXmBox*                    fprotation_slider_box;
 
  145   G4OpenGLXmSliderBar*              fprotation_slider;
 
  146   G4OpenGLXmBox*                    fprotation_arrow_box;
 
  147   G4OpenGLXmFourArrowButtons*       fprotation_arrow;
 
  149   G4OpenGLXmTopLevelShell*          fppanning_top; 
 
  150   G4OpenGLXmFramedBox*              fppanning_box;
 
  151   G4OpenGLXmFourArrowButtons*       fppanning_arrows;
 
  152   G4OpenGLXmSliderBar*              fppanning_slider;
 
  153   G4OpenGLXmFramedBox*              fpzoom_box;
 
  154   G4OpenGLXmSliderBar*              fpzoom_slider;
 
  155   G4OpenGLXmFramedBox*              fpdolly_box;
 
  156   G4OpenGLXmSliderBar*              fpdolly_slider;
 
  158   G4OpenGLXmTopLevelShell*          fpsetting_top;
 
  159   G4OpenGLXmFramedBox*              fpsetting_box;
 
  160   G4OpenGLXmTextField*              fppan_set;
 
  161   G4OpenGLXmTextField*              fprot_set;
 
  162   G4OpenGLXmTextField*              fpzoom_upper;
 
  163   G4OpenGLXmTextField*              fpzoom_lower;
 
  164   G4OpenGLXmTextField*              fpdolly_upper;
 
  165   G4OpenGLXmTextField*              fpdolly_lower;
 
  166   G4OpenGLXmPushButton*             fpok_button;
 
  168   G4OpenGLXmTopLevelShell*          fpmiscellany_top;
 
  169   G4OpenGLXmFramedBox*              fpwobble_box;
 
  170   G4OpenGLXmPushButton*             fpwobble_button;
 
  171   G4OpenGLXmSliderBar*              fpwobble_slider;
 
  172   G4OpenGLXmFramedBox*              fpreset_box;
 
  173   G4OpenGLXmPushButton*             fpreset_button;
 
  174   G4OpenGLXmFramedBox*              fpproj_style_box;
 
  175   G4OpenGLXmRadioButton*            fporthogonal_button;
 
  176   G4OpenGLXmRadioButton*            fpperspective_button;
 
  177   G4OpenGLXmTextField*              fpfov_text;
 
  179   G4OpenGLXmTopLevelShell*          fpprint_top;
 
  180   G4OpenGLXmFramedBox*              fpprint_box;
 
  181   G4OpenGLXmFramedBox*              fpprint_col_box;
 
  182   G4OpenGLXmFramedBox*              fpprint_style_box;
 
  183   G4OpenGLXmTextField*              fpprint_text;
 
  184   G4OpenGLXmPushButton*             fpprint_button;
 
  185   G4OpenGLXmSeparator*              fpprint_line;
 
  186   G4OpenGLXmRadioButton*            fpprint_col_radio1;
 
  187   G4OpenGLXmRadioButton*            fpprint_col_radio2;
 
  188   G4OpenGLXmRadioButton*            fpprint_style_radio1;
 
  189   G4OpenGLXmRadioButton*            fpprint_style_radio2;
 
  193   static void expose_callback (Widget w, 
 
  194                    XtPointer clientData, 
 
  197   static void resize_callback (Widget w, 
 
  198                    XtPointer clientData, 
 
  201   static void actions_callback (Widget w, 
 
  202                 XtPointer clientData, 
 
  205   static void misc_callback (Widget w, 
 
  206                  XtPointer clientData, 
 
  209   static void Add_set_field (
char* widget, 
 
  214                  G4OpenGLXmViewer* pView);
 
  216   static void zoom_callback (Widget w, 
 
  217                  XtPointer clientData, 
 
  220   static void dolly_callback (Widget w, 
 
  221                   XtPointer clientData, 
 
  224   static void pan_left_right_callback (Widget w, 
 
  225                        XtPointer clientData, 
 
  228   static void left_right_pan_callback (XtPointer clientData, 
 
  229                        XtIntervalId* timer_id); 
 
  231   static void theta_rotation_callback (Widget w, 
 
  232                        XtPointer clientData, 
 
  235   static void phi_rotation_callback (Widget w, 
 
  236                      XtPointer clientData, 
 
  239   static void pan_up_down_callback (Widget w, 
 
  240                     XtPointer clientData, 
 
  243   static void up_down_pan_callback (XtPointer clientData, 
 
  244                     XtIntervalId* timer_id); 
 
  246   static void drawing_style_callback (Widget w, 
 
  247                       XtPointer clientData, 
 
  250   static void background_color_callback (Widget w,
 
  251                      XtPointer clientData, 
 
  254   static void set_rot_subject_callback (Widget w, 
 
  255                     XtPointer clientData, 
 
  258   static void set_rot_sens_callback (Widget w, 
 
  259                      XtPointer clientData, 
 
  262   static void set_pan_sens_callback (Widget w, 
 
  263                      XtPointer clientData, 
 
  266   static void set_wob_sens_callback (Widget w, 
 
  267                      XtPointer clientData, 
 
  270   static void projection_callback (Widget w, 
 
  271                    XtPointer clientData, 
 
  274   static void wobble_callback (Widget w, 
 
  275                    XtPointer clientData, 
 
  278   static void reset_callback (Widget w, 
 
  279                   XtPointer clientData, 
 
  282   static void update_panels_callback (Widget w, 
 
  283                       XtPointer clientData, 
 
  286   static void wobble_timer_callback (XtPointer clientData, 
 
  287                      XtIntervalId* timerid);
 
  289   static void Add_radio_box (
char* label_string,
 
  290                  Widget* parent_frame_widget,
 
  291                  XtCallbackRec* radio_box_cb,
 
  293                  G4int default_button,
 
  294                  char* radio_box_name,
 
  296                  G4OpenGLXmViewer* pView);
 
  298   static void Add_four_arrow_buttons (G4OpenGLXmViewer* pView,
 
  299                       XtCallbackRec** arrow_callbacks,
 
  300                       Widget* parent_widget);
 
  302   static void Add_slider_box (
char* label_string,
 
  305                   G4OpenGLXmViewer* pView,
 
  311                   unsigned char* orientation,
 
  312                   unsigned char* direction,
 
  313                   XtCallbackRec** slider_box_cb,
 
  314                   Widget* parent_frame_widget);
 
  316   static void rotate_in_theta (XtPointer clientData,
 
  317                    XtIntervalId* timer_id);
 
  319   static void rotate_in_phi (XtPointer clientData,
 
  320                  XtIntervalId* timer_id);
 
  322   static void get_double_value_callback (Widget w, 
 
  323                      XtPointer clientData, 
 
  326   static void get_text_callback (Widget w, 
 
  327                  XtPointer clientData, 
 
  330   static void transparency_callback (Widget w, 
 
  331                      XtPointer clientData, 
 
  334   static void antialias_callback (Widget w, 
 
  335                   XtPointer clientData, 
 
  338   static void haloing_callback (Widget w, 
 
  339                 XtPointer clientData, 
 
  342   static void aux_edge_callback (Widget w, 
 
  343                 XtPointer clientData, 
 
  346   static void set_print_colour_callback (Widget w, 
 
  347                      XtPointer clientData, 
 
  350   static void set_print_style_callback (Widget w, 
 
  351                     XtPointer clientData, 
 
  354   static void print_callback (Widget w, 
 
  355                   XtPointer clientData, 
 
  358   static G4bool get_boolean_userData (Widget w);
 
  360   static G4int  get_int_userData (Widget w);
 
  362   friend class G4OpenGLXmVWidgetObject;
 
  363   friend class G4OpenGLXmViewerMessenger;
 
  366   G4OpenGLXmViewer (
const G4OpenGLXmViewer&);
 
  367   G4OpenGLXmViewer& operator = (
const G4OpenGLXmViewer&);
 
  368   void UpdateControlPanel();