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)
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 * fpCommandExportFormat
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 * fpCommandExport
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)