// Copyright (C) 2010, Guy Barrand. All rights reserved. // See the file tools.license for terms. #ifndef tools_offscreen_session #define tools_offscreen_session namespace tools { namespace offscreen { class viewer { public: virtual ~viewer() {} public: virtual void render() = 0; }; }} #include "../forit" #include "../vmanip" #include namespace tools { namespace offscreen { class session { public: session(std::ostream& a_out):m_out(a_out) {} virtual ~session() {} protected: session(const session& a_from):m_out(a_from.m_out) {} session& operator=(const session& a_from) {if(&a_from==this) return *this;return *this;} public: std::ostream& out() const {return m_out;} bool is_valid() const {return true;} bool steer() { tools_vforcit(viewer*,m_to_render,it) {(*it)->render();} m_to_render.clear(); return true; } bool sync() { tools_vforcit(viewer*,m_to_render,it) {(*it)->render();} m_to_render.clear(); return true; } public: void to_render(viewer* a_viewer) { if(is_inp(m_to_render,a_viewer)) return; m_to_render.push_back(a_viewer); } protected: std::ostream& m_out; std::vector m_to_render; }; }} #endif