Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4OpenInventorViewer Class Referenceabstract

#include <G4OpenInventorViewer.hh>

Inheritance diagram for G4OpenInventorViewer:

Public Member Functions

virtual void DrawView ()
virtual void ShowView ()
virtual void ClearView ()
virtual void SetView ()
virtual void KernelVisitDecision ()
 G4OpenInventorViewer (G4OpenInventorSceneHandler &scene, const G4String &name="")
virtual ~G4OpenInventorViewer ()
Public Member Functions inherited from G4VViewer
 G4VViewer (G4VSceneHandler &, G4int id, const G4String &name="")
virtual ~G4VViewer ()
virtual void Initialise ()
virtual void ResetView ()
void RefreshView ()
virtual void FinishView ()
virtual G4bool ReadyToDraw ()
std::vector< G4ThreeVectorComputeFlyThrough (G4Vector3D *)
virtual void DoneWithMasterThread ()
virtual void MovingToVisSubThread ()
virtual void SwitchToVisSubThread ()
virtual void DoneWithVisSubThread ()
virtual void MovingToMasterThread ()
virtual void SwitchToMasterThread ()
void InsertModelInSceneTree (G4VModel *)
const G4SceneTreeItemGetSceneTree ()
G4SceneTreeItemAccessSceneTree ()
void UpdateGUISceneTree ()
void UpdateGUIControlWidgets ()
void UpdateGUIDrawingStyle ()
void UpdateGUIProjectionStyle ()
void UpdateGUITransparencySlider ()
const G4StringGetName () const
const G4StringGetShortName () const
void SetName (const G4String &)
G4int GetViewId () const
G4VSceneHandlerGetSceneHandler () const
const G4ViewParametersGetViewParameters () const
const G4ViewParametersGetDefaultViewParameters () const
G4double GetKernelVisitElapsedTimeSeconds () const
virtual const std::vector< G4ModelingParameters::VisAttributesModifier > * GetPrivateVisAttributesModifiers () const
void SetViewParameters (const G4ViewParameters &vp)
void SetDefaultViewParameters (const G4ViewParameters &vp)
const G4VisAttributesGetApplicableVisAttributes (const G4VisAttributes *) const
void SetNeedKernelVisit (G4bool need)
void NeedKernelVisit ()
void ProcessView ()
void ProcessTransients ()
void ZoomFromMouseWheel (G4double delta, G4bool shift=false, G4double xPos=0, G4double yPos=0)
virtual G4bool GetWindowSize (unsigned int &a_w, unsigned int &a_h)
virtual G4double GetSceneNearWidth ()

Protected Member Functions

virtual void ViewerRender ()=0
virtual SoCamera * GetCamera ()=0
void Escape ()
 Menu items callbacks /////////////////////////////////////////////////////.
void WritePostScript (const G4String &file="g4out.ps")
void WritePDF (const G4String &file="g4out.pdf")
void WritePixmapPostScript (const G4String &file="g4out.ps")
void WriteInventor (const G4String &file="g4out.iv")
void SceneGraphStatistics ()
void EraseDetector ()
void EraseEvent ()
void SetPreviewAndFull ()
void SetPreview ()
void SetSolid ()
void SetWireFrame ()
void SetReducedWireFrame (bool)
void UpdateScene ()
G4String Help (const G4String &topic="controls")
Protected Member Functions inherited from G4VViewer
void SetTouchable (const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath)
void TouchableSetVisibility (const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath, G4bool visibility)
void TouchableSetColour (const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath, const G4Colour &)

Static Protected Member Functions

static void SelectionCB (void *, SoPath *)

Protected Attributes

G4OpenInventorSceneHandlerfG4OpenInventorSceneHandler
G4VInteractorManagerfInteractorManager
SoSelection * fSoSelection
Geant4_SoImageWriter * fSoImageWriter
Geant4_SoGL2PSAction * fGL2PSAction
SoNodeSensor * fGroupCameraSensor
Protected Attributes inherited from G4VViewer
G4VSceneHandlerfSceneHandler
G4int fViewId
G4String fName
G4String fShortName
G4ViewParameters fVP
G4ViewParameters fDefaultVP
G4double fKernelVisitElapsedTimeSeconds = 999.
G4SceneTreeItem fSceneTree
G4bool fNeedKernelVisit
G4bool fTransientsNeedRedrawing

