G4VisCommandsTouchableSet Class Reference

#include <G4VisCommandsTouchableSet.hh>

Inheritance diagram for G4VisCommandsTouchableSet:

G4VVisCommandViewer G4VVisCommand G4UImessenger

Public Member Functions

 G4VisCommandsTouchableSet ()
virtual ~G4VisCommandsTouchableSet ()
G4String GetCurrentValue (G4UIcommand *command)
void SetNewValue (G4UIcommand *command, G4String newValue)

Detailed Description

Definition at line 42 of file G4VisCommandsTouchableSet.hh.


Constructor & Destructor Documentation

G4VisCommandsTouchableSet::G4VisCommandsTouchableSet (  ) 

Definition at line 44 of file G4VisCommandsTouchableSet.cc.

References G4UIcmdWithAString::SetCandidates(), G4UIcmdWithADouble::SetDefaultValue(), G4UIcmdWithAString::SetDefaultValue(), G4UIcmdWithAnInteger::SetDefaultValue(), G4UIcmdWithABool::SetDefaultValue(), G4UIparameter::SetDefaultValue(), G4UIparameter::SetGuidance(), G4UIcommand::SetGuidance(), G4UIcommand::SetParameter(), G4UIcmdWithADouble::SetParameterName(), G4UIcmdWithAString::SetParameterName(), G4UIcmdWithAnInteger::SetParameterName(), and G4UIcmdWithABool::SetParameterName().

