Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4FukuiRendererSceneHandler.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29//
30// Satoshi TANAKA, Fri Jun 28 11:34:24 JST 1996
31// FukuiRenderer scene.
32
33
34//=================//
35#ifdef G4VIS_BUILD_DAWN_DRIVER
36//=================//
37
38
39#define __G_ANSI_C__
40
41// #define DEBUG_FR_SCENE
42
43 //----- header files
44#include <fstream>
45#include <string.h>
46#include "globals.hh"
47#include "G4VisManager.hh"
48#include "G4FRConst.hh"
49#include "G4FukuiRenderer.hh"
52#include "G4Point3D.hh"
53#include "G4VisAttributes.hh"
54#include "G4Scene.hh"
55#include "G4Transform3D.hh"
56#include "G4Polyhedron.hh"
57#include "G4Box.hh"
58#include "G4Cons.hh"
59#include "G4Polyline.hh"
60#include "G4Trd.hh"
61#include "G4Tubs.hh"
62#include "G4Trap.hh"
63#include "G4Torus.hh"
64#include "G4Sphere.hh"
65#include "G4Para.hh"
66#include "G4Text.hh"
67#include "G4Circle.hh"
68#include "G4Square.hh"
69#include "G4VPhysicalVolume.hh"
70
71//----- constants
72const char FR_ENV_CULL_INVISIBLE_OBJECTS [] = "G4DAWN_CULL_INVISIBLE_OBJECTS";
73const char FR_ENV_MULTI_WINDOW[] = "G4DAWN_MULTI_WINDOW" ;
74
75///////////////////////////
76// Driver-dependent part //
77///////////////////////////
78
79
80 //----- G4FukuiRendererSceneHandler, constructor
81G4FukuiRendererSceneHandler::G4FukuiRendererSceneHandler (G4FukuiRenderer& system,
82 const G4String& name):
83G4VSceneHandler (system, fSceneIdCount++, name) ,
84fSystem (system) ,
85fPrimDest (system.GetPrimDest() ) ,
86FRflag_in_modeling (false) ,
87flag_saving_g4_prim (false) ,
88COMMAND_BUF_SIZE (G4FRClientServer::SEND_BUFMAX),
89fPrec (9), fPrec2 (16)
90{
91
92 //----- Connection to FukuiRenderer is set in the first scene
93 if( !fSystem.IsConnected() )
94 {
95 if ( getenv( FR_ENV_NAMED_PIPE_CONNECTION ) != NULL &&\
96 strcmp( getenv( FR_ENV_NAMED_PIPE_CONNECTION ), "0" ) )
97 {
98 // Invoke DAWN locally and make connection
99 // via named pipe (not supported in AIX etc)
100 fSystem.UseBSDUnixDomainAuto();
101 } else if( getenv( FR_ENV_SERVER_HOST_NAME ) == NULL )
102 {
103 // Invoke DAWN locally and make connection
104 // via socket
105 fSystem.UseInetDomainAuto();
106 } else {
107 // Connect to remote DAWN via socket
108 fSystem.UseInetDomain();
109 }
110 }
111
112 //----- precision control
113 if( getenv( "G4DAWN_PRECISION" ) != NULL ) {
114 sscanf( getenv("G4DAWN_PRECISION"), "%d", &fPrec ) ;
115 } else {
116 fPrec = 9 ;
117 }
118 fPrec2 = fPrec + 7 ;
119
120} // G4FukuiRendererSceneHandler, constructor
121
122
123 //----- G4FukuiRendererSceneHandler, destructor
124G4FukuiRendererSceneHandler::~G4FukuiRendererSceneHandler ()
125{
126#if defined DEBUG_FR_SCENE
128 G4cout << "***** ~G4FukuiRendererSceneHandler" << G4endl;
129#endif
130}
131
132//-----
133void G4FukuiRendererSceneHandler::FRBeginModeling( void )
134{
135 if( !FRIsInModeling() )
136 {
137#if defined DEBUG_FR_SCENE
139 G4cout << "***** G4FukuiRendererSceneHandler::FRBeginModeling (called & started)" << G4endl;
140#endif
141
142 //----- Begin Saving g4.prim file
143 // open g4.prim, ##
144 BeginSavingG4Prim();
145
146 //----- Send Bounding Box
147 // /BoundingBox
148 SendBoundingBox();
149
150 //----- drawing device
151 // !Device
152 // (Note: Not saved in g4.prim)
153 if( ( getenv( FR_ENV_MULTI_WINDOW ) != NULL ) && \
154 ( strcmp( getenv( FR_ENV_MULTI_WINDOW ),"0" ) ) )
155 {
156 ((G4FukuiRendererViewer*)fpViewer)->SendDevice( G4FukuiRendererViewer::FRDEV_XWIN ) ;
157 } else {
158 ((G4FukuiRendererViewer*)fpViewer)->SendDevice( G4FukuiRendererViewer::FRDEV_PS ) ;
159 }
160
161 //----- drawing style
162 // /WireFrame, /Surface etc
163 // (Note: Not saved in g4.prim)
164 ((G4FukuiRendererViewer*)fpViewer)->SendDrawingStyle() ;
165
166 //----- set view parameters
167 // /CameraPosition, /TargetPoint,
168 // /ZoomFactor, /FocalDistance,
169 // !GraphicalUserInterface
170 ((G4FukuiRendererViewer*)fpViewer)->SendViewParameters();
171
172 //----- send SET_CAMERA command
173 // !SetCamera
174#if defined DEBUG_FR_SCENE
176 G4cout << "***** (!SetCamera in FRBeginModeling())" << G4endl;
177#endif
178 SendStr( FR_SET_CAMERA );
179
180 //----- open device
181 // !OpenDevice
182#if defined DEBUG_FR_SCENE
184 G4cout << "***** (!OpenDevice in FRBeginModeling())" << G4endl;
185#endif
186 SendStr( FR_OPEN_DEVICE );
187
188 //----- begin sending primitives
189 // !BeginModeling
190#if defined DEBUG_FR_SCENE
192 G4cout << "***** (!BeginModeling in FRBeginModeling())" << G4endl;
193#endif
194 SendStr( FR_BEGIN_MODELING ); FRflag_in_modeling = true ;
195
196 } // if
197
198}
199
200/////////////////////////////////////////
201// Common to DAWN and DAWNFILE drivers //
202/////////////////////////////////////////
203
204#define G4FRSCENEHANDLER G4FukuiRendererSceneHandler
205#include "G4FRSceneFunc.icc"
206#undef G4FRSCENEHANDLER
207
208//////////////////////
209// static variables //
210//////////////////////
211
212 //----- static variables
213G4int G4FukuiRendererSceneHandler::fSceneIdCount = 0;
214
215#endif // G4VIS_BUILD_DAWN_DRIVER
const char FR_ENV_CULL_INVISIBLE_OBJECTS[]
const char FR_ENV_MULTI_WINDOW[]
const char FR_OPEN_DEVICE[]
Definition: G4FRConst.hh:46
const char FR_BEGIN_MODELING[]
Definition: G4FRConst.hh:64
const char FR_SET_CAMERA[]
Definition: G4FRConst.hh:45
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static Verbosity GetVerbosity()