Additional Inherited Members

Public Attributes inherited from G4VViewer
const G4int fMaxAllTouchables = 10000
G4bool fCurtailDescent = false

Detailed Description

Definition at line 49 of file G4OpenInventorViewer.hh.

Constructor & Destructor Documentation

◆ G4OpenInventorViewer()

G4OpenInventorViewer::G4OpenInventorViewer ( G4OpenInventorSceneHandler & scene,
const G4String & name = "" )

Definition at line 58 of file G4OpenInventorViewer.cc.

61:G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name)
62,fG4OpenInventorSceneHandler(sceneHandler)
66,fGL2PSAction(0) //To be set be suclass.
68 //,fCameraSensor(0)
69{
70 fVP.SetAutoRefresh(true);
71 fDefaultVP.SetAutoRefresh(true);
72 fVP.SetPicking(true);
73 fDefaultVP.SetPicking(true);
74
75 //FIXME : G.Barrand : not convinced that we have to rm culling.
76 // For viewing of all objects by default :
77 //fDefaultVP.SetCulling(false);
78 //fVP.SetCulling(false);
79
81 ((G4OpenInventor*)fG4OpenInventorSceneHandler.GetGraphicsSystem())->
82 GetInteractorManager();
83
84 // Main user scene graph root sent to the viewers.
85 fSoSelection = new SoSelection;
86 fSoSelection->ref();
87 fSoSelection->addSelectionCallback(SelectionCB,this);
88 //fSoSelection->addDeselectionCallback(DeselectionCB,this);
89 fSoSelection->policy = SoSelection::SINGLE;
90
91 SoGroup* group = new SoGroup;
92 fSoSelection->addChild(group);
93
94 // Have a camera under fSoSelection in order
95 // that the below SceneGraphSensor be notifed
96 // when the viewer changes the camera type.
97 // But we put the camera under a SoGroup so that
98 // the SceneGraphSensor be not triggered at each change
99 // under the fG4OpenInventorSceneHandler.fRoot.
100 SoOrthographicCamera* camera = new SoOrthographicCamera;
101 camera->viewportMapping.setValue(SoCamera::ADJUST_CAMERA);
102 //camera->aspectRatio.setValue(10);
103 camera->position.setValue(0,0,10);
104 camera->orientation.setValue(SbRotation(SbVec3f(0,1,0),0));
105 camera->height.setValue(10);
106 camera->nearDistance.setValue(1);
107 camera->farDistance.setValue(100);
108 camera->focalDistance.setValue(10);
109 group->addChild(camera);
110
111 {SoInput soInput;
112 if(soInput.openFile("g4view.iv",TRUE)) {
113 SoSeparator* separator = SoDB::readAll(&soInput);
114 if(separator) fSoSelection->addChild(separator);
115 }}
116
118
119 // SoImageWriter should be the last.
121 fSoImageWriter->fileName.setValue("g4out.ps");
122 fSoSelection->addChild(fSoImageWriter);
123
124 // Sensors :
125 // To detect that the viewer had changed the camera type :
126 fGroupCameraSensor = new SoNodeSensor(GroupCameraSensorCB,this);
127 fGroupCameraSensor->setPriority(0);//Needed in order to do getTriggerNode()
128 fGroupCameraSensor->attach(group);
129 // FWJ Upgraded the group sensor so the camera sensor is not needed
130 // fCameraSensor = new SoNodeSensor(CameraSensorCB,this);
131 // fCameraSensor->setPriority(0);//Needed in order to do getTriggerNode()
132 // fCameraSensor->attach(camera);
133}
#define SoImageWriter
G4OpenInventorSceneHandler & fG4OpenInventorSceneHandler
G4VInteractorManager * fInteractorManager
static void SelectionCB(void *, SoPath *)
Geant4_SoImageWriter * fSoImageWriter
Geant4_SoGL2PSAction * fGL2PSAction
G4ViewParameters fDefaultVP
Definition G4VViewer.hh:273
G4ViewParameters fVP
Definition G4VViewer.hh:272
G4VViewer(G4VSceneHandler &, G4int id, const G4String &name="")
Definition G4VViewer.cc:49
#define TRUE
Definition globals.hh:41