00045 {
00046   G4bool omitable;
00047   G4UIparameter* parameter;
00048   
00049   fpCommandSetColour = new G4UIcommand
00050   ("/vis/touchable/set/colour", this);
00051   fpCommandSetColour->SetGuidance("Set colour of current touchable.");
00052   fpCommandSetColour->SetGuidance
00053   ("Use \"/vis/set/touchable\" to set current touchable.");
00054   parameter = new G4UIparameter("red", 's', omitable = true);
00055   parameter->SetDefaultValue("1.");
00056   parameter->SetGuidance
00057   ("Red component or a string, e.g., \"blue\", in which case succeeding colour"
00058    "\ncomponents are ignored.");
00059   fpCommandSetColour->SetParameter(parameter);
00060   parameter = new G4UIparameter("green", 'd', omitable = true);
00061   parameter->SetDefaultValue(1.);
00062   fpCommandSetColour->SetParameter(parameter);
00063   parameter = new G4UIparameter("blue", 'd', omitable = true);
00064   parameter->SetDefaultValue(1.);
00065   fpCommandSetColour->SetParameter(parameter);
00066   parameter = new G4UIparameter("opacity", 'd', omitable = true);
00067   parameter->SetDefaultValue(1.);
00068   fpCommandSetColour->SetParameter(parameter);
00069 
00070   fpCommandSetDaughtersInvisible = new G4UIcmdWithABool
00071   ("/vis/touchable/set/daughtersInvisible", this);
00072   fpCommandSetDaughtersInvisible->SetGuidance
00073   ("Daughters of current touchable invisible: true/false.");
00074   fpCommandSetDaughtersInvisible->SetGuidance
00075   ("Use \"/vis/set/touchable\" to set current touchable.");
00076   fpCommandSetDaughtersInvisible->SetParameterName("daughtersInvisible", omitable = true);
00077   fpCommandSetDaughtersInvisible->SetDefaultValue(false);
00078 
00079   fpCommandSetForceAuxEdgeVisible = new G4UIcmdWithABool
00080   ("/vis/touchable/set/forceAuxEdgeVisible", this);
00081   fpCommandSetForceAuxEdgeVisible->SetGuidance
00082   ("Force auxiliary (soft) edges of current touchable to be visible:"
00083    " true/false.");
00084   fpCommandSetForceAuxEdgeVisible->SetGuidance
00085   ("Use \"/vis/set/touchable\" to set current touchable.");
00086   fpCommandSetForceAuxEdgeVisible->SetParameterName("forceAuxEdgeVisible", omitable = true);
00087   fpCommandSetForceAuxEdgeVisible->SetDefaultValue(false);
00088 
00089   fpCommandSetLineSegmentsPerCircle = new G4UIcmdWithAnInteger
00090   ("/vis/touchable/set/lineSegmentsPerCircle", this);
00091   fpCommandSetLineSegmentsPerCircle->SetGuidance
00092     ("For current touchable, set number of line segments per circle, the"
00093      "\nprecision with which a curved line or surface is represented by a"
00094      "\npolygon or polyhedron, regardless of the view parameters."
00095      "\nNegative to pick up G4Polyhedron default value.");
00096   fpCommandSetLineSegmentsPerCircle->SetGuidance
00097   ("Use \"/vis/set/touchable\" to set current touchable.");
00098   fpCommandSetLineSegmentsPerCircle->SetParameterName("lineSegmentsPerCircle", omitable = true);
00099   fpCommandSetLineSegmentsPerCircle->SetDefaultValue(-1);
00100   
00101   fpCommandSetForceSolid = new G4UIcmdWithABool
00102   ("/vis/touchable/set/forceSolid", this);
00103   fpCommandSetForceSolid->SetGuidance
00104   ("Force current touchable always to be drawn solid (surface drawing).");
00105   fpCommandSetForceSolid->SetGuidance
00106   ("Use \"/vis/set/touchable\" to set current touchable.");
00107   fpCommandSetForceSolid->SetParameterName("forceSolid", omitable = true);
00108   fpCommandSetForceSolid->SetDefaultValue(false);
00109 
00110   fpCommandSetForceWireframe = new G4UIcmdWithABool
00111   ("/vis/touchable/set/forceWireframe", this);
00112   fpCommandSetForceWireframe->SetGuidance
00113   ("Force current touchable always to be drawn as wireframe.");
00114   fpCommandSetForceWireframe->SetGuidance
00115   ("Use \"/vis/set/touchable\" to set current touchable.");
00116   fpCommandSetForceWireframe->SetParameterName("forceWireframe", omitable = true);
00117   fpCommandSetForceWireframe->SetDefaultValue(false);
00118 
00119   fpCommandSetLineStyle = new G4UIcmdWithAString
00120   ("/vis/touchable/set/lineStyle", this);
00121   fpCommandSetLineStyle->SetGuidance("Set line style of current touchable drawing.");
00122   fpCommandSetLineStyle->SetGuidance
00123   ("Use \"/vis/set/touchable\" to set current touchable.");
00124   fpCommandSetLineStyle->SetParameterName("lineStyle", omitable = true);
00125   fpCommandSetLineStyle->SetCandidates("unbroken dashed dotted");
00126   fpCommandSetLineStyle->SetDefaultValue("unbroken");
00127 
00128   fpCommandSetLineWidth = new G4UIcmdWithADouble
00129   ("/vis/touchable/set/lineWidth", this);
00130   fpCommandSetLineWidth->SetGuidance("Set line width of current touchable.");
00131   fpCommandSetLineWidth->SetGuidance
00132   ("Use \"/vis/set/touchable\" to set current touchable.");
00133   fpCommandSetLineWidth->SetParameterName("lineWidth", omitable = true);
00134   fpCommandSetLineWidth->SetDefaultValue(1.);
00135 
00136   fpCommandSetVisibility = new G4UIcmdWithABool
00137   ("/vis/touchable/set/visibility", this);
00138   fpCommandSetVisibility->SetGuidance
00139   ("Set visibility of current touchable: true/false.");
00140   fpCommandSetVisibility->SetGuidance
00141   ("Use \"/vis/set/touchable\" to set current touchable.");
00142   fpCommandSetVisibility->SetParameterName("visibility", omitable = true);
00143   fpCommandSetVisibility->SetDefaultValue(false);
00144 }

G4VisCommandsTouchableSet::~G4VisCommandsTouchableSet (  )  [virtual]

Definition at line 146 of file G4VisCommandsTouchableSet.cc.

00146                                                       {
00147   delete fpCommandSetVisibility;
00148   delete fpCommandSetLineWidth;
00149   delete fpCommandSetLineStyle;
00150   delete fpCommandSetForceWireframe;
00151   delete fpCommandSetForceSolid;
00152   delete fpCommandSetLineSegmentsPerCircle;
00153   delete fpCommandSetForceAuxEdgeVisible;
00154   delete fpCommandSetDaughtersInvisible;
00155   delete fpCommandSetColour;
00156 }


