29 #ifdef G4VIS_BUILD_OPENGL_DRIVER    70     new G4UIcommand(
"/vis/ogl/set/displayHeadTime", 
this);
    72     (
"Display head time of range in 2D text.");
    73   parameter = 
new G4UIparameter (
"displayHeadTime", 
'b', omitable = 
false);
    76   parameter = 
new G4UIparameter (
"screenX", 
'd', omitable = 
true);
    81   parameter = 
new G4UIparameter (
"screenY", 
'd', omitable = 
true);
    86   parameter = 
new G4UIparameter (
"screenSize", 
'd', omitable = 
true);
    93   parameter = 
new G4UIparameter (
"green", 
'd', omitable = 
true);
   103     new G4UIcommand(
"/vis/ogl/set/displayLightFront", 
this);
   105     (
"Display the light front at head time.");
   107     (
"Tip: The trajectories can appear of jump ahead of the light front"   108      "\nbecause their time range overlaps the viewer's time range.  To"   109      "\naverage out this discrete time effect, advance the light front by"   110      "\nhalf the trajectories interval. E.g., if the trajectory time slice"   111      "\ninterval is 0.01 ns:"   112      "\n  /vis/ogl/set/displayLightFront true -90 0 0 mm -0.005 ns"   113      "\nTo prevent them beating the light front at all:"   114      "\n  /vis/ogl/set/displayLightFront true -90 0 0 mm -0.01 ns");
   115   parameter = 
new G4UIparameter (
"displayLightFront", 
'b', omitable = 
false);
   118   parameter = 
new G4UIparameter (
"originX", 
'd', omitable = 
true);
   121   parameter = 
new G4UIparameter (
"originY", 
'd', omitable = 
true);
   124   parameter = 
new G4UIparameter (
"originZ", 
'd', omitable = 
true);
   127   parameter = 
new G4UIparameter (
"space_unit", 
's', omitable = 
true);
   130   parameter = 
new G4UIparameter (
"originT", 
'd', omitable = 
true);
   133   parameter = 
new G4UIparameter (
"time_unit", 
's', omitable = 
true);
   140   parameter = 
new G4UIparameter (
"green", 
'd', omitable = 
true);
   144   parameter = 
new G4UIparameter (
"blue", 
'd', omitable = 
true);
   152     (
"Set/reset display list limit (to avoid memory exhaustion).");
   160   parameter = 
new G4UIparameter (
"end-time", 
'd', omitable = 
false);
   163   parameter = 
new G4UIparameter (
"end-time-unit", 
's', omitable = 
false);
   166   parameter = 
new G4UIparameter (
"time-range", 
'd', omitable = 
true);
   169   parameter = 
new G4UIparameter (
"time-range-unit", 
's', omitable = 
true);
   176     (
"Set number of events allowed in drawing pipeline - speeds drawing");
   178     (
"By default, the screen is updated at the end of every event."   179      "\nAllowing OpenGL to buffer several events can make a big improvement"   180      "\nin drawing speed.");
   186     (
"0: no fade; 1: maximum fade with time within range.");
   195     (
"Generates files with names G4OpenGL_n.eps, where n is a sequence"   196      "\nnumber, starting at 0."   197      "\nCan be \"vectored\" or \"pixmap\" - see \"/vis/ogl/set/printMode\".");
   200     new G4UIcommand(
"/vis/ogl/set/printFilename", 
this);
   204   parameterPrintFilename = 
new G4UIparameter (
"name", 
's', omitable = 
true);
   207   parameterPrintFilename = 
new G4UIparameter (
"incremental", 
'b', omitable = 
true);
   212   new G4UIcommand(
"/vis/ogl/set/exportFormat", 
this);
   218   parameterExportFormat = 
new G4UIparameter (
"format", 
's', omitable = 
true);
   226   fpCommandExport->
SetGuidance (
"If name is \"toto.png\", set the name to \"toto\" and the format to \"png\". No incremented suffix is added.");
   227   fpCommandExport->
SetGuidance (
"If name is \"toto\", set the name to \"toto\" and the format to default (or current format if specify). Will also add an incremented suffix at the end of the file, except if name is the same as previous it will not reset incremented suffix.");
   231   parameterExport = 
new G4UIparameter (
"name", 
's', omitable = 
true);
   233   parameterExport->
SetGuidance(
"by default, will take a default value or the last /vis/ogl/set/printFilename value if set");
   235   parameterExport = 
new G4UIparameter (
"width", 
'd', omitable = 
true);
   236   parameterExport->
SetGuidance(
"By default, will take the current width of the viewer or /vis/ogl/set/printSize if set");
   237   parameterExport->
SetGuidance(
"This parameter is only useful for eps/pdf/svg/ps formats !");
   240   parameterExport = 
new G4UIparameter (
"height", 
'd', omitable = 
true);
   241   parameterExport->
SetGuidance(
"By default, will take the current height of the viewer or /vis/ogl/set/printSize if set");
   242   parameterExport->
