00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #define __G_ANSI_C__
00035 #define G4GMocrenFile_STRUCTURE_PRIORITY 1.
00036
00037 #include "G4ios.hh"
00038 #include <cstdio>
00039 #include <cstring>
00040 #include <cassert>
00041
00042 #include "G4VisManager.hh"
00043 #include "G4Scene.hh"
00044 #include "G4Vector3D.hh"
00045 #include "G4VisExtent.hh"
00046 #include "G4LogicalVolume.hh"
00047 #include "G4VSolid.hh"
00048
00049 #include "G4GMocrenFile.hh"
00050 #include "G4GMocrenFileSceneHandler.hh"
00051 #include "G4GMocrenFileViewer.hh"
00052 #include "G4GMocrenMessenger.hh"
00053
00054
00055
00056
00057
00058 const bool GFDEBUG = false;
00059
00060
00061 G4GMocrenFileViewer::G4GMocrenFileViewer (G4GMocrenFileSceneHandler& sceneHandler,
00062 G4GMocrenMessenger & messenger,
00063 const G4String& name)
00064 : G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
00065 kSceneHandler (sceneHandler),
00066 kMessenger(messenger)
00067 {
00068
00069 std::strncpy( kG4GddViewer, "gMocren", 7);
00070 if( getenv( "G4GMocrenFile_VIEWER" ) != NULL ) {
00071 char * env = getenv( "G4GMocrenFile_VIEWER" );
00072 std::strncpy( kG4GddViewer, env, std::strlen(env));
00073
00074 }
00075
00076
00077 if ( !std::strcmp( kG4GddViewer, "NONE" ) ) {
00078
00079
00080 kG4GddViewerInvocation[0] = '\0';
00081 } else {
00082
00083 std::strncpy( kG4GddViewerInvocation, kG4GddViewer, std::strlen(kG4GddViewer));
00084 std::strncat( kG4GddViewerInvocation, " ", 1);
00085 const char * gddfname = kSceneHandler.GetGddFileName();
00086 std::strncat( kG4GddViewerInvocation, gddfname, std::strlen(gddfname) );
00087 }
00088
00089 }
00090
00091
00092 G4GMocrenFileViewer::~G4GMocrenFileViewer ()
00093 {}
00094
00095
00096 void G4GMocrenFileViewer::SetView ()
00097 {
00098 if(GFDEBUG)
00099 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
00100 G4cout << "***** G4GMocrenFileViewer::SetView(): No effects" << G4endl;
00101
00102
00103
00104 }
00105
00106
00107
00108 void
00109 G4GMocrenFileViewer::ClearView( void )
00110 {
00111 if(GFDEBUG)
00112 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
00113 G4cout << "***** G4GMocrenFileViewer::ClearView (): No effects " << G4endl;
00114
00115
00116
00117
00118
00119 kSceneHandler.kFlagInModeling = false;
00120 kSceneHandler.GFBeginModeling();
00121
00122 }
00123
00124
00125
00126 void G4GMocrenFileViewer::DrawView ()
00127 {
00128 if(GFDEBUG)
00129 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
00130 G4cout << "***** G4GMocrenFileViewer::DrawView () " << G4endl;
00131
00132
00133 kSceneHandler.GFBeginModeling() ;
00134
00135
00136 NeedKernelVisit ();
00137
00138
00139 G4VViewer::ProcessView () ;
00140
00141 }
00142
00143
00144
00145
00146 void G4GMocrenFileViewer::ShowView( void )
00147 {
00148 if(GFDEBUG)
00149 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
00150 G4cout << "***** G4GMocrenFileViewer::ShowView () " << G4endl;
00151
00152 if( kSceneHandler.GFIsInModeling() )
00153 {
00154
00155
00156
00157 kSceneHandler.GFEndModeling();
00158
00159
00160
00161
00162
00163 if ( !strcmp( kG4GddViewer, "NONE" ) ) {
00164
00165 kG4GddViewerInvocation[0] = '\0';
00166
00167 } else {
00168
00169 std::strncpy( kG4GddViewerInvocation, kG4GddViewer, std::strlen(kG4GddViewer));
00170 std::strncat( kG4GddViewerInvocation, " ", 1);
00171 const char * gddfname = kSceneHandler.GetGddFileName();
00172 std::strncat( kG4GddViewerInvocation, gddfname, std::strlen(gddfname));
00173 }
00174
00175 }
00176
00177 }
00178