00001
00002
00003
00004
00005 #include "gui/Scene.h"
00006 #include <algorithm>
00007
00008 namespace gui {
00009
00010
00011 Scene::Scene()
00012 :m_enabled(true)
00013 {}
00014
00015
00016
00017 Scene::~Scene()
00018 {
00019 RepList::iterator irep = m_replist.begin();
00020 while( irep != m_replist.end() ) {
00021 delete (*irep++);
00022 }
00023 }
00024
00025
00026 void Scene::add(DisplayRep* pRep)
00027
00028 {
00029 m_replist.push_back(pRep);
00030 }
00031
00032
00033 void Scene::remove(DisplayRep* pRep)
00034
00035 {
00036 RepList::iterator it;
00037 it= std::find(m_replist.begin(), m_replist.end(), pRep);
00038 if( it != m_replist.end() ) m_replist.erase(it);
00039
00040 }
00041
00042
00043 void Scene::clear()
00044
00045 {
00046 if(! m_enabled) return;
00047
00048 RepList::iterator irep = m_replist.begin();
00049 while( irep != m_replist.end() ) {
00050 (*irep++)->clear();
00051 }
00052 }
00053
00054
00055 void Scene::update()
00056
00057 {
00058 if( !m_enabled) return;
00059 RepList::iterator irep = m_replist.begin();
00060 bool updated = false;
00061 while( irep != m_replist.end() ) {
00062 if( !(*irep)->hidden() ) {
00063 (*irep)->update();
00064 updated = true;
00065 }
00066 ++irep;
00067 }
00068
00069 }
00070
00071 void Scene::enable()
00072 {
00073 m_enabled = true;
00074 update();
00075 }
00076
00077 void Scene::disable()
00078 {
00079 m_enabled = true;
00080 clear();
00081 m_enabled = false;
00082 }
00083
00084 void Scene::draw(ViewPort* v)
00085
00086 {
00087 RepList::iterator it=m_replist.begin();
00088 while( it != m_replist.end() ) (*it++)->draw(v);
00089 }
00090
00091 }