Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/toolx/X11/sg_viewer

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/toolx/X11/sg_viewer (Version 11.3.0) and /externals/g4tools/include/toolx/X11/sg_viewer (Version 10.3)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef toolx_X11_sg_viewer                       
  5 #define toolx_X11_sg_viewer                       
  6                                                   
  7 // not pure X11 version. The class inherits to    
  8                                                   
  9 #include "session"                                
 10                                                   
 11 #include "../sg/GL_viewer"                        
 12                                                   
 13 #include "simple_dispatcher"                      
 14                                                   
 15 namespace tools{namespace sg{class device_inte    
 16                                                   
 17 namespace toolx {                                 
 18 namespace X11 {                                   
 19                                                   
 20 class sg_viewer : public sg::GL_viewer {          
 21   typedef sg::GL_viewer parent;                   
 22 private:                                          
 23   class dispatcher : public simple_dispatcher     
 24     typedef simple_dispatcher parent;             
 25   public:                                         
 26     virtual void win_render() {m_sg_viewer.win    
 27     virtual void set_size(unsigned int a_width    
 28     virtual dispatcher* copy() const {return n    
 29   public:                                         
 30     dispatcher(sg_viewer& a_sg_viewer)            
 31     :parent(a_sg_viewer.m_session,a_sg_viewer.    
 32     ,m_sg_viewer(a_sg_viewer){}                   
 33     virtual ~dispatcher(){}                       
 34   protected:                                      
 35     dispatcher(const dispatcher& a_from)          
 36     :parent(a_from)                               
 37     ,m_sg_viewer(a_from.m_sg_viewer)              
 38     {}                                            
 39     dispatcher& operator=(const dispatcher& a_    
 40       parent::operator=(a_from);                  
 41       return *this;                               
 42     }                                             
 43   protected:                                      
 44     sg_viewer& m_sg_viewer;                       
 45   };                                              
 46                                                   
 47 public:                                           
 48   sg_viewer(session& a_session,                   
 49             int a_x = 0,int a_y = 0,              
 50             unsigned int a_width = 500,unsigne    
 51             const std::string& a_win_title = "    
 52   :parent(a_session.out(),a_width,a_height)       
 53   ,m_session(a_session)                           
 54   ,m_win(0)                                       
 55   {                                               
 56     if(!m_session.display()) return; //throw      
 57     m_win = m_session.create_window(a_win_titl    
 58     if(!m_win) return; //throw                    
 59     m_session.add_dispatcher(new dispatcher(*t    
 60   }                                               
 61   virtual ~sg_viewer() {                          
 62     if(m_win) {                                   
 63       m_session.remove_dispatchers_with_window    
 64       m_session.delete_window(m_win);             
 65       m_session.sync();                           
 66     }                                             
 67   }                                               
 68 public:                                           
 69   sg_viewer(const sg_viewer& a_from)              
 70   :parent(a_from)                                 
 71   ,m_session(a_from.m_session)                    
 72   ,m_win(a_from.m_win)                            
 73   {}                                              
 74   sg_viewer& operator=(const sg_viewer& a_from    
 75     parent::operator=(a_from);                    
 76     m_win = a_from.m_win;                         
 77     return *this;                                 
 78   }                                               
 79 public:                                           
 80   bool has_window() const {return m_win?true:f    
 81                                                   
 82   Window window() const {return m_win;}           
 83                                                   
 84   bool show() {                                   
 85     if(!m_win) return false;                      
 86     m_session.show_window(m_win);                 
 87     return true;                                  
 88   }                                               
 89                                                   
 90   void win_render() {                             
 91     if(!m_win) return;                            
 92     if(::glXMakeCurrent(m_session.display(),m_    
 93       m_session.out() << "toolx::X11::sg_viewe    
 94       return;                                     
 95     }                                             
 96     render(); //viewer::render()                  
 97     ::glXSwapBuffers(m_session.display(),m_win    
 98     if(::glXMakeCurrent(m_session.display(),No    
 99       m_session.out() << "toolx::X11::sg_viewe    
100     }                                             
101   }                                               
102                                                   
103 public:                                           
104   void set_device_interactor(tools::sg::device    
105 protected:                                        
106   session& m_session;                             
107   Window m_win;                                   
108 };                                                
109                                                   
110 }}                                                
111                                                   
112 #endif                                            
113