Referenced by G4OpenInventorQtViewer::G4OpenInventorQtViewer(), G4OpenInventorWinViewer::G4OpenInventorWinViewer(), G4OpenInventorXtExtendedViewer::G4OpenInventorXtExtendedViewer(), G4OpenInventorXtViewer::G4OpenInventorXtViewer(), and SelectionCB().

◆ ~G4OpenInventorViewer()

G4OpenInventorViewer::~G4OpenInventorViewer ( )
virtual

Definition at line 135 of file G4OpenInventorViewer.cc.

135 {
136 // fCameraSensor->detach();
137 // delete fCameraSensor;
138 fGroupCameraSensor->detach();
139 delete fGroupCameraSensor;
140 fSoSelection->unref();
141}

Member Function Documentation

◆ ClearView()

void G4OpenInventorViewer::ClearView ( void )
virtual

Implements G4VViewer.

Definition at line 246 of file G4OpenInventorViewer.cc.

246 {
247}

◆ DrawView()

void G4OpenInventorViewer::DrawView ( )
virtual

Implements G4VViewer.

Definition at line 395 of file G4OpenInventorViewer.cc.

395 {
396 //G4cout << "debug Iv::DrawViewer " <<G4endl;
398 G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
399
400 ProcessView (); // Clears store and processes scene only if necessary.
401
402 if (kernelVisitWasNeeded) {
403 // We might need to do something if the kernel was visited.
404 } else { // Or even if it was not!
405 if (!fTransientsNeedRedrawing) CompareForTransientsRedraw(fLastVP);
408 }
409 }
410
411 fLastVP = fVP;
412
413 FinishView();
414}
bool G4bool
Definition G4Types.hh:86
G4bool fNeedKernelVisit
Definition G4VViewer.hh:280
void ProcessView()
Definition G4VViewer.cc:112
void ProcessTransients()
Definition G4VViewer.cc:133
G4bool fTransientsNeedRedrawing
Definition G4VViewer.hh:281
virtual void FinishView()
Definition G4VViewer.cc:108

Referenced by UpdateScene().

◆ EraseDetector()

void G4OpenInventorViewer::EraseDetector ( )
protected

Definition at line 685 of file G4OpenInventorViewer.cc.

685 {
686 fG4OpenInventorSceneHandler.fDetectorRoot->removeAllChildren();
687}

Referenced by G4OpenInventorXtViewer::EraseDetectorCbk().

◆ EraseEvent()

void G4OpenInventorViewer::EraseEvent ( )
protected

Definition at line 688 of file G4OpenInventorViewer.cc.

688 {
689 fG4OpenInventorSceneHandler.fTransientRoot->removeAllChildren();
690}

Referenced by G4OpenInventorXtViewer::EraseEventCbk().

◆ Escape()

void G4OpenInventorViewer::Escape ( )
protected

Menu items callbacks /////////////////////////////////////////////////////.

Definition at line 545 of file G4OpenInventorViewer.cc.

545 {
546 G4cout << "Escape..." <<G4endl;
547 fInteractorManager->RequireExitSecondaryLoop (OIV_EXIT_CODE);
548}
#define OIV_EXIT_CODE
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout

Referenced by G4OpenInventorXtViewer::EscapeCbk().

◆ GetCamera()

virtual SoCamera * G4OpenInventorViewer::GetCamera ( )
protectedpure virtual

◆ Help()

G4String G4OpenInventorViewer::Help ( const G4String & topic = "controls")
protected

Definition at line 795 of file G4OpenInventorViewer.cc.

795 {
796 if(aTopic=="controls") {
797 return G4String("\
798Controls on an Inventor examiner viewer are :\n\
799- in picking mode (cursor is the upper left arrow)\n\
800 Ctrl + pick a volume : see daughters.\n\
801 Shift + pick a volume : see mother.\n\
802- in viewing mode (cursor is the hand)\n\
803 Left-button + pointer move : rotate.\n\
804 Ctrl+Left-button + pointer move : pan.\n\
805 Ctrl+Shift+Left-button + pointer move : scale.\n\
806 Middle-button + pointer move : pan.\n\
807 Right-button : popup menu.\n");
808 } else {
809 return "";
810 }
811}

