Geant4 Cross Reference |
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