43   fDrawingStyle (wireframe),
 
   44   fAuxEdgeVisible (false),
 
   46   fCullInvisible (true),
 
   47   fDensityCulling (false),
 
   48   fVisibleDensity (0.01 * 
g / 
cm3),
 
   52   fCutawayMode (cutawayUnion),
 
   61   fCurrentTargetPoint (),
 
   63   fLightsMoveWithCamera (false),
 
   64   fRelativeLightpointDirection (
G4Vector3D (1., 1., 1.)),
 
   65   fActualLightpointDirection (
G4Vector3D (1., 1., 1.)),
 
   66   fDefaultVisAttributes (),
 
   67   fDefaultTextVisAttributes (
G4Colour (0., 0., 1.)),
 
   69   fGlobalMarkerScale (1.),
 
   70   fGlobalLineWidthScale (1.),
 
   71   fMarkerNotHidden (true),
 
   72   fWindowSizeHintX (600),
 
   73   fWindowSizeHintY (600),
 
   74   fWindowLocationHintX(0),
 
   75   fWindowLocationHintY(0),
 
   76   fWindowLocationHintXNegative(true),
 
   77   fWindowLocationHintYNegative(false),
 
   80   fBackgroundColour (
G4Colour(0.,0.,0.)),         
 
   82   fRotationStyle (constrainUpDirection)
 
   92   fScaleFactor.setX(fScaleFactor.x() * scaleFactorMultiplier.
x());
 
   93   fScaleFactor.setY(fScaleFactor.y() * scaleFactorMultiplier.
y());
 
   94   fScaleFactor.setZ(fScaleFactor.z() * scaleFactorMultiplier.
z());
 
   99   return fActualLightpointDirection;
 
  112   if (fFieldHalfAngle == 0.) {
 
  113     cameraDistance = radius;
 
  116     cameraDistance = radius / std::sin (fFieldHalfAngle) - fDolly;
 
  118   return cameraDistance;
 
  123   const G4double small = 1.e-6 * radius;
 
  124   G4double nearDistance = cameraDistance - radius;
 
  125   if (nearDistance < small) nearDistance = small;
 
  132   G4double farDistance = cameraDistance + radius;
 
  133   if (farDistance < nearDistance) farDistance = nearDistance;
 
  140   if (fFieldHalfAngle == 0.) {
 
  141     frontHalfHeight = radius / fZoomFactor;
 
  144     frontHalfHeight = nearDistance * std::tan (fFieldHalfAngle) / fZoomFactor;
 
  146   return frontHalfHeight;
 
  151   if (fCutawayPlanes.size () < 3 ) {
 
  152     fCutawayPlanes.push_back (cutawayPlane);
 
  156       "ERROR: G4ViewParameters::AddCutawayPlane:" 
  157       "\n  A maximum of 3 cutaway planes supported." << 
G4endl;
 
  163   if (index >= fCutawayPlanes.size()) {
 
  165       "ERROR: G4ViewParameters::ChangeCutawayPlane:" 
  166       "\n  Plane " << index << 
" does not exist." << 
G4endl;
 
  168     fCutawayPlanes[
index] = cutawayPlane;
 
  174   if (visibleDensity < 0) {
 
  175     G4cout << 
"G4ViewParameters::SetVisibleDensity: attempt to set negative " 
  176       "density - ignored." << 
G4endl;
 
  179     if (visibleDensity > reasonableMaximum) {
 
  180       G4cout << 
"G4ViewParameters::SetVisibleDensity: density > " 
  181          << 
G4BestUnit (reasonableMaximum, 
"Volumic Mass")
 
  182          << 
" - did you mean this?" 
  185     fVisibleDensity = visibleDensity;
 
  190   const G4int  nSidesMin = 12;
 
  191   if (nSides < nSidesMin) {
 
  193     G4cout << 
"G4ViewParameters::SetNoOfSides: attempt to set the" 
  194       "\nnumber of sides per circle < " << nSidesMin
 
  195      << 
"; forced to " << nSides << 
G4endl;
 
  204   fViewpointDirection = viewpointDirection;
 
  208   if (fViewpointDirection.unit() * fUpVector.unit() > .9999) {
 
  210       "WARNING: Viewpoint direction is very close to the up vector direction." 
  211       "\n  Consider setting the up vector to obtain definable behaviour." 
  216   if (fLightsMoveWithCamera) {
 
  218     G4Vector3D xprime = (fUpVector.cross (zprime)).unit ();
 
  220     fActualLightpointDirection =
 
  221       fRelativeLightpointDirection.
x () * xprime +
 
  222       fRelativeLightpointDirection.
y () * yprime +
 
  223       fRelativeLightpointDirection.
x () * zprime;     
 
  225     fActualLightpointDirection = fRelativeLightpointDirection;
 
  231   fRelativeLightpointDirection = lightpointDirection;
 
  232   SetViewAndLights (fViewpointDirection);
 
  238   fCurrentTargetPoint  = right * unitRight + up * unitUp;
 
  248   fCurrentTargetPoint += right * unitRight + up * unitUp + distance * fViewpointDirection;
 
  254   std::ostringstream oss;
 
  256   oss << 
"#\n# Camera and lights commands";
 
  258   oss << 
"\n/vis/viewer/set/viewpointVector " 
  259   << fViewpointDirection.x()
 
  260   << 
' ' << fViewpointDirection.y()
 
  261   << 
' ' << fViewpointDirection.z();
 
  263   oss << 
"\n/vis/viewer/set/upVector " 
  265   << 
' ' << fUpVector.y()
 
  266   << 
' ' << fUpVector.z();
 
  268   oss << 
"\n/vis/viewer/set/projection ";
 
  269     if (fFieldHalfAngle == 0.) {
 
  275     << fFieldHalfAngle/
deg 
  279   oss << 
"\n/vis/viewer/zoomTo " 
  282   oss << 
"\n/vis/viewer/scaleTo " 
  284   << 
' ' << fScaleFactor.y()
 
  285   << 
' ' << fScaleFactor.z();
 
  287   oss << 
"\n/vis/viewer/set/targetPoint " 
  288   << 
G4BestUnit(standardTargetPoint+fCurrentTargetPoint,
"Length")
 
  289   << 
"\n# Note that if you have not set a target point, the vis system sets" 
  290   << 
"\n# a target point based on the scene - plus any panning and dollying -" 
  291   << 
"\n# so don't be alarmed by strange coordinates here.";
 
  293   oss << 
"\n/vis/viewer/dollyTo " 
  296   oss << 
"\n/vis/viewer/set/lightsMove ";
 
  297   if (fLightsMoveWithCamera) {
 
  303   oss << 
"\n/vis/viewer/set/lightsVector " 
  304   << fRelativeLightpointDirection.x()
 
  305   << 
' ' << fRelativeLightpointDirection.y()
 
  306   << 
' ' << fRelativeLightpointDirection.z();
 
  308   oss << 
"\n/vis/viewer/set/rotationStyle ";
 
  309   if (fRotationStyle == constrainUpDirection) {
 
  310     oss << 
"constrainUpDirection";
 
  312     oss << 
"freeRotation";
 
  316   oss << 
"\n/vis/viewer/set/background " 
  323   oss << 
"\n/vis/viewer/set/defaultColour " 
  329   c = fDefaultTextVisAttributes.
GetColour();
 
  330   oss << 
"\n/vis/viewer/set/defaultTextColour " 
  343   std::ostringstream oss;
 
  345   oss << 
"#\n# Drawing style commands";
 
  347   oss << 
"\n/vis/viewer/set/style ";
 
  348   if (fDrawingStyle == 
wireframe || fDrawingStyle == 
hlr) {
 
  354   oss << 
"\n/vis/viewer/set/hiddenEdge ";
 
  355   if (fDrawingStyle == 
hlr || fDrawingStyle == 
hlhsr) {
 
  361   oss << 
"\n/vis/viewer/set/auxiliaryEdge ";
 
  362   if (fAuxEdgeVisible) {
 
  368   oss << 
"\n/vis/viewer/set/hiddenMarker ";
 
  369   if (fMarkerNotHidden) {
 
  375   oss << 
"\n/vis/viewer/set/globalLineWidthScale " 
  376   << fGlobalLineWidthScale;
 
  378   oss << 
"\n/vis/viewer/set/globalMarkerScale " 
  379   << fGlobalMarkerScale;
 
  388   std::ostringstream oss;
 
  390   oss << 
"#\n# Scene-modifying commands";
 
  392   oss << 
"\n/vis/viewer/set/culling global ";
 
  399   oss << 
"\n/vis/viewer/set/culling invisible ";
 
  400   if (fCullInvisible) {
 
  406   oss << 
"\n/vis/viewer/set/culling density ";
 
  407   if (fDensityCulling) {
 
  408     oss << 
"true " << fVisibleDensity/(
g/
cm3) << 
" g/cm3";
 
  413   oss << 
"\n/vis/viewer/set/culling coveredDaughters ";
 
  420   oss << 
"\n/vis/viewer/set/sectionPlane ";
 
  424     << fSectionPlane.
normal().x()
 
  425     << 
' ' << fSectionPlane.
normal().y()
 
  426     << 
' ' << fSectionPlane.
normal().z();
 
  431   oss << 
"\n/vis/viewer/set/cutawayMode ";
 
  435     oss << 
"intersection";
 
  438   oss << 
"\n/vis/viewer/clearCutawayPlanes";
 
  439   if (fCutawayPlanes.size()) {
 
  440     for (
size_t i = 0; i < fCutawayPlanes.size(); i++) {
 
  441       oss << 
"\n/vis/viewer/addCutawayPlane " 
  442       << 
G4BestUnit(fCutawayPlanes[i].point(),
"Length")
 
  443       << fCutawayPlanes[i].normal().x()
 
  444       << 
' ' << fCutawayPlanes[i].normal().y()
 
  445       << 
' ' << fCutawayPlanes[i].normal().z();
 
  448     oss << 
"\n# No cutaway planes defined.";
 
  451   oss << 
"\n/vis/viewer/set/explodeFactor " 
  453   << 
' ' << 
G4BestUnit(fExplodeCentre,
"Length");
 
  455   oss << 
"\n/vis/viewer/set/lineSegmentsPerCircle " 
  465   std::ostringstream oss;
 
  467   oss << 
"#\n# Touchable commands";
 
  469   const std::vector<G4ModelingParameters::VisAttributesModifier>& vams =
 
  470     fVisAttributesModifiers;
 
  478   std::vector<G4ModelingParameters::VisAttributesModifier>::const_iterator
 
  480   for (iModifier = vams.begin();
 
  481        iModifier != vams.end();
 
  485       iModifier->GetPVNameCopyNoPath();
 
  486     if (vamPath != lastPath) {
 
  488       oss << 
"\n/vis/set/touchable";
 
  490       for (iVAM = vamPath.begin();
 
  491            iVAM != vamPath.end();
 
  493         oss << 
' ' << iVAM->GetName() << 
' ' << iVAM->GetCopyNo();
 
  498     switch (iModifier->GetVisAttributesSignifier()) {
 
  500         oss << 
"\n/vis/touchable/set/visibility ";
 
  508         oss << 
"\n/vis/touchable/set/daughtersInvisible ";
 
  516         oss << 
"\n/vis/touchable/set/colour " 
  523         oss << 
"\n/vis/touchable/set/lineStyle ";
 
  536         oss << 
"\n/vis/touchable/set/lineWidth " 
  541           oss << 
"\n/vis/touchable/set/forceWireframe ";
 
  551           oss << 
"\n/vis/touchable/set/forceSolid ";
 
  560         oss << 
"\n/vis/touchable/set/forceAuxEdgeVisible ";
 
  568         oss << 
"\n/vis/touchable/set/lineSegmentsPerCircle " 
  584       (fViewpointDirection   != v.fViewpointDirection)   ||
 
  587       (fDrawingStyle         != v.fDrawingStyle)         ||
 
  588       (fAuxEdgeVisible       != v.fAuxEdgeVisible)       ||
 
  589       (fCulling              != v.fCulling)              ||
 
  590       (fCullInvisible        != v.fCullInvisible)        ||
 
  591       (fDensityCulling       != v.fDensityCulling)       ||
 
  592       (fVisibleDensity       != v.fVisibleDensity)       ||
 
  593       (fCullCovered          != v.fCullCovered)          ||
 
  594       (fSection              != v.fSection)              ||
 
  595       (fNoOfSides            != v.fNoOfSides)            ||
 
  596       (fUpVector             != v.fUpVector)             ||
 
  597       (fFieldHalfAngle       != v.fFieldHalfAngle)       ||
 
  598       (fZoomFactor           != v.fZoomFactor)           ||
 
  599       (fScaleFactor          != v.fScaleFactor)          ||
 
  600       (fCurrentTargetPoint   != v.fCurrentTargetPoint)   ||
 
  601       (fDolly                != v.fDolly)                ||
 
  602       (fRelativeLightpointDirection != v.fRelativeLightpointDirection)  ||
 
  603       (fLightsMoveWithCamera != v.fLightsMoveWithCamera) ||
 
  604       (fDefaultVisAttributes != v.fDefaultVisAttributes) ||
 
  605       (fDefaultTextVisAttributes != v.fDefaultTextVisAttributes) ||
 
  606       (fDefaultMarker        != v.fDefaultMarker)        ||
 
  607       (fGlobalMarkerScale    != v.fGlobalMarkerScale)    ||
 
  608       (fGlobalLineWidthScale != v.fGlobalLineWidthScale) ||
 
  609       (fMarkerNotHidden      != v.fMarkerNotHidden)      ||
 
  610       (fWindowSizeHintX      != v.fWindowSizeHintX)      ||
 
  611       (fWindowSizeHintY      != v.fWindowSizeHintY)      ||
 
  612       (fXGeometryString      != v.fXGeometryString)      ||
 
  613       (fGeometryMask         != v.fGeometryMask)         ||
 
  614       (fAutoRefresh          != v.fAutoRefresh)          ||
 
  615       (fBackgroundColour     != v.fBackgroundColour)     || 
 
  616       (fPicking              != v.fPicking)              ||
 
  617       (fRotationStyle        != v.fRotationStyle)
 
  622     if (!(fSectionPlane == v.fSectionPlane))
 
  623       G4cout << 
"Difference in section planes batch." << 
G4endl;
 
  627     if (fCutawayPlanes.size () != v.fCutawayPlanes.size ()) {
 
  628       G4cout << 
"Difference in no of cutaway planes." << 
G4endl;
 
  631       for (
size_t i = 0; i < fCutawayPlanes.size (); i++) {
 
  632     if (!(fCutawayPlanes[i] == v.fCutawayPlanes[i]))
 
  633       G4cout << 
"Difference in cutaway plane no. " << i << G4endl;
 
  639     if (fExplodeFactor != v.fExplodeFactor)
 
  641     if (fExplodeCentre != v.fExplodeCentre)
 
  650     os << 
"wireframe"; 
break;
 
  652     os << 
"hlr - hidden lines removed"; 
break;
 
  654     os << 
"hsr - hidden surfaces removed"; 
break;
 
  656     os << 
"hlhsr - hidden line, hidden surface removed"; 
break;
 
  657   default: os << 
"unrecognised"; 
break;
 
  663   os << 
"View parameters and options:";
 
  665   os << 
"\n  Drawing style: ";
 
  666   switch (v.fDrawingStyle) {
 
  668     os << 
"edges, wireframe"; 
break;
 
  670     os << 
"edges, hidden line removal"; 
break;
 
  672     os << 
"surfaces, hidden surface removal"; 
break;
 
  674     os << 
"surfaces and edges, hidden line and surface removal"; 
break;
 
  675   default: os << 
"unrecognised"; 
break;
 
  678   os << 
"\n  Auxiliary edges: ";
 
  679   if (!v.fAuxEdgeVisible) os << 
"in";
 
  682   os << 
"\n  Culling: ";
 
  683   if (v.fCulling) os << 
"on";
 
  686   os << 
"\n  Culling invisible objects: ";
 
  687   if (v.fCullInvisible) os << 
"on";
 
  690   os << 
"\n  Density culling: ";
 
  691   if (v.fDensityCulling) {
 
  692     os << 
"on - invisible if density less than " 
  693        << v.fVisibleDensity / (1. * 
g / 
cm3) << 
" g cm^-3";
 
  697   os << 
"\n  Culling daughters covered by opaque mothers: ";
 
  698   if (v.fCullCovered) os << 
"on";
 
  701   os << 
"\n  Section flag: ";
 
  702   if (v.fSection) os << 
"true, section/cut plane: " << v.fSectionPlane;
 
  706     os << 
"\n  Cutaway planes: ";
 
  707     for (
size_t i = 0; i < v.fCutawayPlanes.size (); i++) {
 
  708       os << 
' ' << v.fCutawayPlanes[i];
 
  712     os << 
"\n  No cutaway planes";
 
  715   os << 
"\n  Explode factor: " << v.fExplodeFactor
 
  716      << 
" about centre: " << v.fExplodeCentre;
 
  718   os << 
"\n  No. of sides used in circle polygon approximation: " 
  721   os << 
"\n  Viewpoint direction:  " << v.fViewpointDirection;
 
  723   os << 
"\n  Up vector:            " << v.fUpVector;
 
  725   os << 
"\n  Field half angle:     " << v.fFieldHalfAngle;
 
  727   os << 
"\n  Zoom factor:          " << v.fZoomFactor;
 
  729   os << 
"\n  Scale factor:         " << v.fScaleFactor;
 
  731   os << 
"\n  Current target point: " << v.fCurrentTargetPoint;
 
  733   os << 
"\n  Dolly distance:       " << v.fDolly;
 
  736   if (v.fLightsMoveWithCamera) os << 
"moves";
 
  737   else                         os << 
"does not move";
 
  738   os << 
" with camera";
 
  740   os << 
"\n  Relative lightpoint direction: " 
  741      << v.fRelativeLightpointDirection;
 
  743   os << 
"\n  Actual lightpoint direction: " 
  744      << v.fActualLightpointDirection;
 
  746   os << 
"\n  Derived parameters for standard view of object of unit radius:";
 
  749   tempVP.fZoomFactor = 1.;
 
  757   os << 
"\n    Camera distance:   " << cameraDistance;
 
  758   os << 
"\n    Near distance:     " << nearDistance;
 
  759   os << 
"\n    Far distance:      " << farDistance;
 
  760   os << 
"\n    Front half height: " << 
right;
 
  762   os << 
"\n  Default VisAttributes:\n  " << v.fDefaultVisAttributes;
 
  764   os << 
"\n  Default TextVisAttributes:\n  " << v.fDefaultTextVisAttributes;
 
  766   os << 
"\n  Default marker: " << v.fDefaultMarker;
 
  768   os << 
"\n  Global marker scale: " << v.fGlobalMarkerScale;
 
  770   os << 
"\n  Global lineWidth scale: " << v.fGlobalLineWidthScale;
 
  773   if (v.fMarkerNotHidden) os << 
"not ";
 
  774   os << 
"hidden by surfaces.";
 
  776   os << 
"\n  Window size hint: " 
  777      << v.fWindowSizeHintX << 
'x'<< v.fWindowSizeHintX;
 
  779   os << 
"\n  X geometry string: " << v.fXGeometryString;
 
  780   os << 
"\n  X geometry mask: " 
  781      << std::showbase << std::hex << v.fGeometryMask
 
  782      << std::noshowbase << std::dec;
 
  784   os << 
"\n  Auto refresh: ";
 
  785   if (v.fAutoRefresh) os << 
"true";
 
  788   os << 
"\n  Background colour: " << v.fBackgroundColour;
 
  790   os << 
"\n  Picking requested: ";
 
  791   if (v.fPicking) os << 
"true";
 
  794   os << 
"\n  Rotation style: ";
 
  795   switch (v.fRotationStyle) {
 
  797     os << 
"constrainUpDirection (conventional HEP view)"; 
break;
 
  799     os << 
"freeRotation (Google-like rotation, using mouse-grab)"; 
break;
 
  800   default: os << 
"unrecognised"; 
break;
 
  803   os << 
"\n  Vis attributes modifiers: ";
 
  804   const std::vector<G4ModelingParameters::VisAttributesModifier>& vams =
 
  805     v.fVisAttributesModifiers;
 
  820       (fViewpointDirection   != v.fViewpointDirection)   ||
 
  823       (fDrawingStyle         != v.fDrawingStyle)         ||
 
  824       (fAuxEdgeVisible       != v.fAuxEdgeVisible)       ||
 
  825       (fCulling              != v.fCulling)              ||
 
  826       (fCullInvisible        != v.fCullInvisible)        ||
 
  827       (fDensityCulling       != v.fDensityCulling)       ||
 
  828       (fCullCovered          != v.fCullCovered)          ||
 
  829       (fSection              != v.fSection)              ||
 
  832       (fNoOfSides            != v.fNoOfSides)            ||
 
  833       (fUpVector             != v.fUpVector)             ||
 
  834       (fFieldHalfAngle       != v.fFieldHalfAngle)       ||
 
  835       (fZoomFactor           != v.fZoomFactor)           ||
 
  836       (fScaleFactor          != v.fScaleFactor)          ||
 
  837       (fCurrentTargetPoint   != v.fCurrentTargetPoint)   ||
 
  838       (fDolly                != v.fDolly)                ||
 
  839       (fRelativeLightpointDirection != v.fRelativeLightpointDirection)  ||
 
  840       (fLightsMoveWithCamera != v.fLightsMoveWithCamera) ||
 
  841       (fDefaultVisAttributes != v.fDefaultVisAttributes) ||
 
  842       (fDefaultTextVisAttributes != v.fDefaultTextVisAttributes) ||
 
  843       (fDefaultMarker        != v.fDefaultMarker)        ||
 
  844       (fGlobalMarkerScale    != v.fGlobalMarkerScale)    ||
 
  845       (fGlobalLineWidthScale != v.fGlobalLineWidthScale) ||
 
  846       (fMarkerNotHidden      != v.fMarkerNotHidden)      ||
 
  847       (fWindowSizeHintX      != v.fWindowSizeHintX)      ||
 
  848       (fWindowSizeHintY      != v.fWindowSizeHintY)      ||
 
  849       (fXGeometryString      != v.fXGeometryString)      ||
 
  850       (fGeometryMask         != v.fGeometryMask)         ||
 
  851       (fAutoRefresh          != v.fAutoRefresh)          ||
 
  852       (fBackgroundColour     != v.fBackgroundColour)     ||
 
  853       (fPicking              != v.fPicking)              ||
 
  854       (fRotationStyle        != v.fRotationStyle)
 
  858   if (fDensityCulling &&
 
  859       (fVisibleDensity != v.fVisibleDensity)) 
return true;
 
  862       (!(fSectionPlane == v.fSectionPlane))) 
return true;
 
  865     if (fCutawayPlanes.size () != v.fCutawayPlanes.size ())
 
  868       for (
size_t i = 0; i < fCutawayPlanes.size (); i++) {
 
  869     if (!(fCutawayPlanes[i] == v.fCutawayPlanes[i])) 
return true;
 
  875       ((fExplodeFactor != v.fExplodeFactor) ||
 
  876        (fExplodeCentre != v.fExplodeCentre))) 
return true;
 
  878   if (fVisAttributesModifiers != v.fVisAttributesModifiers) 
return true;
 
  887   unsigned int w,h = 0;
 
  888   G4String geomString = geomStringArg;
 
  891   G4String::size_type i = geomString.find_first_of(delimiters);
 
  892   if (i == G4String::npos) {  
 
  893     std::istringstream iss(geomString);
 
  898       G4cout << 
"Unrecognised windowSizeHint string: \"" 
  900          << 
"\".  Asuuming " << size << 
G4endl;
 
  902     std::ostringstream oss;
 
  903     oss << size << 
'x' << size;
 
  904     geomString = oss.str();
 
  907   fGeometryMask = ParseGeometry( geomString, &x, &y, &w, &h );
 
  910   if ((fGeometryMask & fYValue) == 0)
 
  912       y =  fWindowLocationHintY;
 
  914   if ((fGeometryMask & fXValue) == 0)
 
  916       x =  fWindowLocationHintX;
 
  921   if ( ((fGeometryMask & fHeightValue) == 0 ) &&
 
  922        ((fGeometryMask & fWidthValue)  == 0 )) {
 
  923     h = fWindowSizeHintY;
 
  924     w = fWindowSizeHintX;
 
  925   } 
else  if ((fGeometryMask & fHeightValue) == 0 ) {
 
  930     G4cout << 
"Unrecognised geometry string \"" 
  932            << 
"\".  No Height found. Using Width value instead" 
  936   if ( ((fGeometryMask & fXValue) == 0 ) ||
 
  937        ((fGeometryMask & fYValue)  == 0 )) {
 
  939     x = fWindowLocationHintX;
 
  940     y = fWindowLocationHintY;
 
  943   fXGeometryString = geomString;
 
  946   fWindowSizeHintX = w;
 
  947   fWindowSizeHintY = h;
 
  948   fWindowLocationHintX = 
x;
 
  949   fWindowLocationHintY = 
y;
 
  951   if ( ((fGeometryMask & fXValue)) &&
 
  952        ((fGeometryMask & fYValue))) {
 
  954     if ( (fGeometryMask & fXNegative) ) {
 
  955       fWindowLocationHintXNegative = 
true;
 
  957       fWindowLocationHintXNegative = 
false;
 
  959     if ( (fGeometryMask & fYNegative) ) {
 
  960     fWindowLocationHintYNegative = 
true;
 
  962       fWindowLocationHintYNegative = 
false;
 
  968   if ( fWindowLocationHintXNegative ) {
 
  969     return  sizeX  + fWindowLocationHintX - fWindowSizeHintX;
 
  971   return fWindowLocationHintX;
 
  975   if (  fWindowLocationHintYNegative ) {
 
  976     return  sizeY  + fWindowLocationHintY - fWindowSizeHintY;
 
  978   return fWindowLocationHintY;
 
  995 int G4ViewParameters::ParseGeometry (
 
 1000  unsigned int *height)
 
 1003   G4int mask = fNoValue;
 
 1004   register char *strind;
 
 1005   unsigned int tempWidth  = 0;
 
 1006   unsigned int tempHeight = 0;
 
 1009   char *nextCharacter;
 
 1010   if ( (
string == NULL) || (*
string == 
'\0')) {
 
 1015   strind = (
char *)
string;
 
 1016   if (*strind != 
'+' && *strind != 
'-' && *strind != 
'x') {
 
 1017     tempWidth = ReadInteger(strind, &nextCharacter);
 
 1018     if (strind == nextCharacter)
 
 1020     strind = nextCharacter;
 
 1021     mask |= fWidthValue;
 
 1023   if (*strind == 
'x' || *strind == 
'X') {
 
 1025     tempHeight = ReadInteger(strind, &nextCharacter);
 
 1026     if (strind == nextCharacter)
 
 1028     strind = nextCharacter;
 
 1029     mask |= fHeightValue;
 
 1032   if ((*strind == 
'+') || (*strind == 
'-')) {
 
 1033     if (*strind == 
'-') {
 
 1035       tempX = -ReadInteger(strind, &nextCharacter);
 
 1036       if (strind == nextCharacter)
 
 1038       strind = nextCharacter;
 
 1044         tempX = ReadInteger(strind, &nextCharacter);
 
 1045         if (strind == nextCharacter)
 
 1047         strind = nextCharacter;
 
 1050     if ((*strind == 
'+') || (*strind == 
'-')) {
 
 1051       if (*strind == 
'-') {
 
 1053         tempY = -ReadInteger(strind, &nextCharacter);
 
 1054         if (strind == nextCharacter)
 
 1056         strind = nextCharacter;
 
 1062           tempY = ReadInteger(strind, &nextCharacter);
 
 1063           if (strind == nextCharacter)
 
 1065           strind = nextCharacter;
 
 1072   if (*strind != 
'\0') 
return (0);
 
 1077   if (mask & fWidthValue)
 
 1079   if (mask & fHeightValue)
 
 1080     *height = tempHeight;
 
 1088 G4int G4ViewParameters::ReadInteger(
char *
string, 
char **NextString)
 
 1090     register G4int Result = 0;
 
 1095     else if (*
string == 
'-')
 
 1100     for (; (*
string >= 
'0') && (*
string <= 
'9'); 
string++)
 
 1102     Result = (Result * 10) + (*
string - 
'0');
 
 1104     *NextString = string;
 
G4bool IsForceAuxEdgeVisible() const 
G4String TouchableCommands() const 
void IncrementPan(G4double right, G4double up)
G4Vector3D & GetActualLightpointDirection()
G4double GetAlpha() const 
void AddCutawayPlane(const G4Plane3D &cutawayPlane)
void SetLightpointDirection(const G4Vector3D &lightpointDirection)
void SetPan(G4double right, G4double up)
G4int SetNoOfSides(G4int nSides)
G4int GetWindowAbsoluteLocationHintX(G4int) const 
G4double GetLineWidth() const 
G4bool operator!=(const G4ViewParameters &) const 
BasicVector3D< T > unit() const 
G4int GetWindowAbsoluteLocationHintY(G4int) const 
static G4bool GetColour(const G4String &key, G4Colour &result)
const G4Colour & GetColour() const 
G4String SceneModifyingCommands() const 
Normal3D< T > normal() const 
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1 
G4double GetFarDistance(G4double cameraDistance, G4double nearDistance, G4double radius) const 
void SetVisibleDensity(G4double visibleDensity)
LineStyle GetLineStyle() const 
G4double GetCameraDistance(G4double radius) const 
void SetViewAndLights(const G4Vector3D &viewpointDirection)
G4double GetNearDistance(G4double cameraDistance, G4double radius) const 
G4GLOB_DLL std::ostream G4cout
void ChangeCutawayPlane(size_t index, const G4Plane3D &cutawayPlane)
G4bool IsDaughtersInvisible() const 
G4double GetGreen() const 
G4double GetFrontHalfHeight(G4double nearDistance, G4double radius) const 
void SetXGeometryString(const G4String &)
Point3D< T > point(const Point3D< T > &p) const 
G4String DrawingStyleCommands() const 
G4int GetForcedLineSegmentsPerCircle() const 
void PrintDifferences(const G4ViewParameters &v) const 
std::vector< PVNameCopyNo > PVNameCopyNoPath
G4bool IsForceDrawingStyle() const 
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
G4String CameraAndLightingCommands(const G4Point3D standardTargetPoint) const 
void MultiplyScaleFactor(const G4Vector3D &scaleFactorMultiplier)
short Sign(short a, short b)
BasicVector3D< T > cross(const BasicVector3D< T > &v) const 
ForcedDrawingStyle GetForcedDrawingStyle() const 
PVNameCopyNoPath::const_iterator PVNameCopyNoPathConstIterator
void SetScreenSize(G4double)