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 #ifdef G4VIS_BUILD_DAWN_DRIVER
00035 
00036 
00037 
00038 #ifndef G4FUKUI_RENDERER_SCENE_HANDLER_HH
00039 #define G4FUKUI_RENDERER_SCENE_HANDLER_HH
00040 
00041 #include "globals.hh"
00042 
00043 #include "G4VSceneHandler.hh"
00044 
00045 #include "G4FRClientServer.hh"
00046 #include "G4FRConst.hh"
00047 
00048 class G4VisAttributes ;
00049 class G4FukuiRenderer;
00050 
00051         
00052 class G4FukuiRendererSceneHandler: public G4VSceneHandler {
00053 
00054 public:
00055 
00056         
00057   G4FukuiRendererSceneHandler (G4FukuiRenderer& system, const G4String& name = "");
00058   virtual ~G4FukuiRendererSceneHandler ();
00059 
00060         
00061   void AddPrimitive (const G4Polyline& line);
00062   void AddPrimitive (const G4Polyhedron& p);
00063   void AddPrimitive (const G4NURBS& nurb);
00064   void AddPrimitive (const G4Text&);
00065   void AddPrimitive (const G4Circle&);
00066   void AddPrimitive (const G4Square&);
00067 
00068         
00069         
00070   void AddPrimitive (const G4Polymarker& polymarker) 
00071        { G4VSceneHandler::AddPrimitive (polymarker); }
00072   void AddPrimitive (const G4Scale& scale) 
00073        { G4VSceneHandler::AddPrimitive (scale); }
00074 
00075   virtual void BeginModeling () { G4VSceneHandler::BeginModeling ();} 
00076   virtual void EndModeling   () { G4VSceneHandler::EndModeling   ();}
00077 
00078   virtual void BeginPrimitives (const G4Transform3D& objectTransformation);
00079   virtual void EndPrimitives ();
00080 
00081   void AddSolid ( const G4Box&    box    );
00082   void AddSolid ( const G4Cons&   cons   );
00083   void AddSolid ( const G4Tubs&   tubs   );
00084   void AddSolid ( const G4Trd&    trd    );
00085   void AddSolid ( const G4Trap&   trap   );
00086   void AddSolid ( const G4Sphere& sphere );
00087   void AddSolid ( const G4Para&   para   );
00088   void AddSolid ( const G4Torus&  torus  );
00089   void AddSolid ( const G4Polycone& polycone) {
00090     G4VSceneHandler::AddSolid (polycone);
00091   }
00092   void AddSolid ( const G4Polyhedra& polyhedra) {
00093     G4VSceneHandler::AddSolid (polyhedra);
00094   }
00095   void AddSolid ( const G4VSolid& solid  );
00096   void AddCompound ( const G4VTrajectory& traj) {
00097     G4VSceneHandler::AddCompound(traj);
00098   }
00099   void AddCompound ( const G4VHit& hit) {
00100     G4VSceneHandler::AddCompound(hit);
00101   }
00102   void AddCompound ( const G4VDigi& digi) {
00103     G4VSceneHandler::AddCompound(digi);
00104   }
00105   void AddCompound ( const G4THitsMap<G4double> & hits) {
00106     G4VSceneHandler::AddCompound(hits);
00107   }
00108 
00109   void ClearTransientStore();  
00110 
00111         
00112   void         FRBeginModeling () ;
00113   void         FREndModeling   () ;
00114   G4bool       FRIsInModeling    () { return FRflag_in_modeling ; }
00115 
00116   G4bool IsSavingG4Prim   ( void ) { return flag_saving_g4_prim ;       }
00117   void   BeginSavingG4Prim( void ) 
00118         {
00119                 if( !IsSavingG4Prim() ) 
00120                 { 
00121                         SendStr( FR_SAVE )    ; 
00122                         SendStr( FR_G4_PRIM_HEADER   )    ; 
00123                         flag_saving_g4_prim = true  ; 
00124                 } 
00125         }
00126   void   EndSavingG4Prim  ( void ) 
00127          { if(  IsSavingG4Prim() ) { SendStr( FR_END_SAVE ); flag_saving_g4_prim = false ; } }
00128 
00129   G4FRClientServer& GetPrimDest () { return fPrimDest ; }
00130   G4FukuiRenderer&  GetSystem   () { return fSystem   ; }
00131   void              SendBoundingBox   ( void );
00132 
00133 private:
00134 
00135         
00136   G4bool    SendVisAttributes ( const G4VisAttributes*  pAV );
00137   G4bool    IsVisible     ( void ) ;
00138   void      SendTransformedCoordinates( void ) ;
00139   void      SendPhysVolName           ( void ) ;
00140   void      SendNdiv                  ( void ) ;
00141 
00142 public:
00143 
00144   void   SendStr   (    const char*     char_string ) ;
00145   void   SendStrInt(    const char*     char_string ,
00146                         G4int           ival    );
00147   void   SendStrInt3(   const char*     char_string ,
00148                         G4int           ival1  ,
00149                         G4int           ival2  ,
00150                         G4int           ival3   );
00151   void   SendStrInt4(   const char*     char_string ,
00152                         G4int           ival1  ,
00153                         G4int           ival2  ,
00154                         G4int           ival3  ,
00155                         G4int           ival4   );
00156   void   SendStrDouble( const char*     char_string ,
00157                         G4double        dval   );
00158   void   SendStrDouble2(        const char*     char_string ,
00159                                 G4double        dval1  ,
00160                                 G4double        dval2  );
00161   void   SendStrDouble3(        const char*     char_string ,
00162                                 G4double        dval1  ,
00163                                 G4double        dval2  ,
00164                                 G4double        dval3   );
00165 
00166   void   SendStrDouble4(        const char*     char_string ,
00167                                 G4double        dval1  ,
00168                                 G4double        dval2  ,
00169                                 G4double        dval3  ,
00170                                 G4double        dval4  );
00171 
00172   void   SendStrDouble5(        const char*     char_string ,
00173                                 G4double        dval1  ,
00174                                 G4double        dval2  ,
00175                                 G4double        dval3  ,
00176                                 G4double        dval4  ,
00177                                 G4double        dval5  );
00178 
00179   void   SendStrDouble6(        const char*     char_string ,
00180                                 G4double        dval1  ,
00181                                 G4double        dval2  ,
00182                                 G4double        dval3  ,
00183                                 G4double        dval4  ,
00184                                 G4double        dval5  ,
00185                                 G4double        dval6   );
00186 
00187   void   SendStrDouble7(        const char*     char_string ,
00188                                 G4double        dval1  ,
00189                                 G4double        dval2  ,
00190                                 G4double        dval3  ,
00191                                 G4double        dval4  ,
00192                                 G4double        dval5  ,
00193                                 G4double        dval6  ,
00194                                 G4double        dval7   );
00195 
00196   void  SendStrDouble11(        const char*     char_string ,
00197                                 G4double        dval1  ,
00198                                 G4double        dval2  ,
00199                                 G4double        dval3  ,
00200                                 G4double        dval4  ,
00201                                 G4double        dval5  ,
00202                                 G4double        dval6  ,
00203                                 G4double        dval7  ,
00204                                 G4double        dval8  ,
00205                                 G4double        dval9  ,
00206                                 G4double        dval10  ,
00207                                 G4double        dval11   ) ;
00208 
00209   void   SendIntDouble3(        G4int           ival   ,
00210                                 G4double        dval1  ,
00211                                 G4double        dval2  ,
00212                                 G4double        dval3  );
00213   void   SendInt3Str(   G4int           ival1  ,
00214                         G4int           ival2  ,
00215                         G4int           ival3  ,
00216                         const char*     char_string );
00217   void   SendInt4Str(   G4int           ival1  ,
00218                         G4int           ival2  ,
00219                         G4int           ival3  ,
00220                         G4int           ival4  ,
00221                         const char*     char_string );
00222 
00223   void  SendStrDouble3Str(      const char*     char_string1 ,
00224                                 G4double        dval1  ,
00225                                 G4double        dval2  ,
00226                                 G4double        dval3  ,
00227                                 const char*     char_string2 );
00228 
00229   void  SendStrDouble6Str(      const char*     char_string1 ,
00230                                 G4double        dval1  ,
00231                                 G4double        dval2  ,
00232                                 G4double        dval3  ,
00233                                 G4double        dval4  ,
00234                                 G4double        dval5  ,
00235                                 G4double        dval6  ,
00236                                 const char*     char_string2 );
00237 
00238   void  SendInt   (     G4int           val );
00239   void  SendDouble(     G4double        val );
00240 
00241 
00242 
00243 private:
00244   G4FukuiRenderer& fSystem;     
00245   static G4int  fSceneIdCount;
00246 
00247   G4FRClientServer&     fPrimDest    ;  
00248   G4bool                FRflag_in_modeling ;    
00249                 
00250                 
00251                 
00252                 
00253                 
00254                 
00255                 
00256 
00257   G4bool                flag_saving_g4_prim ;   
00258 
00259   const int             COMMAND_BUF_SIZE    ;
00260 
00261   G4int                 fPrec, fPrec2 ;
00262 
00263 };
00264 
00265 #endif
00266 #endif //G4VIS_BUILD_DAWN_DRIVER