Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // 28 // 29 // John Allison 23rd October 1996 30 31 // Class Description: 32 // Visualization attributes are a set of infor 33 // visualizable objects. This information is n 34 // visualization, and is not included in geome 35 // as shapes, position, and orientation. 36 // A typical example of a visualization attrib 37 // For example, in visualizing a box, the Visu 38 // its colour. If an object to be visualized h 39 // visualization attributes, then a proper def 40 // automatically. A set of visualization attri 41 // instance of class G4VisAttributes defined i 42 // category. The followings are commonly-used 43 // - visibility 44 // - visibility of daughters 45 // - force style 46 // - force auxiliary edge visibility 47 // - force line segments per circle 48 // - colour 49 // Class Description - End: 50 51 52 #ifndef __G4VISATTRIBUTES_HH__ 53 #define __G4VISATTRIBUTES_HH__ 54 55 #include "globals.hh" 56 #include <vector> 57 #include <map> 58 59 #include "graphics_reps_defs.hh" 60 61 #include "G4Colour.hh" 62 #include "G4Color.hh" 63 64 class G4AttValue; 65 class G4AttDef; 66 67 #include <CLHEP/Units/SystemOfUnits.h> 68 69 class G4VisAttributes { 70 71 friend std::ostream& operator << (std::ostre 72 73 public: // With description 74 75 enum LineStyle {unbroken, dashed, dotted}; 76 enum ForcedDrawingStyle {wireframe, solid, c 77 78 G4VisAttributes (); 79 G4VisAttributes (G4bool visibility); 80 G4VisAttributes (const G4Colour& colour); 81 G4VisAttributes (G4bool visibility, const G4 82 G4VisAttributes (const G4VisAttributes&) = d 83 ~G4VisAttributes () = default; 84 G4VisAttributes& operator= (const G4VisAttri 85 86 static const G4VisAttributes& GetInvisible() 87 88 G4bool operator != (const G4VisAttributes& a 89 G4bool operator == (const G4VisAttributes& a 90 91 void SetVisibility (G4bool = true); 92 void SetDaughtersInvisible (G4bool = true); 93 void SetColour (const G4Colour& 94 void SetColor (const G4Color&) 95 void SetColour (G4double red, G 96 G4double alpha 97 void SetColor (G4double red, G 98 G4double alpha 99 void SetLineStyle (LineStyle); 100 void SetLineWidth (G4double); 101 void SetForceWireframe (G4bool = true); 102 void SetForceSolid (G4bool = true); 103 void SetForceCloud (G4bool = true); 104 void SetForceNumberOfCloudPoints (G4int nPoi 105 // nPoints <= 0 means under control of viewe 106 void SetForceAuxEdgeVisible (G4bool = true); 107 void SetForceLineSegmentsPerCircle (G4int nS 108 // Allows choice of circle approximation. A 109 // will be composed of nSegments line segmen 110 // curves of D degrees that you need to divi 111 // specify nSegments = N * 360 / D. 112 void SetStartTime (G4double); 113 void SetEndTime (G4double); 114 void SetAttValues (const std::vect 115 void SetAttDefs (const std::map< 116 117 G4bool IsVisible 118 G4bool IsDaughtersInvisible 119 const G4Colour& GetColour 120 const G4Color& GetColor 121 LineStyle GetLineStyle 122 G4double GetLineWidth 123 G4bool IsForceDrawingStyle 124 ForcedDrawingStyle GetForcedDrawingStyle 125 G4int GetForcedNumberOfCloudPoints 126 G4bool IsForceAuxEdgeVisible 127 G4bool IsForcedAuxEdgeVisible 128 G4bool IsForceLineSegmentsPerCircle 129 G4int GetForcedLineSegmentsPerCirc 130 G4double GetStartTime 131 G4double GetEndTime 132 static G4int GetMinLineSegmentsPerCircle 133 // Returns an expendable copy of the G4AttVa 134 const std::vector<G4AttValue>* CreateAttValu 135 // Returns the orginal long life G4AttDefs.. 136 const std::map<G4String,G4AttDef>* GetAttDef 137 138 static constexpr G4int fMinLineSegmentsPerCi 139 // Minumum number of sides per circle 140 141 static constexpr G4double fVeryLongTime = 1. 142 // About 1.e75 billion years!! Used as defau 143 144 private: 145 146 G4bool fVisible; // Visibili 147 G4bool fDaughtersInvisible; // Make dau 148 G4Colour fColour; 149 LineStyle fLineStyle; 150 G4double fLineWidth; // Units of 151 // pixels f 152 G4bool fForceDrawingStyle; // To switc 153 ForcedDrawingStyle fForcedStyle; // Value of 154 G4int fForcedNumberOfCloudPoints; // 155 // 156 G4bool fForceAuxEdgeVisible; // To sw 157 G4bool fForcedAuxEdgeVisible; // Wheth 158 G4int fForcedLineSegmentsPerCircle; // Forc 159 // circ 160 G4double fStartTime, fEndTime; // Time ran 161 const std::vector<G4AttValue>* fAttValue 162 const std::map<G4String,G4AttDef>* fAttDefs; 163 }; 164 165 #include "G4VisAttributes.icc" 166 167 #endif 168