Referenced by G4OpenInventorXtViewer::HelpCbk().

◆ KernelVisitDecision()

void G4OpenInventorViewer::KernelVisitDecision ( )
virtual

Definition at line 143 of file G4OpenInventorViewer.cc.

143 {
144
145 // If there's a significant difference with the last view parameters
146 // of either the scene handler or this viewer, trigger a rebuild.
147
148 if (
149 //??fG4OpenInventorSceneHandler.fPODLList.size() == 0 ||
150 // We need a test for empty scene graph, such as
151 // staticRoot.size() or something?????????? See temporary fix
152 // in contructor. (John Allison Aug 2001)
153 CompareForKernelVisit(fLastVP)) {
155 }
156}
void NeedKernelVisit()
Definition G4VViewer.cc:85

Referenced by DrawView().

◆ SceneGraphStatistics()

void G4OpenInventorViewer::SceneGraphStatistics ( )
protected

Definition at line 654 of file G4OpenInventorViewer.cc.

654 {
655 Counter counter;
656 counter.fTriangles = 0;
657 counter.fLineSegments = 0;
658 counter.fPoints = 0;
659
660 SoCallbackAction callbackAction;
661 callbackAction.addTriangleCallback
662 (SoShape::getClassTypeId(),CountTrianglesCB,(void*)&counter);
663 callbackAction.addLineSegmentCallback
664 (SoShape::getClassTypeId(),CountLineSegmentsCB,(void*)&counter);
665 callbackAction.addPointCallback
666 (SoShape::getClassTypeId(),CountPointsCB,(void*)&counter);
667 callbackAction.apply(fSoSelection);
668
669 SoCounterAction counterAction;
670 counterAction.apply(fSoSelection);
671 int nodes = counterAction.getCount();
672
673 counterAction.setLookFor(SoCounterAction::TYPE);
674 counterAction.setType(SoShape::getClassTypeId());
675 counterAction.apply(fSoSelection);
676 int shapes = counterAction.getCount();
677
678 G4cout << "Number of triangles : " << counter.fTriangles << G4endl;
679 G4cout << "Number of line segments : " << counter.fLineSegments << G4endl;
680 G4cout << "Number of points : " << counter.fPoints << G4endl;
681 G4cout << "Number of nodes : " << nodes << G4endl;
682 G4cout << "Number of shapes : " << shapes << G4endl;
683}
#define SoCounterAction
void setLookFor(LookFor)
void setType(const SoType, SbBool=TRUE)

Referenced by G4OpenInventorXtViewer::SceneGraphStatisticsCbk().

◆ SelectionCB()

void G4OpenInventorViewer::SelectionCB ( void * aThis,
SoPath * aPath )
staticprotected

Definition at line 483 of file G4OpenInventorViewer.cc.

487{
489 SoNode* node = ((SoFullPath*)aPath)->getTail();
490 G4AttHolder* attHolder = dynamic_cast<G4AttHolder*>(node);
491 if(attHolder && attHolder->GetAttDefs().size()) {
492 for (size_t i = 0; i < attHolder->GetAttDefs().size(); ++i) {
493 G4cout << G4AttCheck(attHolder->GetAttValues()[i],
494 attHolder->GetAttDefs()[i]);
495 }
496 } else {
497 G4String name((char*)node->getName().getString());
498 G4String cls((char*)node->getTypeId().getName().getString());
499 G4cout << "SoNode : " << node
500 << " SoType : " << cls
501 << " name : " << name
502 << G4endl;
503 G4cout << "No attributes attached." << G4endl;
504 }
505 /*FIXME : to explore (need different button - this is used for picking.
506 if(node->isOfType(Geant4_SoPolyhedron::getClassTypeId())) {
507 Geant4_SoPolyhedron* polyhedron = (Geant4_SoPolyhedron*)node;
508 if(polyhedron->solid.getValue()==FALSE)
509 polyhedron->solid.setValue(TRUE);
510 else
511 polyhedron->solid.setValue(FALSE);
512 }*/
513 This->fSoSelection->deselectAll();
514}
const std::vector< const std::vector< G4AttValue > * > & GetAttValues() const
const std::vector< const std::map< G4String, G4AttDef > * > & GetAttDefs() const
G4OpenInventorViewer(G4OpenInventorSceneHandler &scene, const G4String &name="")
const char * name(G4int ptype)