SetGuidance(
"This parameter is only useful for eps/pdf/svg/ps formats !");
   247     (
"/vis/ogl/set/printMode",
this);
   259   parameterPrintSize = 
new G4UIparameter (
"width", 
'd', omitable = 
false);
   262   parameterPrintSize = 
new G4UIparameter (
"height", 
'd', omitable = 
false);
   269   parameter = 
new G4UIparameter (
"start-time", 
'd', omitable = 
false);
   272   parameter = 
new G4UIparameter (
"start-time-unit", 
's', omitable = 
false);
   275   parameter = 
new G4UIparameter (
"time-range", 
'd', omitable = 
true);
   278   parameter = 
new G4UIparameter (
"time-range-unit", 
's', omitable = 
true);
   285     (
"True/false to enable/disable rendering of transparent objects.");
   287     (
"transparency-enabled", omitable = 
true);
   322       "G4OpenGLViewerMessenger::SetNewValue: No current viewer."   323       "\n  \"/vis/open\", or similar, to get one."   328   G4OpenGLViewer* pOGLViewer = 
dynamic_cast<G4OpenGLViewer*
>(pViewer);
   332       "G4OpenGLViewerMessenger::SetNewValue: Current viewer is not of type"   335       "\".)\n  Use \"/vis/viewer/select\" or \"/vis/open\"."   342     pOGLViewer->setExportImageFormat(
"eps",
true);
   343     pOGLViewer->exportImage();
   345     if (pOGLViewer->fVP.IsAutoRefresh())
   353     std::istringstream iss(newValue);
   355     pOGLViewer->setExportImageFormat(name);
   364     std::istringstream iss(newValue);
   365     iss >> name >> width >> height;
   366     pOGLViewer->exportImage(name, width, height);
   368     if (pOGLViewer->fVP.IsAutoRefresh())
   376       std::istringstream iss(newValue);
   379       pOGLViewer->setExportSize(width,height);
   387       std::istringstream iss(newValue);
   390       pOGLViewer->setExportFilename(name,inc);
   396       if (newValue == 
"vectored") pOGLViewer->fVectoredPs = 
true;
   397       if (newValue == 
"pixmap") pOGLViewer->fVectoredPs = 
false;
   403       pOGLViewer->transparency_enabled = command->
ConvertToBool(newValue);
   404       if (pOGLViewer->fVP.IsAutoRefresh())
   409   G4OpenGLStoredViewer* pOGLSViewer =
   410     dynamic_cast<G4OpenGLStoredViewer*
>(pViewer);
   415   "G4OpenGLViewerMessenger::SetNewValue: Current viewer is not of type OGLS."   416   "\n  (It is \"" << pViewer->
GetName() << 
"\".)"   417   "\n  This feature is only implemented for OGL Stored viewers."   418   "\n  Use \"/vis/viewer/select\" or \"/vis/open OGLS...\"."   427       std::istringstream iss(newValue);
   428       iss >> display >> screenX >> screenY
   429       >> screenSize >> red >> green >> 
blue;
   430       pOGLSViewer->fDisplayHeadTime = command->
ConvertToBool(display);
   431       pOGLSViewer->fDisplayHeadTimeX = screenX;
   432       pOGLSViewer->fDisplayHeadTimeY = screenY;
   433       pOGLSViewer->fDisplayHeadTimeSize = screenSize;
   434       pOGLSViewer->fDisplayHeadTimeRed = 
red;
   435       pOGLSViewer->fDisplayHeadTimeGreen = green;
   436       pOGLSViewer->fDisplayHeadTimeBlue = 
blue;
   442       G4String display, originX, originY, originZ, unitS, originT, unitT;
   444       std::istringstream iss(newValue);
   446       >> originX >> originY >> originZ >> unitS
   448       >> red >> green >> 
blue;
   449       pOGLSViewer->fDisplayLightFront = command->
ConvertToBool(display);
   450       pOGLSViewer->fDisplayLightFrontX =
   452       pOGLSViewer->fDisplayLightFrontY =
   454       pOGLSViewer->fDisplayLightFrontZ =
   456       pOGLSViewer->fDisplayLightFrontT =
   458       pOGLSViewer->fDisplayLightFrontRed = 
red;
   459       pOGLSViewer->fDisplayLightFrontGreen = green;
   460       pOGLSViewer->fDisplayLightFrontBlue = 