Member Function Documentation

G4String G4VisCommandsTouchableSet::GetCurrentValue ( G4UIcommand command  )  [virtual]

Reimplemented from G4UImessenger.

Definition at line 158 of file G4VisCommandsTouchableSet.cc.

00158                                                                 {
00159   return "";
00160 }

void G4VisCommandsTouchableSet::SetNewValue ( G4UIcommand command,
G4String  newValue 
) [virtual]

Reimplemented from G4UImessenger.

Definition at line 163 of file G4VisCommandsTouchableSet.cc.

References G4ViewParameters::AddVisAttributesModifier(), G4UIcommand::ConvertToBool(), G4UIcommand::ConvertToDouble(), G4UIcommand::ConvertToInt(), G4VisAttributes::dashed, G4VisAttributes::dotted, G4VisManager::errors, G4cout, G4endl, G4Colour::GetBlue(), G4Colour::GetColour(), G4Colour::GetGreen(), G4Colour::GetRed(), G4VViewer::GetViewParameters(), G4VisAttributes::SetColour(), G4VisAttributes::SetDaughtersInvisible(), G4VisAttributes::SetForceAuxEdgeVisible(), G4VisAttributes::SetForceLineSegmentsPerCircle(), G4VisAttributes::SetForceSolid(), G4VisAttributes::SetForceWireframe(), G4VisAttributes::SetLineStyle(), G4VisAttributes::SetLineWidth(), G4VisAttributes::SetVisibility(), G4VisAttributes::unbroken, G4ModelingParameters::VASColour, G4ModelingParameters::VASDaughtersInvisible, G4ModelingParameters::VASForceAuxEdgeVisible, G4ModelingParameters::VASForceLineSegmentsPerCircle, G4ModelingParameters::VASForceSolid, G4ModelingParameters::VASForceWireframe, G4ModelingParameters::VASLineStyle, G4ModelingParameters::VASLineWidth, G4ModelingParameters::VASVisibility, and G4VisManager::warnings.

