Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/management/include/G4ViewParameters.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 ]

Diff markup

Differences between /visualization/management/include/G4ViewParameters.hh (Version 11.3.0) and /visualization/management/include/G4ViewParameters.hh (Version 11.2.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27 //                                                 27 //
 28 //                                                 28 // 
 29 // John Allison  19th July 1996                    29 // John Allison  19th July 1996
 30 //                                                 30 //
 31 // Class description                               31 // Class description
 32 //                                                 32 //
 33 // View parameters and options.                    33 // View parameters and options.
 34 //                                                 34 //
 35 // THE STANDARD VIEW AND ALL THAT.                 35 // THE STANDARD VIEW AND ALL THAT.
 36 //                                                 36 //
 37 // In GEANT4 visualization, we have the concep     37 // In GEANT4 visualization, we have the concept of a "Standard
 38 // View".  This is the view when the complete      38 // View".  This is the view when the complete set of objects being
 39 // viewed is comfortably in view from any view     39 // viewed is comfortably in view from any viewpoint.  It is defined by
 40 // the "Bounding Extent" of "visible" objects      40 // the "Bounding Extent" of "visible" objects when initially
 41 // registered in the scene, and by the View Pa     41 // registered in the scene, and by the View Parameters.
 42 //                                                 42 //
 43 // There is also the "Standard Target Point",      43 // There is also the "Standard Target Point", which is the centre of
 44 // the Bounding Extent (note that this belongs     44 // the Bounding Extent (note that this belongs to the scene and is
 45 // stored in the G4Scene object).  The "Curren     45 // stored in the G4Scene object).  The "Current Target Point", defined
 46 // relative to the Standard Target Point, is c     46 // relative to the Standard Target Point, is changed by the
 47 // "dolly" and "zoom" commands, and can be res     47 // "dolly" and "zoom" commands, and can be reset to the Standard
 48 // Target Point with the "/vis/viewer/reset" c     48 // Target Point with the "/vis/viewer/reset" command.
 49 //                                                 49 //
 50 // Also, the "Standard Camera Position" is the     50 // Also, the "Standard Camera Position" is the "Standard Camera
 51 // Distance" along the Viewpoint Direction vec     51 // Distance" along the Viewpoint Direction vector from the Standard
 52 // Target Point.  The Standard Camera Distance     52 // Target Point.  The Standard Camera Distance is the radius of the
 53 // Bounding Extent divided by fFieldHalfAngle.     53 // Bounding Extent divided by fFieldHalfAngle.  It is not stored
 54 // explicitly because of the singularity at fF     54 // explicitly because of the singularity at fFieldHalfAngle = 0,
 55 // which implies parallel projection.              55 // which implies parallel projection.
 56 //                                                 56 //
 57 // Similarly, the "Current Camera Position" is     57 // Similarly, the "Current Camera Position" is the "Current Camera
 58 // Distance" along the Viewpoint Direction vec     58 // Distance" along the Viewpoint Direction vector from the Current
 59 // Target Point.  The Current Camera Distance      59 // Target Point.  The Current Camera Distance is given by the formulae
 60 // below, but note that it can be negative, me     60 // below, but note that it can be negative, meaning that the camera
 61 // has moved *beyond* the Current Target Point     61 // has moved *beyond* the Current Target Point, which is
 62 // conceptually possible, but which might give     62 // conceptually possible, but which might give some problems when
 63 // setting up the view matrix - see, for examp     63 // setting up the view matrix - see, for example, G4OpenGLView::SetView ().
 64 //                                                 64 //
 65 // All viewers are expected to keep the "Up Ve     65 // All viewers are expected to keep the "Up Vector" vertical unless
 66 // RotationStyle is freeRotation.                  66 // RotationStyle is freeRotation.
 67 //                                                 67 //
 68 // Finally, the view is magnified by the "Zoom     68 // Finally, the view is magnified by the "Zoom Factor" which is
 69 // reset to 1 by the "/vis/viewer/reset" comma     69 // reset to 1 by the "/vis/viewer/reset" command.
 70 //                                                 70 //
 71 // The algorithms for calculating various usef     71 // The algorithms for calculating various useful quantities from the
 72 // View Parameters, such as GetCameraDistance,     72 // View Parameters, such as GetCameraDistance, are described below.
 73                                                    73 
 74 #ifndef G4VIEWPARAMETERS_HH                        74 #ifndef G4VIEWPARAMETERS_HH
 75 #define G4VIEWPARAMETERS_HH                        75 #define G4VIEWPARAMETERS_HH
 76                                                    76 
 77 #include <CLHEP/Units/SystemOfUnits.h>             77 #include <CLHEP/Units/SystemOfUnits.h>
 78 #include "G4Vector3D.hh"                           78 #include "G4Vector3D.hh"
 79 #include "G4Point3D.hh"                            79 #include "G4Point3D.hh"
 80 #include "G4Plane3D.hh"                            80 #include "G4Plane3D.hh"
 81 #include "G4VisAttributes.hh"                      81 #include "G4VisAttributes.hh"
 82 #include "G4VMarker.hh"                            82 #include "G4VMarker.hh"
 83 #include "G4ModelingParameters.hh"                 83 #include "G4ModelingParameters.hh"
 84                                                    84 
 85 #include <vector>                                  85 #include <vector>
 86 #include <utility>                                 86 #include <utility>
 87                                                    87 
 88 typedef std::vector<G4Plane3D> G4Planes;           88 typedef std::vector<G4Plane3D> G4Planes;
 89                                                    89 
 90 class G4ViewParameters {                           90 class G4ViewParameters {
 91                                                    91 
 92 public: // With description                        92 public: // With description
 93                                                    93 
 94   enum DrawingStyle {                              94   enum DrawingStyle {
 95     wireframe,  // Draw edges    - no hidden l     95     wireframe,  // Draw edges    - no hidden line removal.
 96     hlr,        // Draw edges    - hidden line     96     hlr,        // Draw edges    - hidden lines removed.
 97     hsr,        // Draw surfaces - hidden surf     97     hsr,        // Draw surfaces - hidden surfaces removed.
 98     hlhsr,      // Draw surfaces and edges - h     98     hlhsr,      // Draw surfaces and edges - hidden removed.
 99     cloud       // Draw volume as a cloud of d     99     cloud       // Draw volume as a cloud of dots.
100   };                                              100   };
101                                                   101 
102   enum CutawayMode {                              102   enum CutawayMode {
103     cutawayUnion,       // Union (addition) of    103     cutawayUnion,       // Union (addition) of result of each cutaway plane.
104     cutawayIntersection // Intersection (multi    104     cutawayIntersection // Intersection (multiplication).
105   };                                              105   };
106                                                   106 
107   enum RotationStyle {                            107   enum RotationStyle {
108     constrainUpDirection,  // Standard, HEP co    108     constrainUpDirection,  // Standard, HEP convention.
109     freeRotation           // Free, Google-lik    109     freeRotation           // Free, Google-like rotation, using mouse-grab.
110   };                                              110   };
111                                                   111 
112   enum SMROption {  // Special Mesh Rendering     112   enum SMROption {  // Special Mesh Rendering Option
113     meshAsDefault,                                113     meshAsDefault,
114     meshAsDots,                                   114     meshAsDots,
115     meshAsSurfaces                                115     meshAsSurfaces
116   };                                              116   };
117                                                   117 
118   friend std::ostream& operator <<                118   friend std::ostream& operator <<
119   (std::ostream&, DrawingStyle);                  119   (std::ostream&, DrawingStyle);
120                                                   120 
121   friend std::ostream& operator <<                121   friend std::ostream& operator <<
122   (std::ostream&, SMROption);                     122   (std::ostream&, SMROption);
123                                                   123 
124   friend std::ostream& operator <<                124   friend std::ostream& operator <<
125   (std::ostream&, const G4ViewParameters&);       125   (std::ostream&, const G4ViewParameters&);
126                                                   126 
127   G4ViewParameters ();                            127   G4ViewParameters ();
128   ~G4ViewParameters ();                           128   ~G4ViewParameters ();
129                                                   129 
130   // Note: uses default assignment operator an    130   // Note: uses default assignment operator and copy constructor.
131                                                   131 
132   G4bool operator != (const G4ViewParameters&)    132   G4bool operator != (const G4ViewParameters&) const;
133                                                   133 
134   // Get and Is functions.                        134   // Get and Is functions.
135         DrawingStyle     GetDrawingStyle          135         DrawingStyle     GetDrawingStyle         () const;
136         G4int            GetNumberOfCloudPoint    136         G4int            GetNumberOfCloudPoints  () const;
137         G4bool           IsAuxEdgeVisible         137         G4bool           IsAuxEdgeVisible        () const;
138         G4bool           IsCulling                138         G4bool           IsCulling               () const;
139         G4bool           IsCullingInvisible       139         G4bool           IsCullingInvisible      () const;
140         G4bool           IsDensityCulling         140         G4bool           IsDensityCulling        () const;
141         G4double         GetVisibleDensity        141         G4double         GetVisibleDensity       () const;
142         G4bool           IsCullingCovered         142         G4bool           IsCullingCovered        () const;
143         G4int            GetCBDAlgorithmNumber    143         G4int            GetCBDAlgorithmNumber   () const;
144   const std::vector<G4double>& GetCBDParameter    144   const std::vector<G4double>& GetCBDParameters  () const;
145         G4bool           IsSection                145         G4bool           IsSection               () const;
146   const G4Plane3D&       GetSectionPlane          146   const G4Plane3D&       GetSectionPlane         () const;
147         G4bool           IsCutaway                147         G4bool           IsCutaway               () const;
148         CutawayMode      GetCutawayMode           148         CutawayMode      GetCutawayMode          () const;
149   const G4Planes&        GetCutawayPlanes         149   const G4Planes&        GetCutawayPlanes        () const;
150         G4bool           IsExplode                150         G4bool           IsExplode               () const;
151         G4double         GetExplodeFactor         151         G4double         GetExplodeFactor        () const;
152   const G4Point3D&       GetExplodeCentre         152   const G4Point3D&       GetExplodeCentre        () const;
153         G4int            GetNoOfSides             153         G4int            GetNoOfSides            () const;
154   const G4Vector3D&      GetViewpointDirection    154   const G4Vector3D&      GetViewpointDirection   () const;
155   const G4Vector3D&      GetUpVector              155   const G4Vector3D&      GetUpVector             () const;
156         G4double         GetFieldHalfAngle        156         G4double         GetFieldHalfAngle       () const;
157         G4double         GetZoomFactor            157         G4double         GetZoomFactor           () const;
158   const G4Vector3D&      GetScaleFactor           158   const G4Vector3D&      GetScaleFactor          () const;
159   const G4Point3D&       GetCurrentTargetPoint    159   const G4Point3D&       GetCurrentTargetPoint   () const;
160         G4double         GetDolly                 160         G4double         GetDolly                () const;
161         G4bool           GetLightsMoveWithCame    161         G4bool           GetLightsMoveWithCamera () const;
162   const G4Vector3D&      GetLightpointDirectio    162   const G4Vector3D&      GetLightpointDirection  () const;  // Relative...
163         G4Vector3D&      GetActualLightpointDi    163         G4Vector3D&      GetActualLightpointDirection  ();  // Actual...
164   // ... depending on GetLightsMoveWithCamera.    164   // ... depending on GetLightsMoveWithCamera.
165   const G4VisAttributes* GetDefaultVisAttribut    165   const G4VisAttributes* GetDefaultVisAttributes () const;
166   const G4VisAttributes* GetDefaultTextVisAttr    166   const G4VisAttributes* GetDefaultTextVisAttributes () const;
167   const G4VMarker&       GetDefaultMarker         167   const G4VMarker&       GetDefaultMarker        () const;
168         G4double         GetGlobalMarkerScale     168         G4double         GetGlobalMarkerScale    () const;
169         G4double         GetGlobalLineWidthSca    169         G4double         GetGlobalLineWidthScale () const;
170         G4bool           IsMarkerNotHidden        170         G4bool           IsMarkerNotHidden       () const;
171         unsigned int     GetWindowSizeHintX       171         unsigned int     GetWindowSizeHintX      () const;
172         unsigned int     GetWindowSizeHintY       172         unsigned int     GetWindowSizeHintY      () const;
173         G4int            GetWindowAbsoluteLoca    173         G4int            GetWindowAbsoluteLocationHintX (G4int) const;
174         G4int            GetWindowAbsoluteLoca    174         G4int            GetWindowAbsoluteLocationHintY (G4int) const;
175         G4int            GetWindowLocationHint    175         G4int            GetWindowLocationHintX  () const;
176         G4int            GetWindowLocationHint    176         G4int            GetWindowLocationHintY  () const;
177         G4bool           IsWindowLocationHintX    177         G4bool           IsWindowLocationHintXNegative () const;
178         G4bool           IsWindowLocationHintY    178         G4bool           IsWindowLocationHintYNegative () const;
179   const G4String&        GetXGeometryString       179   const G4String&        GetXGeometryString      () const;
180   // GetXGeometryString is intended to be pars    180   // GetXGeometryString is intended to be parsed by XParseGeometry.
181   // It contains the size information, as in G    181   // It contains the size information, as in GetWindowSizeHint, but
182   // may also contain the window position, e.g    182   // may also contain the window position, e.g., "600x600-0+200.  The
183   // viewer should use this in preference to G    183   // viewer should use this in preference to GetWindowSizeHint, since
184   // it contains more information.  (The size     184   // it contains more information.  (The size information in
185   // GetXGeometryString and GetWindowSizeHint     185   // GetXGeometryString and GetWindowSizeHint is guaranteed to be
186   // identical.)                                  186   // identical.)
187         bool             IsWindowSizeHintX        187         bool             IsWindowSizeHintX       () const;
188         bool             IsWindowSizeHintY        188         bool             IsWindowSizeHintY       () const;
189         bool             IsWindowLocationHintX    189         bool             IsWindowLocationHintX   () const;
190         bool             IsWindowLocationHintY    190         bool             IsWindowLocationHintY   () const;
191         G4bool           IsAutoRefresh            191         G4bool           IsAutoRefresh           () const;
192   const G4Colour&  GetBackgroundColour            192   const G4Colour&  GetBackgroundColour           () const;
193         G4bool           IsPicking                193         G4bool           IsPicking               () const;
194         RotationStyle    GetRotationStyle         194         RotationStyle    GetRotationStyle        () const;
195   const std::vector<G4ModelingParameters::VisA    195   const std::vector<G4ModelingParameters::VisAttributesModifier>&
196                          GetVisAttributesModif    196                          GetVisAttributesModifiers () const;
197         G4double         GetStartTime             197         G4double         GetStartTime            () const;
198         G4double         GetEndTime               198         G4double         GetEndTime              () const;
199         G4double         GetFadeFactor            199         G4double         GetFadeFactor           () const;
200         G4bool           IsDisplayHeadTime        200         G4bool           IsDisplayHeadTime       () const;
201         G4double         GetDisplayHeadTimeX      201         G4double         GetDisplayHeadTimeX     () const;
202         G4double         GetDisplayHeadTimeY      202         G4double         GetDisplayHeadTimeY     () const;
203         G4double         GetDisplayHeadTimeSiz    203         G4double         GetDisplayHeadTimeSize  () const;
204         G4double         GetDisplayHeadTimeRed    204         G4double         GetDisplayHeadTimeRed   () const;
205         G4double         GetDisplayHeadTimeGre    205         G4double         GetDisplayHeadTimeGreen () const;
206         G4double         GetDisplayHeadTimeBlu    206         G4double         GetDisplayHeadTimeBlue  () const;
207         G4bool           IsDisplayLightFront      207         G4bool           IsDisplayLightFront     () const;
208         G4double         GetDisplayLightFrontX    208         G4double         GetDisplayLightFrontX   () const;
209         G4double         GetDisplayLightFrontY    209         G4double         GetDisplayLightFrontY   () const;
210         G4double         GetDisplayLightFrontZ    210         G4double         GetDisplayLightFrontZ   () const;
211         G4double         GetDisplayLightFrontT    211         G4double         GetDisplayLightFrontT   () const;
212         G4double         GetDisplayLightFrontR    212         G4double         GetDisplayLightFrontRed () const;
213         G4double         GetDisplayLightFrontG    213         G4double         GetDisplayLightFrontGreen () const;
214         G4double         GetDisplayLightFrontB    214         G4double         GetDisplayLightFrontBlue () const;
215         G4bool           IsSpecialMeshRenderin    215         G4bool           IsSpecialMeshRendering  () const;
216         SMROption        GetSpecialMeshRenderi    216         SMROption        GetSpecialMeshRenderingOption () const;
217   const std::vector<G4ModelingParameters::PVNa    217   const std::vector<G4ModelingParameters::PVNameCopyNo>& GetSpecialMeshVolumes() const;
218                                                   218 
219   // Here Follow functions to evaluate useful     219   // Here Follow functions to evaluate useful quantities as a
220   // function of the radius of the Bounding Ex    220   // function of the radius of the Bounding Extent of the object being
221   // viewed.  Call them in the order given - f    221   // viewed.  Call them in the order given - for efficiency, later
222   // functions depend on the results of earlie    222   // functions depend on the results of earlier ones (Store the
223   // results of earlier functions in your own     223   // results of earlier functions in your own temporary variables -
224   // see, for example, G4OpenGLView::SetView (    224   // see, for example, G4OpenGLView::SetView ().)
225   G4double GetCameraDistance  (G4double radius    225   G4double GetCameraDistance  (G4double radius) const;
226   G4double GetNearDistance    (G4double camera    226   G4double GetNearDistance    (G4double cameraDistance, G4double radius) const;
227   G4double GetFarDistance     (G4double camera    227   G4double GetFarDistance     (G4double cameraDistance,
228              G4double nearDistance, G4double r    228              G4double nearDistance, G4double radius) const;
229   G4double GetFrontHalfHeight (G4double nearDi    229   G4double GetFrontHalfHeight (G4double nearDistance, G4double radius) const;
230                                                   230 
231   // Set, Add, Multiply, Increment, Unset and     231   // Set, Add, Multiply, Increment, Unset and Clear functions.
232   void SetDrawingStyle         (G4ViewParamete    232   void SetDrawingStyle         (G4ViewParameters::DrawingStyle style);
233   G4int SetNumberOfCloudPoints (G4int);  // Re    233   G4int SetNumberOfCloudPoints (G4int);  // Returns number actually set.
234   void SetAuxEdgeVisible       (G4bool);          234   void SetAuxEdgeVisible       (G4bool);
235   void SetCulling              (G4bool);          235   void SetCulling              (G4bool);
236   void SetCullingInvisible     (G4bool);          236   void SetCullingInvisible     (G4bool);
237   void SetDensityCulling       (G4bool);          237   void SetDensityCulling       (G4bool);
238   void SetVisibleDensity       (G4double visib    238   void SetVisibleDensity       (G4double visibleDensity);
239   void SetCullingCovered       (G4bool);          239   void SetCullingCovered       (G4bool);
240   void SetCBDAlgorithmNumber   (G4int);           240   void SetCBDAlgorithmNumber   (G4int);
241   void SetCBDParameters        (const std::vec    241   void SetCBDParameters        (const std::vector<G4double>&);
242   void SetSectionPlane         (const G4Plane3    242   void SetSectionPlane         (const G4Plane3D& sectionPlane);
243   void UnsetSectionPlane       ();                243   void UnsetSectionPlane       ();
244   void SetCutawayMode          (CutawayMode);     244   void SetCutawayMode          (CutawayMode);
245   void AddCutawayPlane         (const G4Plane3    245   void AddCutawayPlane         (const G4Plane3D& cutawayPlane);
246   void ChangeCutawayPlane      (size_t index,     246   void ChangeCutawayPlane      (size_t index, const G4Plane3D& cutawayPlane);
247   void ClearCutawayPlanes      ();                247   void ClearCutawayPlanes      ();
248   void SetExplodeFactor        (G4double explo    248   void SetExplodeFactor        (G4double explodeFactor);
249   void UnsetExplodeFactor      ();                249   void UnsetExplodeFactor      ();
250   void SetExplodeCentre        (const G4Point3    250   void SetExplodeCentre        (const G4Point3D& explodeCentre);
251   G4int SetNoOfSides           (G4int nSides);    251   G4int SetNoOfSides           (G4int nSides);  // Returns number actually set.
252   void SetViewpointDirection   (const G4Vector    252   void SetViewpointDirection   (const G4Vector3D& viewpointDirection);
253   // Calls the following to get lightpoint dir    253   // Calls the following to get lightpoint direction right too.
254   void SetViewAndLights        (const G4Vector    254   void SetViewAndLights        (const G4Vector3D& viewpointDirection);
255   // Also sets lightpoint direction according     255   // Also sets lightpoint direction according to G4bool fLightsMoveWithCamera.
256   void SetUpVector             (const G4Vector    256   void SetUpVector             (const G4Vector3D& upVector);
257   void SetFieldHalfAngle       (G4double field    257   void SetFieldHalfAngle       (G4double fieldHalfAngle);
258   void SetOrthogonalProjection ();  // This an    258   void SetOrthogonalProjection ();  // This and next use SetFieldHalfAngle.
259   void SetPerspectiveProjection(G4double field    259   void SetPerspectiveProjection(G4double fieldHalfAngle = 30. * CLHEP::deg);
260   void SetZoomFactor           (G4double zoomF    260   void SetZoomFactor           (G4double zoomFactor);
261   void MultiplyZoomFactor      (G4double zoomF    261   void MultiplyZoomFactor      (G4double zoomFactorMultiplier);
262   void SetScaleFactor          (const G4Vector    262   void SetScaleFactor          (const G4Vector3D& scaleFactor);
263   void MultiplyScaleFactor     (const G4Vector    263   void MultiplyScaleFactor     (const G4Vector3D& scaleFactorMultiplier);
264   void SetCurrentTargetPoint   (const G4Point3    264   void SetCurrentTargetPoint   (const G4Point3D& currentTargetPoint);
265   void SetDolly                (G4double dolly    265   void SetDolly                (G4double dolly);
266   void IncrementDolly          (G4double dolly    266   void IncrementDolly          (G4double dollyIncrement);
267   void SetLightpointDirection  (const G4Vector    267   void SetLightpointDirection  (const G4Vector3D& lightpointDirection);
268   void SetLightsMoveWithCamera (G4bool moves);    268   void SetLightsMoveWithCamera (G4bool moves);
269   void SetPan                  (G4double right    269   void SetPan                  (G4double right, G4double up);
270   void IncrementPan            (G4double right    270   void IncrementPan            (G4double right, G4double up);
271   // Increment currentTarget point perpendicul    271   // Increment currentTarget point perpendicular to viewpoint direction.
272   void IncrementPan            (G4double right    272   void IncrementPan            (G4double right, G4double up, G4double forward);
273   // Increment currentTarget point also along     273   // Increment currentTarget point also along viewpoint direction.
274   void SetDefaultVisAttributes (const G4VisAtt    274   void SetDefaultVisAttributes (const G4VisAttributes&);
275   void SetDefaultColour        (const G4Colour    275   void SetDefaultColour        (const G4Colour&);  // Uses SetDefaultVisAttributes.
276   void SetDefaultTextVisAttributes (const G4Vi    276   void SetDefaultTextVisAttributes (const G4VisAttributes&);
277   void SetDefaultTextColour    (const G4Colour    277   void SetDefaultTextColour    (const G4Colour&);  // SetDefaultTextVisAttributes.
278   void SetDefaultMarker        (const G4VMarke    278   void SetDefaultMarker        (const G4VMarker& defaultMarker);
279   void SetGlobalMarkerScale    (G4double globa    279   void SetGlobalMarkerScale    (G4double globalMarkerScale);
280   void SetGlobalLineWidthScale (G4double globa    280   void SetGlobalLineWidthScale (G4double globalLineWidthScale);
281   void SetMarkerHidden         ();                281   void SetMarkerHidden         ();
282   void SetMarkerNotHidden      ();                282   void SetMarkerNotHidden      ();
283   void SetWindowSizeHint       (G4int xHint, G    283   void SetWindowSizeHint       (G4int xHint, G4int yHint);
284   void SetWindowLocationHint   (G4int xHint, G    284   void SetWindowLocationHint   (G4int xHint, G4int yHint);
285   void SetXGeometryString      (const G4String    285   void SetXGeometryString      (const G4String&);
286   void SetAutoRefresh          (G4bool);          286   void SetAutoRefresh          (G4bool);
287   void SetBackgroundColour     (const G4Colour    287   void SetBackgroundColour     (const G4Colour&);
288   void SetPicking              (G4bool);          288   void SetPicking              (G4bool);
289   void SetRotationStyle        (RotationStyle)    289   void SetRotationStyle        (RotationStyle);
290   void ClearVisAttributesModifiers ();            290   void ClearVisAttributesModifiers ();
291   void AddVisAttributesModifier(const G4Modeli    291   void AddVisAttributesModifier(const G4ModelingParameters::VisAttributesModifier&);
292   void SetStartTime            (G4double);        292   void SetStartTime            (G4double);
293   void SetEndTime              (G4double);        293   void SetEndTime              (G4double);
294   void SetFadeFactor           (G4double);        294   void SetFadeFactor           (G4double);
295   void SetDisplayHeadTime      (G4bool);          295   void SetDisplayHeadTime      (G4bool);
296   void SetDisplayHeadTimeX     (G4double);        296   void SetDisplayHeadTimeX     (G4double);
297   void SetDisplayHeadTimeY     (G4double);        297   void SetDisplayHeadTimeY     (G4double);
298   void SetDisplayHeadTimeSize  (G4double);        298   void SetDisplayHeadTimeSize  (G4double);
299   void SetDisplayHeadTimeRed   (G4double);        299   void SetDisplayHeadTimeRed   (G4double);
300   void SetDisplayHeadTimeGreen (G4double);        300   void SetDisplayHeadTimeGreen (G4double);
301   void SetDisplayHeadTimeBlue  (G4double);        301   void SetDisplayHeadTimeBlue  (G4double);
302   void SetDisplayLightFront    (G4bool);          302   void SetDisplayLightFront    (G4bool);
303   void SetDisplayLightFrontX   (G4double);        303   void SetDisplayLightFrontX   (G4double);
304   void SetDisplayLightFrontY   (G4double);        304   void SetDisplayLightFrontY   (G4double);
305   void SetDisplayLightFrontZ   (G4double);        305   void SetDisplayLightFrontZ   (G4double);
306   void SetDisplayLightFrontT   (G4double);        306   void SetDisplayLightFrontT   (G4double);
307   void SetDisplayLightFrontRed (G4double);        307   void SetDisplayLightFrontRed (G4double);
308   void SetDisplayLightFrontGreen (G4double);      308   void SetDisplayLightFrontGreen (G4double);
309   void SetDisplayLightFrontBlue (G4double);       309   void SetDisplayLightFrontBlue (G4double);
310   void SetSpecialMeshRendering (G4bool);          310   void SetSpecialMeshRendering (G4bool);
311   void SetSpecialMeshRenderingOption (SMROptio    311   void SetSpecialMeshRenderingOption (SMROption);
312   void SetSpecialMeshVolumes   (const std::vec    312   void SetSpecialMeshVolumes   (const std::vector<G4ModelingParameters::PVNameCopyNo>&);
313                                                   313 
314   // Command dumping functions.                   314   // Command dumping functions.
315   // For camera commands we need to provide th    315   // For camera commands we need to provide the standard target point from
316   // the current scene.                           316   // the current scene.
317   G4String CameraAndLightingCommands(const G4P    317   G4String CameraAndLightingCommands(const G4Point3D standardTargetPoint) const;
318   G4String DrawingStyleCommands  () const;        318   G4String DrawingStyleCommands  () const;
319   G4String SceneModifyingCommands() const;        319   G4String SceneModifyingCommands() const;
320   G4String TouchableCommands     () const;        320   G4String TouchableCommands     () const;
321   G4String TimeWindowCommands    () const;        321   G4String TimeWindowCommands    () const;
322                                                   322 
323   // Other functions.                             323   // Other functions.
324   void PrintDifferences (const G4ViewParameter    324   void PrintDifferences (const G4ViewParameters& v) const;
325                                                   325 
326   // Interpolation                                326   // Interpolation
327   // Returns a null pointer when no more to be    327   // Returns a null pointer when no more to be done.  For example:
328   // do {                                         328   // do {
329   //   G4ViewParameters* vp =                     329   //   G4ViewParameters* vp =
330   //   G4ViewParameters::CatmullRomCubicSpline    330   //   G4ViewParameters::CatmullRomCubicSplineInterpolation(viewVector,nInterpolationPoints);
331   //   if (!vp) break;                            331   //   if (!vp) break;
332   //     ...                                      332   //     ...
333   // } while (true);                              333   // } while (true);
334   // Assumes equal intervals                      334   // Assumes equal intervals
335   static G4ViewParameters* CatmullRomCubicSpli    335   static G4ViewParameters* CatmullRomCubicSplineInterpolation
336   (const std::vector<G4ViewParameters>& views,    336   (const std::vector<G4ViewParameters>& views,
337    G4int nInterpolationPoints = 50);  // No of    337    G4int nInterpolationPoints = 50);  // No of interpolations points per interval
338                                                   338 
339 private:                                          339 private:
340                                                   340   
341   G4int ParseGeometry ( const char *string, G4    341   G4int ParseGeometry ( const char *string, G4int *x, G4int *y, unsigned int *width, unsigned int *height);
342   G4int ReadInteger(char *string, char **NextS    342   G4int ReadInteger(char *string, char **NextString);
343                                                   343 
344   DrawingStyle fDrawingStyle;    // Drawing st    344   DrawingStyle fDrawingStyle;    // Drawing style.
345   G4int        fNumberOfCloudPoints; // For dr    345   G4int        fNumberOfCloudPoints; // For drawing in cloud style.
346                                      // <= 0 m    346                                      // <= 0 means use viewer default.
347   G4bool       fAuxEdgeVisible;  // Auxiliary     347   G4bool       fAuxEdgeVisible;  // Auxiliary edge visibility.
348   G4bool       fCulling;         // Culling re    348   G4bool       fCulling;         // Culling requested.
349   G4bool       fCullInvisible;   // Cull (don'    349   G4bool       fCullInvisible;   // Cull (don't Draw) invisible objects.
350   G4bool       fDensityCulling;  // Density cu    350   G4bool       fDensityCulling;  // Density culling requested.  If so...
351   G4double     fVisibleDensity;  // ...density    351   G4double     fVisibleDensity;  // ...density lower than this not drawn.
352   G4bool       fCullCovered;     // Cull daugh    352   G4bool       fCullCovered;     // Cull daughters covered by opaque mothers.
353   G4int        fCBDAlgorithmNumber; // Colour     353   G4int        fCBDAlgorithmNumber; // Colour by density algorithm number.
354   std::vector<G4double> fCBDParameters; // Col    354   std::vector<G4double> fCBDParameters; // Colour by density parameters.
355   G4bool       fSection;         // Section dr    355   G4bool       fSection;         // Section drawing requested (DCUT in GEANT3).
356   G4Plane3D    fSectionPlane;    // Cut plane     356   G4Plane3D    fSectionPlane;    // Cut plane for section drawing (DCUT).
357   CutawayMode  fCutawayMode;     // Cutaway mo    357   CutawayMode  fCutawayMode;     // Cutaway mode.
358   G4Planes     fCutawayPlanes;   // Set of pla    358   G4Planes     fCutawayPlanes;   // Set of planes used for cutaway.
359   G4double     fExplodeFactor;   // Explode al    359   G4double     fExplodeFactor;   // Explode along radius by this factor...
360   G4Point3D    fExplodeCentre;   // ...about t    360   G4Point3D    fExplodeCentre;   // ...about this centre.
361   G4int        fNoOfSides;       // ...if poly    361   G4int        fNoOfSides;       // ...if polygon approximates circle.
362   G4Vector3D   fViewpointDirection;               362   G4Vector3D   fViewpointDirection;
363   G4Vector3D   fUpVector;        // Up vector.    363   G4Vector3D   fUpVector;        // Up vector.  (Warning: MUST NOT be parallel
364                                  // to fViewpo    364                                  // to fViewpointDirection!)
365   G4double     fFieldHalfAngle;  // Radius / c    365   G4double     fFieldHalfAngle;  // Radius / camara distance, 0 for parallel.
366   G4double     fZoomFactor;      // Magnificat    366   G4double     fZoomFactor;      // Magnification relative to Standard View.
367   G4Vector3D   fScaleFactor;     // (Non-unifo    367   G4Vector3D   fScaleFactor;     // (Non-uniform) scale/magnification factor.
368   G4Point3D    fCurrentTargetPoint;  // Relati    368   G4Point3D    fCurrentTargetPoint;  // Relative to standard target point.
369   G4double     fDolly;           // Distance t    369   G4double     fDolly;           // Distance towards current target point.
370   G4bool       fLightsMoveWithCamera;             370   G4bool       fLightsMoveWithCamera;
371   G4Vector3D   fRelativeLightpointDirection;      371   G4Vector3D   fRelativeLightpointDirection;
372   // i.e., rel. to object or camera accoding t    372   // i.e., rel. to object or camera accoding to G4bool fLightsMoveWithCamera.
373   G4Vector3D   fActualLightpointDirection;        373   G4Vector3D   fActualLightpointDirection;
374   G4VisAttributes fDefaultVisAttributes;          374   G4VisAttributes fDefaultVisAttributes;
375   G4VisAttributes fDefaultTextVisAttributes;      375   G4VisAttributes fDefaultTextVisAttributes;
376   G4VMarker    fDefaultMarker;                    376   G4VMarker    fDefaultMarker;
377   G4double     fGlobalMarkerScale;                377   G4double     fGlobalMarkerScale;
378   G4double     fGlobalLineWidthScale;             378   G4double     fGlobalLineWidthScale;
379   G4bool       fMarkerNotHidden;                  379   G4bool       fMarkerNotHidden;
380   // True if transients are to be drawn and no    380   // True if transients are to be drawn and not hidden by
381   // hidden-line-hidden-surface removal algori    381   // hidden-line-hidden-surface removal algorithms, e.g., z-buffer
382   // testing; false if they are to be hidden-l    382   // testing; false if they are to be hidden-line-hidden-surface
383   // removed.                                     383   // removed.
384   G4int        fWindowSizeHintX; // Size hints    384   G4int        fWindowSizeHintX; // Size hints for pixel-based window systems.
385   G4int        fWindowSizeHintY;                  385   G4int        fWindowSizeHintY;
386   G4int        fWindowLocationHintX; // Locati    386   G4int        fWindowLocationHintX; // Location hints for pixel-based window systems.
387   G4int        fWindowLocationHintY;              387   G4int        fWindowLocationHintY;
388   G4bool       fWindowLocationHintXNegative; /    388   G4bool       fWindowLocationHintXNegative; //  Reference of location hints for pixel-based window systems.
389   G4bool       fWindowLocationHintYNegative;      389   G4bool       fWindowLocationHintYNegative;
390   G4String     fXGeometryString; // If non-nul    390   G4String     fXGeometryString; // If non-null, geometry string for X Windows.
391   G4int        fGeometryMask;    // Correspond    391   G4int        fGeometryMask;    // Corresponding mask.
392   G4bool       fAutoRefresh;     // ...after c    392   G4bool       fAutoRefresh;     // ...after change of view parameters.
393   G4Colour     fBackgroundColour;                 393   G4Colour     fBackgroundColour;
394   G4bool       fPicking;         // Request pi    394   G4bool       fPicking;         // Request picking.
395   RotationStyle fRotationStyle;  // Rotation s    395   RotationStyle fRotationStyle;  // Rotation style.
396   std::vector<G4ModelingParameters::VisAttribu    396   std::vector<G4ModelingParameters::VisAttributesModifier> fVisAttributesModifiers;
397   G4double     fStartTime, fEndTime;  // Time     397   G4double     fStartTime, fEndTime;  // Time range (e.g., for trajectory steps).
398   G4double     fFadeFactor;  // 0: no fade; 1:    398   G4double     fFadeFactor;  // 0: no fade; 1: maximum fade with time within range.
399   G4bool       fDisplayHeadTime;  // Display h    399   G4bool       fDisplayHeadTime;  // Display head time (fEndTime) in 2D text.
400   G4double     fDisplayHeadTimeX, fDisplayHead    400   G4double     fDisplayHeadTimeX, fDisplayHeadTimeY;  // 2D screen coords.
401   G4double     fDisplayHeadTimeSize;  // Scree    401   G4double     fDisplayHeadTimeSize;  // Screen size.
402   G4double     fDisplayHeadTimeRed, fDisplayHe    402   G4double     fDisplayHeadTimeRed, fDisplayHeadTimeGreen, fDisplayHeadTimeBlue;
403   G4bool       fDisplayLightFront;// Display l    403   G4bool       fDisplayLightFront;// Display light front at head time originating at
404   G4double     fDisplayLightFrontX, fDisplayLi    404   G4double     fDisplayLightFrontX, fDisplayLightFrontY, fDisplayLightFrontZ,
405                fDisplayLightFrontT;               405                fDisplayLightFrontT;
406   G4double     fDisplayLightFrontRed, fDisplay    406   G4double     fDisplayLightFrontRed, fDisplayLightFrontGreen, fDisplayLightFrontBlue;
407   G4bool       fSpecialMeshRendering;  // Requ    407   G4bool       fSpecialMeshRendering;  // Request special rendering of parameterised volumes
408   SMROption    fSpecialMeshRenderingOption;  /    408   SMROption    fSpecialMeshRenderingOption;  // Special rendering option
409   std::vector<G4ModelingParameters::PVNameCopy    409   std::vector<G4ModelingParameters::PVNameCopyNo> fSpecialMeshVolumes;  // If empty, all meshes.
410                                                   410 
411   enum { // Constants for geometry mask in Par    411   enum { // Constants for geometry mask in ParseGeometry and related functions.
412     fNoValue     = 0,                             412     fNoValue     = 0,
413     fXValue      = 0x0001,                        413     fXValue      = 0x0001,
414     fYValue      = 0x0002,                        414     fYValue      = 0x0002,
415     fWidthValue  = 0x0004,                        415     fWidthValue  = 0x0004,
416     fHeightValue = 0x0008,                        416     fHeightValue = 0x0008,
417     fAllValues   = 0x000F,                        417     fAllValues   = 0x000F,
418     fXNegative   = 0x0010,                        418     fXNegative   = 0x0010,
419     fYNegative   = 0x0020                         419     fYNegative   = 0x0020
420   };                                              420   };
421 };                                                421 };
422                                                   422 
423 #include "G4ViewParameters.icc"                   423 #include "G4ViewParameters.icc"
424                                                   424 
425 #endif                                            425 #endif
426                                                   426