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