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 (
"/vis/ogl/set/printMode",
this);
224 parameterPrintSize =
new G4UIparameter (
"width",
'd', omitable =
false);
227 parameterPrintSize =
new G4UIparameter (
"height",
'd', omitable =
false);
234 parameter =
new G4UIparameter (
"start-time",
'd', omitable =
false);
237 parameter =
new G4UIparameter (
"start-time-unit",
's', omitable =
false);
240 parameter =
new G4UIparameter (
"time-range",
'd', omitable =
true);
243 parameter =
new G4UIparameter (
"time-range-unit",
's', omitable =
true);
250 (
"True/false to enable/disable rendering of transparent objects.");
252 (
"transparency-enabled", omitable =
true);
285 "G4OpenGLViewerMessenger::SetNewValue: No current viewer."
286 "\n \"/vis/open\", or similar, to get one."
291 G4OpenGLViewer* pOGLViewer =
dynamic_cast<G4OpenGLViewer*
>(pViewer);
295 "G4OpenGLViewerMessenger::SetNewValue: Current viewer is not of type"
298 "\".)\n Use \"/vis/viewer/select\" or \"/vis/open\"."
305 pOGLViewer->printEPS();
306 if (pOGLViewer->fVP.IsAutoRefresh())
314 std::istringstream iss(newValue);
317 pOGLViewer->setPrintSize(width,height);
325 std::istringstream iss(newValue);
328 pOGLViewer->setPrintFilename(name,inc);
334 if (newValue ==
"vectored") pOGLViewer->fVectoredPs =
true;
335 if (newValue ==
"pixmap") pOGLViewer->fVectoredPs =
false;
341 pOGLViewer->transparency_enabled = command->
ConvertToBool(newValue);
342 if (pOGLViewer->fVP.IsAutoRefresh())
347 G4OpenGLStoredViewer* pOGLSViewer =
348 dynamic_cast<G4OpenGLStoredViewer*
>(pViewer);
353 "G4OpenGLViewerMessenger::SetNewValue: Current viewer is not of type OGLS."
354 "\n (It is \"" << pViewer->
GetName() <<
"\".)"
355 "\n This feature is only implemented for OGL Stored viewers."
356 "\n Use \"/vis/viewer/select\" or \"/vis/open OGLS...\"."
365 std::istringstream iss(newValue);
366 iss >> display >> screenX >> screenY
367 >> screenSize >> red >> green >>
blue;
368 pOGLSViewer->fDisplayHeadTime = command->
ConvertToBool(display);
369 pOGLSViewer->fDisplayHeadTimeX = screenX;
370 pOGLSViewer->fDisplayHeadTimeY = screenY;
371 pOGLSViewer->fDisplayHeadTimeSize = screenSize;
372 pOGLSViewer->fDisplayHeadTimeRed =
red;
373 pOGLSViewer->fDisplayHeadTimeGreen = green;
374 pOGLSViewer->fDisplayHeadTimeBlue =
blue;
380 G4String display, originX, originY, originZ, unitS, originT, unitT;
382 std::istringstream iss(newValue);
384 >> originX >> originY >> originZ >> unitS
386 >> red >> green >>
blue;
387 pOGLSViewer->fDisplayLightFront = command->
ConvertToBool(display);
388 pOGLSViewer->fDisplayLightFrontX =
390 pOGLSViewer->fDisplayLightFrontY =
392 pOGLSViewer->fDisplayLightFrontZ =
394 pOGLSViewer->fDisplayLightFrontT =
396 pOGLSViewer->fDisplayLightFrontRed =
red;
397 pOGLSViewer->fDisplayLightFrontGreen = green;
398 pOGLSViewer->fDisplayLightFrontBlue =
blue;
404 G4String end_time_string, end_time_unit,
405 time_range_string, time_range_unit;
406 std::istringstream iss(newValue);
407 iss >> end_time_string >> end_time_unit
408 >> time_range_string >> time_range_unit;
410 (
G4String(end_time_string +
' ' + end_time_unit));
412 (
G4String(time_range_string +
' ' + time_range_unit));
413 if (timeRange > 0.) {
414 pOGLSViewer->fStartTime = pOGLSViewer->fEndTime - timeRange;
416 if (pOGLSViewer->fVP.IsAutoRefresh())
424 if (pOGLSViewer->fVP.IsAutoRefresh())
431 G4String start_time_string, start_time_unit,
432 time_range_string, time_range_unit;
433 std::istringstream iss(newValue);
434 iss >> start_time_string >> start_time_unit
435 >> time_range_string >> time_range_unit;
437 (
G4String(start_time_string +
' ' + start_time_unit));
439 (
G4String(time_range_string +
' ' + time_range_unit));
440 if (timeRange > 0.) {
441 pOGLSViewer->fEndTime = pOGLSViewer->fStartTime + timeRange;
443 if (pOGLSViewer->fVP.IsAutoRefresh())
450 if (!pSceneHandler) {
452 "G4OpenGLViewerMessenger::SetNewValue: This viewer has no scene handler."
453 "\n Shouldn't happen - please report circumstances."
454 "\n (Viewer is \"" << pViewer->
GetName() <<
"\".)"
455 "\n Try \"/vis/open\", or similar, to get one."
460 G4OpenGLSceneHandler* pOGLSceneHandler =
461 dynamic_cast<G4OpenGLSceneHandler*
>(pSceneHandler);
463 if (!pOGLSceneHandler) {
465 "G4OpenGLViewerMessenger::SetNewValue: Current scene handler is not of type"
466 "\n OGL. (Viewer is \"" << pViewer->
GetName() <<
"\".)"
467 "\n (Scene handler is \"" << pSceneHandler->
GetName() <<
"\".)"
468 "\n Use \"/vis/sceneHandler/list\" and \"/vis/sceneHandler/select\""
469 "\n or \"/vis/open\"."
476 G4int eventsDrawInterval =
478 pOGLSceneHandler->SetEventsDrawInterval(eventsDrawInterval);
482 G4OpenGLStoredSceneHandler* pOGLSSceneHandler =
485 if (!pOGLSSceneHandler) {
487 "G4OpenGLViewerMessenger::SetNewValue: Current scene handler is not of type"
488 "\n OGLS (Stored). (Viewer is \"" << pViewer->
GetName() <<
"\".)"
489 "\n (Scene handler is \"" << pSceneHandler->
GetName() <<
"\".)"
490 "\n This feature is only implemented for OGL Stored"
491 "\n scene handlers. Use \"/vis/viewer/select\" or \"/vis/open OGLS...\"."
498 G4int displayListLimit =
500 pOGLSSceneHandler->SetDisplayListLimit(displayListLimit);
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
const G4String & GetName() const
void SetParameter(G4UIparameter *const newParameter)
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
void SetDefaultValue(const char *theDefaultValue)
const G4String & GetName() const
G4UIdirectory * fpDirectory
G4UIdirectory * fpDirectorySet
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 * fpCommandPrintSize
G4UIcommand * fpCommandDisplayLightFront
G4UIcommand * fpCommandEndTime
void SetDefaultValue(const char *defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
G4VSceneHandler * GetSceneHandler() const
G4UIcmdWithADouble * fpCommandFade
G4UIcmdWithABool * fpCommandTransparency
void SetDefaultValue(G4double defVal)
static G4OpenGLViewerMessenger * fpInstance
G4UIcommand * fpCommandStartTime
void SetCandidates(const char *candidateList)
G4VViewer * GetCurrentViewer() const
void SetDefaultValue(G4int defVal)
void SetGuidance(const char *theGuidance)
G4OpenGLViewerMessenger()
G4UIcommand * fpCommandDisplayHeadTime
G4int ApplyCommand(const char *aCommand)