Referenced by G4OpenInventorViewer(), and G4OpenInventorXtExtendedViewer::Initialise().

◆ SetPreview()

void G4OpenInventorViewer::SetPreview ( )
protected

Definition at line 699 of file G4OpenInventorViewer.cc.

699 {
700 fG4OpenInventorSceneHandler.fPreviewAndFull = false;
701
703 DrawDetector();
704}

Referenced by G4OpenInventorXtViewer::SetPreviewCbk().

◆ SetPreviewAndFull()

void G4OpenInventorViewer::SetPreviewAndFull ( )
protected

Definition at line 692 of file G4OpenInventorViewer.cc.

692 {
693 fG4OpenInventorSceneHandler.fPreviewAndFull = true;
694
696 DrawDetector();
697}

Referenced by G4OpenInventorXtViewer::SetPreviewAndFullCbk().

◆ SetReducedWireFrame()

void G4OpenInventorViewer::SetReducedWireFrame ( bool aValue)
protected

Definition at line 755 of file G4OpenInventorViewer.cc.

755 {
756 G4ViewParameters vp = GetViewParameters();
757
758 // Set the wire frame kind :
759 vp.SetAuxEdgeVisible(!aValue);
760
761 // Set wire frame :
763 switch (existingStyle) {
765 break;
767 break;
770 break;
773 break;
776 break;
777 }
779 NeedKernelVisit(); // Just in case it was alread in wire framw.
780 DrawDetector();
781}
const G4ViewParameters & GetViewParameters() const
void SetViewParameters(const G4ViewParameters &vp)
Definition G4VViewer.cc:216
void SetDrawingStyle(G4ViewParameters::DrawingStyle style)
void SetAuxEdgeVisible(G4bool)
DrawingStyle GetDrawingStyle() const

Referenced by G4OpenInventorXtViewer::SetFullWireFrameCbk(), and G4OpenInventorXtViewer::SetReducedWireFrameCbk().

◆ SetSolid()

void G4OpenInventorViewer::SetSolid ( )
protected

Definition at line 710 of file G4OpenInventorViewer.cc.

710 {
711 G4ViewParameters vp = GetViewParameters();
713 //From G4VisCommandsViewerSet : /vis/viewer/set/style solid.
714 switch (existingStyle) {
717 break;
720 break;
722 break;
724 break;
727 break;
728 }
730 DrawDetector();
731}

Referenced by G4OpenInventorXtViewer::SetSolidCbk().

◆ SetView()

void G4OpenInventorViewer::SetView ( )
virtual

Implements G4VViewer.

Reimplemented in G4OpenInventorQtViewer, G4OpenInventorWinViewer, G4OpenInventorXtExtendedViewer, and G4OpenInventorXtViewer.

Definition at line 249 of file G4OpenInventorViewer.cc.