blue;
   466       G4String end_time_string, end_time_unit,
   467     time_range_string, time_range_unit;
   468       std::istringstream iss(newValue);
   469       iss >> end_time_string >> end_time_unit
   470       >> time_range_string >> time_range_unit;
   472     (
G4String(end_time_string + 
' ' + end_time_unit));
   474     (
G4String(time_range_string + 
' ' + time_range_unit));
   475       if (timeRange > 0.) {
   476     pOGLSViewer->fStartTime = pOGLSViewer->fEndTime - timeRange;
   478       if (pOGLSViewer->fVP.IsAutoRefresh())
   486       if (pOGLSViewer->fVP.IsAutoRefresh())
   493       G4String start_time_string, start_time_unit,
   494     time_range_string, time_range_unit;
   495       std::istringstream iss(newValue);
   496       iss >> start_time_string >> start_time_unit
   497       >> time_range_string >> time_range_unit;
   499     (
G4String(start_time_string + 
' ' + start_time_unit));
   501     (
G4String(time_range_string + 
' ' + time_range_unit));
   502       if (timeRange > 0.) {
   503     pOGLSViewer->fEndTime = pOGLSViewer->fStartTime + timeRange;
   505       if (pOGLSViewer->fVP.IsAutoRefresh())
   512   if (!pSceneHandler) {
   514   "G4OpenGLViewerMessenger::SetNewValue: This viewer has no scene handler."   515   "\n  Shouldn't happen - please report circumstances."   516   "\n  (Viewer is \"" << pViewer->
GetName() << 
"\".)"   517   "\n  Try \"/vis/open\", or similar, to get one."   522   G4OpenGLSceneHandler* pOGLSceneHandler =
   523     dynamic_cast<G4OpenGLSceneHandler*
>(pSceneHandler);
   525   if (!pOGLSceneHandler) {
   527   "G4OpenGLViewerMessenger::SetNewValue: Current scene handler is not of type"   528   "\n  OGL.  (Viewer is \"" << pViewer->
GetName() << 
"\".)"   529   "\n  (Scene handler is \"" << pSceneHandler->
GetName() << 
"\".)"   530   "\n  Use \"/vis/sceneHandler/list\" and \"/vis/sceneHandler/select\""   531   "\n  or \"/vis/open\"."   538       G4int eventsDrawInterval =
   540       pOGLSceneHandler->SetEventsDrawInterval(eventsDrawInterval);
   544   G4OpenGLStoredSceneHandler* pOGLSSceneHandler =
   547   if (!pOGLSSceneHandler) {
   549   "G4OpenGLViewerMessenger::SetNewValue: Current scene handler is not of type"   550   "\n  OGLS (Stored).  (Viewer is \"" << pViewer->
GetName() << 
"\".)"   551   "\n  (Scene handler is \"" << pSceneHandler->
GetName() << 
"\".)"   552   "\n  This feature is only implemented for OGL Stored"   553   "\n  scene handlers.  Use \"/vis/viewer/select\" or \"/vis/open OGLS...\"."   560       G4int displayListLimit =
   562       pOGLSSceneHandler->SetDisplayListLimit(displayListLimit);
 void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
 
void SetParameter(G4UIparameter *const newParameter)
 
G4VViewer * GetCurrentViewer() const
 
G4UIcmdWithAnInteger * fpCommandDisplayListLimit
 
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
 
static G4int GetNewIntValue(const char *paramString)
 
void SetParameterRange(const char *theRange)
 
G4UIcmdWithAString * fpCommandPrintMode
 
const G4String & GetName() const
 
void SetDefaultValue(const char *theDefaultValue)
 
G4UIdirectory * fpDirectory
 
G4UIdirectory * fpDirectorySet
 
G4VSceneHandler * GetSceneHandler() const
 
void SetNewValue(G4UIcommand *, G4String)
 
static G4double ConvertToDimensionedDouble(const char *st)
 
void SetDefaultValue(G4bool defVal)
 
static G4UImanager * GetUIpointer()
 
G4UIcmdWithoutParameter * fpCommandPrintEPS
 
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
 
~G4OpenGLViewerMessenger()
 
G4UIcommand * fpCommandPrintFilename
 
G4GLOB_DLL std::ostream G4cout
 
static G4OpenGLViewerMessenger * GetInstance()
 
G4UIcmdWithAnInteger * fpCommandEventsDrawInterval
 
static G4bool ConvertToBool(const char *st)
 
void SetRange(const char *rs)
 
void SetGuidance(const char *aGuidance)
 
static G4VisManager * GetInstance()
 
static G4double ConvertToDouble(const char *st)
 
G4UIcommand * fpCommandExportFormat
 
G4UIcommand * fpCommandPrintSize
 
G4UIcommand * fpCommandDisplayLightFront
 
G4UIcommand * fpCommandEndTime
 
void SetDefaultValue(const char *defVal)
 
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
 
G4UIcmdWithADouble * fpCommandFade
 
G4UIcmdWithABool * fpCommandTransparency
 
void SetDefaultValue(G4double defVal)
 
static G4OpenGLViewerMessenger * fpInstance
 
G4UIcommand * fpCommandExport
 
G4UIcommand * fpCommandStartTime
 
const G4String & GetName() const
 
void SetCandidates(const char *candidateList)
 
void SetDefaultValue(G4int defVal)
 
void SetGuidance(const char *theGuidance)
 
G4OpenGLViewerMessenger()
 
G4UIcommand * fpCommandDisplayHeadTime
 
G4int ApplyCommand(const char *aCommand)