Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/OpenInventor/include/private/G4OpenInventorViewer.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 
 28 #ifndef G4OPENINVENTORVIEWER_HH
 29 #define G4OPENINVENTORVIEWER_HH
 30 
 31 // Inheritance :
 32 #include "G4VViewer.hh"
 33 
 34 class SoSelection;
 35 class SoPath;
 36 class SoCamera;
 37 class SoSensor;
 38 class SoNodeSensor;
 39 
 40 class Geant4_SoImageWriter;
 41 class Geant4_SoGL2PSAction;
 42 class G4OpenInventorSceneHandler;
 43 class G4VInteractorManager;
 44 class SbVec3f;
 45 
 46 //
 47 // Base class for various OpenInventorView classes.
 48 //
 49 class G4OpenInventorViewer: public G4VViewer {
 50 public: //G4VViewer
 51   virtual void DrawView();
 52   virtual void ShowView();
 53   virtual void ClearView();
 54   virtual void SetView();
 55   virtual void KernelVisitDecision();
 56 public:
 57   G4OpenInventorViewer(G4OpenInventorSceneHandler& scene,
 58            const G4String& name = "");
 59   virtual ~G4OpenInventorViewer();
 60 
 61 protected:
 62   virtual void ViewerRender() = 0;
 63   virtual SoCamera* GetCamera() = 0;
 64   void Escape();
 65   void WritePostScript(const G4String& file = "g4out.ps");
 66   void WritePDF(const G4String& file = "g4out.pdf");
 67   void WritePixmapPostScript(const G4String& file = "g4out.ps");
 68   void WriteInventor(const G4String& file = "g4out.iv");
 69   void SceneGraphStatistics();
 70   void EraseDetector();
 71   void EraseEvent();
 72   void SetPreviewAndFull();
 73   void SetPreview();
 74   void SetSolid();
 75   void SetWireFrame();
 76   void SetReducedWireFrame(bool);
 77   void UpdateScene();
 78   G4String Help(const G4String& topic = "controls");
 79 
 80 private:
 81   static void GroupCameraSensorCB(void*,SoSensor*);
 82   // FWJ no longer needed:
 83   //  static void CameraSensorCB(void*,SoSensor*);
 84   static void pointAt(SoCamera*,const SbVec3f & targetpoint, const SbVec3f & upvector);
 85   static void lookAt(SoCamera*,const SbVec3f & dir, const SbVec3f & up);
 86   static void lookedAt(SoCamera*,SbVec3f & dir, SbVec3f & up);
 87 private:
 88   G4bool CompareForKernelVisit(G4ViewParameters&);
 89   void DrawDetector();
 90 private:
 91   G4ViewParameters fLastVP;  // Memory for making kernel visit decisions.
 92 protected:
 93   static void SelectionCB(void*,SoPath*);
 94   G4OpenInventorSceneHandler& fG4OpenInventorSceneHandler;
 95   G4VInteractorManager* fInteractorManager;
 96   SoSelection* fSoSelection;
 97   Geant4_SoImageWriter* fSoImageWriter;
 98   Geant4_SoGL2PSAction* fGL2PSAction;
 99   SoNodeSensor* fGroupCameraSensor;
100   // FWJ no longer needed:
101   //  SoNodeSensor* fCameraSensor;
102 };
103 
104 #endif
105