249 {
250
251 // Get G4 camera infos :
252 const G4Point3D target
253 = fSceneHandler.GetScene()->GetStandardTargetPoint()
254 + fVP.GetCurrentTargetPoint ();
255 G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius();
256 if(radius<=0.) radius = 1.;
257 const G4double cameraDistance = fVP.GetCameraDistance (radius);
258 const G4Vector3D& direction = fVP.GetViewpointDirection().unit();
259 const G4Point3D cameraPosition = target + cameraDistance * direction;
260 //const G4double pnear = fVP.GetNearDistance (cameraDistance, radius);
261 //const G4double pfar = fVP.GetFarDistance (cameraDistance, pnear, radius);
262 const G4Normal3D& up = fVP.GetUpVector ();
263
264/*
265 printf("debug : target : %g %g %g\n",target.x(),
266 target.y(),
267 target.z());
268 printf("debug : dir : %g %g %g\n",direction.x(),
269 direction.y(),
270 direction.z());
271 printf("debug : pos : %g %g %g\n",cameraPosition.x(),
272 cameraPosition.y(),
273 cameraPosition.z());
274 //printf("debug : near %g far %g\n",pnear,pfar);
275*/
276
277 SoCamera* camera = GetCamera();
278 if(!camera) return;
279
280 // viewer camera setup :
281 camera->position.setValue((float)cameraPosition.x(),
282 (float)cameraPosition.y(),
283 (float)cameraPosition.z());
284
285 SbVec3f sbTarget((float)target.x(),
286 (float)target.y(),
287 (float)target.z());
288 SbVec3f sbUp((float)up.x(),
289 (float)up.y(),
290 (float)up.z());
291 sbUp.normalize();
292 // Need Coin's camera->pointAt(sbTarget,sbUp); not in the SGI API
293 // Stole Coin's code...
294 pointAt(camera,sbTarget,sbUp);
295
296 //camera->height.setValue(10);
297 //camera->nearDistance.setValue((float)pnear);
298 //camera->farDistance.setValue((float)pfar);
299 //camera->focalDistance.setValue((float)cameraDistance);
300
301 if(camera->isOfType(SoOrthographicCamera::getClassTypeId())) {
302 if (fVP.GetFieldHalfAngle() == 0.) {
303 //FIXME : ((SoOrthographicCamera*)camera)->height.setValue();
304 //FIXME : (Don't think we have to do that.)
305 } else {
306 //FIXME : Have to set a perspective camera !
307 //FIXME : viewer->setCameraType(SoPerspectiveCamera::getClassTypeId())
308 //FIXME : ((SoPerspectiveCamera*)camera)->heightAngle.setValue
309 //FIXME : (2.*fVP.GetFieldHalfAngle());
310 }
311 } else if(camera->isOfType(SoPerspectiveCamera::getClassTypeId())) {
312 if (fVP.GetFieldHalfAngle() == 0.) {
313 //FIXME : Have to set an orthographic camera !
314 //FIXME : viewer->setCameraType(SoOrthographicCamera::getClassTypeId())
315 } else {
316 //FIXME : ((SoPerspectiveCamera*)camera)->heightAngle.setValue
317 //FIXME : (2.*fVP.GetFieldHalfAngle());
318 }
319 }
320}
HepGeom::Normal3D< G4double > G4Normal3D
Definition G4Normal3D.hh:34
HepGeom::Point3D< G4double > G4Point3D
Definition G4Point3D.hh:34
double G4double
Definition G4Types.hh:83
HepGeom::Vector3D< G4double > G4Vector3D
Definition G4Vector3D.hh:34
virtual SoCamera * GetCamera()=0
G4VSceneHandler & fSceneHandler
Definition G4VViewer.hh:268

Referenced by G4OpenInventorQtViewer::SetView(), G4OpenInventorWinViewer::SetView(), G4OpenInventorXtExtendedViewer::SetView(), and G4OpenInventorXtViewer::SetView().

◆ SetWireFrame()

void G4OpenInventorViewer::SetWireFrame ( )
protected

Definition at line 732 of file G4OpenInventorViewer.cc.

732 {
733 G4ViewParameters vp = GetViewParameters();
735 switch (existingStyle) {
737 break;
739 break;
742 break;
745 break;
748 break;
749 }
751 DrawDetector();
752}

Referenced by G4OpenInventorXtViewer::SetWireFrameCbk().

◆ ShowView()

void G4OpenInventorViewer::ShowView ( void )
virtual

Reimplemented from G4VViewer.

Definition at line 416 of file G4OpenInventorViewer.cc.

416 {
417 fInteractorManager -> SecondaryLoop ();
418}

◆ UpdateScene()

void G4OpenInventorViewer::UpdateScene ( )
protected

Definition at line 783 of file G4OpenInventorViewer.cc.

783 {
784 /* Replace this... - JA
785 fG4OpenInventorSceneHandler.ClearStore();
786 ClearView();
787 if (!fNeedKernelVisit) KernelVisitDecision();
788 ProcessView();
789 ShowView();
790 */
791 // ...by this - JA
793 DrawView();
794}

Referenced by G4OpenInventorXtViewer::UpdateSceneCbk().

◆ ViewerRender()

virtual void G4OpenInventorViewer::ViewerRender ( )
protectedpure virtual

◆ WriteInventor()

void G4OpenInventorViewer::WriteInventor ( const G4String & file = "g4out.iv")
protected

Definition at line 591 of file G4OpenInventorViewer.cc.

