Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4AxesModel.cc
Go to the documentation of this file.
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// $Id$
28//
29//
30// John Allison 3rd April 2001
31// Model which knows how to draw axes.
32
33#include "G4AxesModel.hh"
34
36#include "G4VGraphicsScene.hh"
37#include "G4VisAttributes.hh"
38#include "G4Polyline.hh"
39#include "G4Colour.hh"
40#include "G4UnitsTable.hh"
41#include "G4ArrowModel.hh"
42#include "G4TextModel.hh"
43
45
47(G4double x0, G4double y0, G4double z0, G4double length,
48 G4double arrowWidth,
49 const G4String& colourString,
50 const G4String& description,
51 G4bool withAnnotation):
52 fXAxisModel(0),
53 fXLabelModel(0),
54 fXAnnotationModel(0),
55 fYAxisModel(0),
56 fYLabelModel(0),
57 fYAnnotationModel(0),
58 fZAxisModel(0),
59 fZLabelModel(0),
60 fZAnnotationModel(0)
61{
62 fType = "G4AxesModel";
64 fGlobalDescription = fType + ": " + description;
66 (x0, x0+length, y0, y0+length, z0, z0+length);
67
68 G4Colour colour(1,1,1,1); // Default white and opaque (unless "auto").
69 G4bool autoColour = false;
70 if (colourString == "auto") autoColour = true;
71 else {
72 if (!G4Colour::GetColour(colourString, colour)) {
74 ed << "Colour \"" << colourString
75 << "\" not found. Defaulting to white and opaque.";
77 ("G4AxesModel::G4AxesModel",
78 "modeling0012", JustWarning, ed);
79 }
80 }
81
82 G4String annotation = G4BestUnit(length,"Length");
83
84 G4Text* text = 0;
85 G4VisAttributes* va = 0;
86
87 G4Colour xColour(colour);
88 if (autoColour) xColour = G4Colour::Red();
89 fXAxisModel = new G4ArrowModel
90 (x0, y0, z0, x0+length, y0, z0, arrowWidth,
91 xColour, "x-axis: " + description);
92 if (withAnnotation) {
93 text = new G4Text("x",G4Point3D(x0+1.05*length, y0, z0));
94 text->SetScreenSize(10.);
96 va = new G4VisAttributes(xColour);
97 text->SetVisAttributes(va);
98 fXLabelModel = new G4TextModel(*text);
99 text = new G4Text(annotation,G4Point3D(x0+0.8*length, y0, z0));
100 text->SetScreenSize(10.);
101 text->SetOffset(5.,5.);
103 va = new G4VisAttributes(xColour);
104 text->SetVisAttributes(va);
105 fXAnnotationModel = new G4TextModel(*text);
106 }
107
108 G4Colour yColour(colour);
109 if (autoColour) yColour = G4Colour::Green();
110 fYAxisModel = new G4ArrowModel
111 (x0, y0, z0, x0, y0+length, z0, arrowWidth,
112 yColour, "y-axis: " + description);
113 if (withAnnotation) {
114 text = new G4Text("y",G4Point3D(x0, y0+1.05*length, z0));
115 text->SetScreenSize(10.);
117 va = new G4VisAttributes(yColour);
118 text->SetVisAttributes(va);
119 fYLabelModel = new G4TextModel(*text);
120 text = new G4Text(annotation,G4Point3D(x0, y0+0.8*length, z0));
121 text->SetScreenSize(10.);
122 text->SetOffset(5.,5.);
124 va = new G4VisAttributes(yColour);
125 text->SetVisAttributes(va);
126 fYAnnotationModel = new G4TextModel(*text);
127 }
128
129 G4Colour zColour(colour);
130 if (autoColour) zColour = G4Colour::Blue();
131 fZAxisModel = new G4ArrowModel
132 (x0, y0, z0, x0, y0, z0+length, arrowWidth,
133 zColour, "z-axis: " + description);
134 if (withAnnotation) {
135 text = new G4Text("z",G4Point3D(x0, y0, z0+1.05*length));
136 text->SetScreenSize(10.);
138 va = new G4VisAttributes(zColour);
139 text->SetVisAttributes(va);
140 fZLabelModel = new G4TextModel(*text);
141 text = new G4Text(annotation,G4Point3D(x0, y0, z0+0.8*length));
142 text->SetScreenSize(10.);
143 text->SetOffset(5.,5.);
145 va = new G4VisAttributes(zColour);
146 text->SetVisAttributes(va);
147 fZAnnotationModel = new G4TextModel(*text);
148 }
149}
150
152{
153 if (fXAxisModel) fXAxisModel->DescribeYourselfTo(sceneHandler);
154 if (fXLabelModel) fXLabelModel->DescribeYourselfTo(sceneHandler);
155 if (fXAnnotationModel) fXAnnotationModel->DescribeYourselfTo(sceneHandler);
156 if (fYAxisModel) fYAxisModel->DescribeYourselfTo(sceneHandler);
157 if (fYLabelModel) fYLabelModel->DescribeYourselfTo(sceneHandler);
158 if (fYAnnotationModel) fYAnnotationModel->DescribeYourselfTo(sceneHandler);
159 if (fZAxisModel) fZAxisModel->DescribeYourselfTo(sceneHandler);
160 if (fZLabelModel) fZLabelModel->DescribeYourselfTo(sceneHandler);
161 if (fZAnnotationModel) fZAnnotationModel->DescribeYourselfTo(sceneHandler);
162}
@ JustWarning
HepGeom::Point3D< G4double > G4Point3D
Definition: G4Point3D.hh:35
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
virtual ~G4AxesModel()
Definition: G4AxesModel.cc:44
virtual void DescribeYourselfTo(G4VGraphicsScene &)
Definition: G4AxesModel.cc:151
G4AxesModel(G4double x0, G4double y0, G4double z0, G4double length, G4double arrowWidth=1., const G4String &colourString="auto", const G4String &description="", G4bool withAnnotation=true)
Definition: G4AxesModel.cc:47
static G4Colour Green()
Definition: G4Colour.hh:148
static G4Colour Red()
Definition: G4Colour.hh:147
static G4Colour Blue()
Definition: G4Colour.hh:149
static G4bool GetColour(const G4String &key, G4Colour &result)
Definition: G4Colour.cc:123
Definition: G4Text.hh:73
void SetLayout(Layout)
void SetOffset(double dx, double dy)
@ centre
Definition: G4Text.hh:77
void SetScreenSize(G4double)
G4VisExtent fExtent
Definition: G4VModel.hh:111
G4String fGlobalDescription
Definition: G4VModel.hh:110
G4String fType
Definition: G4VModel.hh:108
virtual void DescribeYourselfTo(G4VGraphicsScene &)=0
G4String fGlobalTag
Definition: G4VModel.hh:109
void SetVisAttributes(const G4VisAttributes *)
Definition: G4Visible.cc:80
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76