00164 {
00165   G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity();
00166 
00167   G4VViewer* currentViewer = fpVisManager->GetCurrentViewer();
00168   if (!currentViewer) {
00169     if (verbosity >= G4VisManager::errors) {
00170       G4cout <<
00171       "ERROR: G4VisCommandsTouchableSet::SetNewValue: no current viewer."
00172       << G4endl;
00173     }
00174     return;
00175   }
00176 
00177   G4ViewParameters workingVP = currentViewer->GetViewParameters();
00178   G4VisAttributes workingVisAtts;
00179   
00180   if (command == fpCommandSetColour)
00181   {
00182     G4String redOrString;
00183     G4double green, blue, opacity;
00184     std::istringstream iss(newValue);
00185     iss >> redOrString >> green >> blue >> opacity;
00186     G4Colour colour(1,1,1,1);  // Default white and opaque.
00187     const size_t iPos0 = 0;
00188     if (std::isalpha(redOrString[iPos0])) {
00189       if (!G4Colour::GetColour(redOrString, colour)) {
00190         if (fpVisManager->GetVerbosity() >= G4VisManager::warnings) {
00191           G4cout << "WARNING: Colour \"" << redOrString
00192           << "\" not found.  Defaulting to white and opaque."
00193           << G4endl;
00194         }
00195       }
00196     } else {
00197       colour = G4Colour(G4UIcommand::ConvertToDouble(redOrString), green, blue);
00198     }
00199     colour = G4Colour
00200     (colour.GetRed(), colour.GetGreen(), colour.GetBlue(), opacity);
00201     
00202     workingVisAtts.SetColour(colour);
00203     workingVP.AddVisAttributesModifier
00204     (G4ModelingParameters::VisAttributesModifier
00205      (workingVisAtts,
00206       G4ModelingParameters::VASColour,
00207       fCurrentTouchablePath));
00208   }
00209   
00210   else if (command == fpCommandSetDaughtersInvisible) {
00211     workingVisAtts.SetDaughtersInvisible(G4UIcommand::ConvertToBool(newValue));
00212     workingVP.AddVisAttributesModifier
00213     (G4ModelingParameters::VisAttributesModifier
00214      (workingVisAtts,
00215       G4ModelingParameters::VASDaughtersInvisible,
00216       fCurrentTouchablePath));
00217   }
00218   
00219   else if (command == fpCommandSetForceAuxEdgeVisible) {
00220     workingVisAtts.SetForceAuxEdgeVisible(G4UIcommand::ConvertToBool(newValue));
00221     workingVP.AddVisAttributesModifier
00222     (G4ModelingParameters::VisAttributesModifier
00223      (workingVisAtts,
00224       G4ModelingParameters::VASForceAuxEdgeVisible,
00225       fCurrentTouchablePath));
00226   }
00227   
00228   else if (command == fpCommandSetLineSegmentsPerCircle) {
00229     workingVisAtts.SetForceLineSegmentsPerCircle
00230     (G4UIcommand::ConvertToInt(newValue));
00231     workingVP.AddVisAttributesModifier
00232     (G4ModelingParameters::VisAttributesModifier
00233      (workingVisAtts,
00234       G4ModelingParameters::VASForceLineSegmentsPerCircle,
00235       fCurrentTouchablePath));
00236   }
00237   
00238   else if (command == fpCommandSetForceSolid) {
00239     workingVisAtts.SetForceSolid(G4UIcommand::ConvertToBool(newValue));
00240     workingVP.AddVisAttributesModifier
00241     (G4ModelingParameters::VisAttributesModifier
00242      (workingVisAtts,
00243       G4ModelingParameters::VASForceSolid,
00244       fCurrentTouchablePath));
00245   }
00246   
00247   else if (command == fpCommandSetForceWireframe) {
00248     workingVisAtts.SetForceWireframe(G4UIcommand::ConvertToBool(newValue));
00249     workingVP.AddVisAttributesModifier
00250     (G4ModelingParameters::VisAttributesModifier
00251      (workingVisAtts,
00252       G4ModelingParameters::VASForceWireframe,
00253       fCurrentTouchablePath));
00254   }
00255   
00256   else if (command == fpCommandSetLineStyle) {
00257     G4VisAttributes::LineStyle lineStyle = G4VisAttributes::unbroken;
00258     if (newValue == "dashed") {
00259       lineStyle = G4VisAttributes::dashed;
00260     } else if (newValue == "dotted") {
00261       lineStyle = G4VisAttributes::dotted;
00262     }
00263     // All other values are "unbroken".
00264     workingVisAtts.SetLineStyle(lineStyle);
00265     workingVP.AddVisAttributesModifier
00266     (G4ModelingParameters::VisAttributesModifier
00267      (workingVisAtts,
00268       G4ModelingParameters::VASLineStyle,
00269       fCurrentTouchablePath));
00270   }
00271   
00272   else if (command == fpCommandSetLineWidth) {
00273     workingVisAtts.SetLineWidth(G4UIcommand::ConvertToDouble(newValue));
00274     workingVP.AddVisAttributesModifier
00275     (G4ModelingParameters::VisAttributesModifier
00276      (workingVisAtts,
00277       G4ModelingParameters::VASLineWidth,
00278       fCurrentTouchablePath));
00279   }
00280   
00281   else if (command == fpCommandSetVisibility) {
00282     workingVisAtts.SetVisibility(G4UIcommand::ConvertToBool(newValue));
00283     workingVP.AddVisAttributesModifier
00284     (G4ModelingParameters::VisAttributesModifier
00285      (workingVisAtts,
00286       G4ModelingParameters::VASVisibility,
00287       fCurrentTouchablePath));
00288   }
00289   
00290   else {
00291     if (verbosity >= G4VisManager::errors) {
00292       G4cout <<
00293       "ERROR: G4VisCommandsTouchableSet::SetNewValue: unrecognised command."
00294       << G4endl;
00295     }
00296     return;
00297   }
00298 
00299   SetViewParameters(currentViewer,workingVP);
00300 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:45 2013 for Geant4 by  doxygen 1.4.7