591 {
592 G4cout << "Produce " << aFile << "..." << G4endl;
593
594 SbBool genAlternateRep = TRUE;
595 //SbBool binary = FALSE;
596 SbBool binary = TRUE;
597 SoAlternateRepAction alternateRepAction;
598 if(genAlternateRep==TRUE) {
599 alternateRepAction.setGenerate(TRUE); //Clear alternate reps.
600 alternateRepAction.apply(fSoSelection);
601 }
602
603 SoWriteAction writeAction;
604 writeAction.getOutput()->openFile(aFile.c_str());
605 writeAction.getOutput()->setBinary(binary);
606 writeAction.apply(fSoSelection);
607 writeAction.getOutput()->closeFile();
608
609 if(genAlternateRep==TRUE) {
610 alternateRepAction.setGenerate(FALSE); //Clear alternate reps.
611 alternateRepAction.apply(fSoSelection);
612 }
613
614
615
616}
#define SoAlternateRepAction
void setGenerate(SbBool)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
#define FALSE
Definition globals.hh:38

Referenced by G4OpenInventorXtViewer::WriteInventorCbk().

◆ WritePDF()

void G4OpenInventorViewer::WritePDF ( const G4String & file = "g4out.pdf")
protected

Definition at line 562 of file G4OpenInventorViewer.cc.

562 {
563 if(!fGL2PSAction) return;
564 fGL2PSAction->setFileName(aFile.c_str());
565 fGL2PSAction->setExportImageFormat_PDF();
566 fGL2PSAction->setTitleAndProducer("Geant4 output","Geant4");
567 G4cout << "Produce " << aFile << "..." << G4endl;
568 if (fGL2PSAction->enableFileWriting()) {
569 ViewerRender();
570 fGL2PSAction->disableFileWriting();
571 }
572}
virtual void ViewerRender()=0

◆ WritePixmapPostScript()

void G4OpenInventorViewer::WritePixmapPostScript ( const G4String & file = "g4out.ps")
protected

Definition at line 574 of file G4OpenInventorViewer.cc.

574 {
575 fSoImageWriter->fileName.setValue(aFile.c_str());
576 //imageWriter->format.setValue(SoImageWriter::POST_SCRIPT);
577 fSoImageWriter->enable();
578 ViewerRender();
579 fSoImageWriter->disable();
580 if(fSoImageWriter->getStatus()) {
581 G4cout << G4String(fSoImageWriter->fileName.getValue().getString())
582 << " produced."
583 << G4endl;
584 } else {
585 G4cout << G4String(fSoImageWriter->fileName.getValue().getString())
586 << " not produced."
587 << G4endl;
588 }
589}

Referenced by G4OpenInventorXtViewer::PixmapPostScriptCbk().

◆ WritePostScript()

void G4OpenInventorViewer::WritePostScript ( const G4String & file = "g4out.ps")
protected

Definition at line 550 of file G4OpenInventorViewer.cc.

550 {
551 if(!fGL2PSAction) return;
552 fGL2PSAction->setFileName(aFile.c_str());
553 fGL2PSAction->setExportImageFormat_EPS();
554 fGL2PSAction->setTitleAndProducer("Geant4 output","Geant4");
555 G4cout << "Produce " << aFile << "..." << G4endl;
556 if (fGL2PSAction->enableFileWriting()) {
557 ViewerRender();
558 fGL2PSAction->disableFileWriting();
559 }
560}

Referenced by G4OpenInventorXtViewer::PostScriptCbk().

Member Data Documentation

◆ fG4OpenInventorSceneHandler

G4OpenInventorSceneHandler& G4OpenInventorViewer::fG4OpenInventorSceneHandler
protected

◆ fGL2PSAction

◆ fGroupCameraSensor

SoNodeSensor* G4OpenInventorViewer::fGroupCameraSensor
protected

Definition at line 100 of file G4OpenInventorViewer.hh.

Referenced by G4OpenInventorViewer(), and ~G4OpenInventorViewer().

◆ fInteractorManager

◆ fSoImageWriter

Geant4_SoImageWriter* G4OpenInventorViewer::fSoImageWriter
protected

Definition at line 98 of file G4OpenInventorViewer.hh.

Referenced by G4OpenInventorViewer(), and WritePixmapPostScript().

◆ fSoSelection


The documentation for this class was generated from the following files: