Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/management/src/G4VisCommandsViewerDefault.cc

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 // /vis/default commands - John Allison  30th October 2011
 29 
 30 #include "G4VisCommandsViewerDefault.hh"
 31 
 32 #include "G4VisManager.hh"
 33 #include "G4UIcmdWithAString.hh"
 34 #include "G4UIcmdWithABool.hh"
 35 
 36 #define G4warn G4cout
 37 
 38 ////////////// /vis/viewer/default/hiddenEdge ///////////////////////////////////////
 39 
 40 G4VisCommandViewerDefaultHiddenEdge::G4VisCommandViewerDefaultHiddenEdge()
 41 {
 42   G4bool omitable;
 43   fpCommand = new G4UIcmdWithABool("/vis/viewer/default/hiddenEdge", this);
 44   fpCommand->SetGuidance("Default hiddenEdge drawing for future viewers.");
 45   fpCommand->SetGuidance
 46     ("Edges become hidden/seen in wireframe or surface mode.");
 47   fpCommand->SetParameterName("hidden-edge",omitable = true);
 48   fpCommand->SetDefaultValue(true);
 49 }
 50 
 51 G4VisCommandViewerDefaultHiddenEdge::~G4VisCommandViewerDefaultHiddenEdge()
 52 {
 53   delete fpCommand;
 54 }
 55 
 56 G4String G4VisCommandViewerDefaultHiddenEdge::GetCurrentValue(G4UIcommand*)
 57 {
 58   return "";
 59 }
 60 
 61 void G4VisCommandViewerDefaultHiddenEdge::SetNewValue(G4UIcommand*, G4String newValue)
 62 {
 63   // Follows /vis/viewer/set/hiddenEdge
 64 
 65   G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity();
 66   G4ViewParameters vp = fpVisManager->GetDefaultViewParameters();
 67   G4ViewParameters::DrawingStyle existingStyle = vp.GetDrawingStyle();
 68 
 69   if (G4UIcommand::ConvertToBool(newValue)) {  // true
 70     switch (existingStyle) {
 71       case G4ViewParameters::wireframe:
 72         vp.SetDrawingStyle(G4ViewParameters::hlr);
 73         break;
 74       case G4ViewParameters::hlr:
 75         break;
 76       case G4ViewParameters::hsr:
 77         vp.SetDrawingStyle(G4ViewParameters::hlhsr);
 78         break;
 79       case G4ViewParameters::hlhsr:
 80         break;
 81       case G4ViewParameters::cloud:
 82         break;
 83     }
 84   }
 85   else {  // false
 86     switch (existingStyle) {
 87       case G4ViewParameters::wireframe:
 88         break;
 89       case G4ViewParameters::hlr:
 90         vp.SetDrawingStyle(G4ViewParameters::wireframe);
 91         break;
 92       case G4ViewParameters::hsr:
 93         break;
 94       case G4ViewParameters::hlhsr:
 95         vp.SetDrawingStyle(G4ViewParameters::hsr);
 96         break;
 97       case G4ViewParameters::cloud:
 98         break;
 99     }
100   }
101 
102   fpVisManager->SetDefaultViewParameters(vp);
103 
104   if (verbosity >= G4VisManager::confirmations) {
105     G4cout << "Default drawing style set to " << vp.GetDrawingStyle()
106      << G4endl;
107   }
108 }
109 
110 ////////////// /vis/viewer/default/style ///////////////////////////////////////
111 
112 G4VisCommandViewerDefaultStyle::G4VisCommandViewerDefaultStyle()
113 {
114   G4bool omitable;
115   fpCommand = new G4UIcmdWithAString("/vis/viewer/default/style", this);
116   fpCommand->SetGuidance("Default drawing style for future viewers.");
117   fpCommand->SetGuidance
118     ("Set style of drawing - w[ireframe] or s[urface] or c[loud].");
119   fpCommand->SetGuidance 
120     ("(Default hidden line drawing is controlled by \"/vis/viewer/default/hiddenEdge\".)");
121   fpCommand->SetParameterName ("style",omitable = false);
122   fpCommand->SetCandidates("w wireframe s surface c cloud");
123 }
124 
125 G4VisCommandViewerDefaultStyle::~G4VisCommandViewerDefaultStyle()
126 {
127   delete fpCommand;
128 }
129 
130 G4String G4VisCommandViewerDefaultStyle::GetCurrentValue(G4UIcommand*)
131 {
132   return "";
133 }
134 
135 void G4VisCommandViewerDefaultStyle::SetNewValue(G4UIcommand*, G4String newValue)
136 {
137   // Follows /vis/viewer/set/style
138 
139   G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity();
140   G4ViewParameters vp = fpVisManager->GetDefaultViewParameters();
141   G4ViewParameters::DrawingStyle existingStyle = vp.GetDrawingStyle();
142 
143   const size_t iPos0 = 0;
144   if (newValue[iPos0] == 'w') {  // "wireframe"
145     switch (existingStyle) {
146       case G4ViewParameters::wireframe:
147         break;
148       case G4ViewParameters::hlr:
149         break;
150       case G4ViewParameters::hsr:
151         vp.SetDrawingStyle(G4ViewParameters::wireframe);
152         break;
153       case G4ViewParameters::hlhsr:
154         vp.SetDrawingStyle(G4ViewParameters::hlr);
155         break;
156       case G4ViewParameters::cloud:
157         vp.SetDrawingStyle(G4ViewParameters::wireframe);
158         break;
159     }
160   }
161   else if (newValue[iPos0] == 's') {  // "surface"
162     switch (existingStyle) {
163       case G4ViewParameters::wireframe:
164         vp.SetDrawingStyle(G4ViewParameters::hsr);
165         break;
166       case G4ViewParameters::hlr:
167         vp.SetDrawingStyle(G4ViewParameters::hlhsr);
168         break;
169       case G4ViewParameters::hsr:
170         break;
171       case G4ViewParameters::hlhsr:
172         break;
173       case G4ViewParameters::cloud:
174         vp.SetDrawingStyle(G4ViewParameters::hsr);
175         break;
176     }
177   }
178   else if (newValue[iPos0] == 'c') {  // "cloud"
179     switch (existingStyle) {
180       case G4ViewParameters::wireframe:
181         vp.SetDrawingStyle(G4ViewParameters::cloud);
182         break;
183       case G4ViewParameters::hlr:
184         vp.SetDrawingStyle(G4ViewParameters::cloud);
185         break;
186       case G4ViewParameters::hsr:
187         vp.SetDrawingStyle(G4ViewParameters::cloud);
188         break;
189       case G4ViewParameters::hlhsr:
190         vp.SetDrawingStyle(G4ViewParameters::cloud);
191         break;
192       case G4ViewParameters::cloud:
193         break;
194     }
195   }
196   else {
197     if (verbosity >= G4VisManager::errors) {
198       G4warn << "ERROR: \"" << newValue << "\" not recognised."
199   "  Looking for 'w' or 's' or 'c' first character." << G4endl;
200     }
201     return;
202   }
203 
204   fpVisManager->SetDefaultViewParameters(vp);
205 
206   if (verbosity >= G4VisManager::confirmations) {
207     G4cout << "Default drawing style set to " << vp.GetDrawingStyle()
208      << G4endl;
209   }
210 }
211