Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/offscreen/session

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 ]

  1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.
  3 
  4 #ifndef tools_offscreen_session
  5 #define tools_offscreen_session
  6 
  7 namespace tools {
  8 namespace offscreen {
  9 
 10 class viewer {
 11 public:
 12   virtual ~viewer() {}
 13 public:
 14   virtual void render() = 0;
 15 };
 16 
 17 }}
 18 
 19 #include "../forit"
 20 #include "../vmanip"
 21 
 22 #include <ostream>
 23 
 24 namespace tools {
 25 namespace offscreen {
 26 
 27 class session {
 28 public:
 29   session(std::ostream& a_out):m_out(a_out) {}
 30   virtual ~session() {}
 31 protected:
 32   session(const session& a_from):m_out(a_from.m_out) {}
 33   session& operator=(const session& a_from) {if(&a_from==this) return *this;return *this;}
 34 public:
 35   std::ostream& out() const {return m_out;}
 36   bool is_valid() const {return true;}
 37   bool steer() {
 38     tools_vforcit(viewer*,m_to_render,it) {(*it)->render();}
 39     m_to_render.clear();
 40     return true;
 41   }
 42   bool sync() {
 43     tools_vforcit(viewer*,m_to_render,it) {(*it)->render();}
 44     m_to_render.clear();
 45     return true;
 46   }
 47 public:
 48   void to_render(viewer* a_viewer) {
 49     if(is_inp(m_to_render,a_viewer)) return;
 50     m_to_render.push_back(a_viewer);
 51   }
 52 protected:
 53   std::ostream& m_out;
 54   std::vector<viewer*> m_to_render;  
 55 };
 56 
 57 }}
 58 
 59 #endif
 60