#include <vtkObjectSet.h>
Public Member Functions | |
vtkObjectSet () | |
virtual | ~vtkObjectSet () |
void | AddObserver (vtkObjectObserver *observer) |
void | RemoveObserver (vtkObjectObserver *observer) |
void | AddObject (vtkObject *obj) |
void | RemoveObject (vtkObject *obj) |
Static Public Member Functions | |
static void | OnObjectModified (vtkObject *, unsigned long eid, void *clientdata, void *) |
Protected Attributes | |
std::set< vtkObjectObserver * > | m_vtkObjectObservers |
std::set< const vtkObject * > | m_Objects |
std::map< const vtkObject *, unsigned long > | m_ObjectModifiedTags |
Holds all tags of Modified Event Listeners. | |
std::map< const vtkObject *, unsigned long > | m_ObjectDeleteTags |
Holds all tags of Modified Event Listeners. |
a class holding a list of itk objects and/or vtk objects. the main idea of the class is that it listens to the modified and delete events of the objects and informs associated objectobservers. This eases the handling of the sometimes complicated event handling mechanisms.
Definition at line 21 of file vtkObjectSet.h.
vtkObjectSet::vtkObjectSet | ( | ) |
Definition at line 8 of file vtkObjectSet.cpp.
{ }
vtkObjectSet::~vtkObjectSet | ( | ) | [virtual] |
Definition at line 12 of file vtkObjectSet.cpp.
{ }
void vtkObjectSet::AddObject | ( | vtkObject * | obj ) |
Definition at line 27 of file vtkObjectSet.cpp.
References m_ObjectDeleteTags, m_ObjectModifiedTags, m_Objects, and OnObjectModified().
{ // if add object, add observer for modified and delete event std::pair<std::set<const vtkObject *>::iterator, bool> res = m_Objects.insert(obj); if(res.second) { vtkSmartPointer<vtkCallbackCommand> modifiedCallback = vtkSmartPointer<vtkCallbackCommand>::New(); modifiedCallback->SetCallback ( vtkObjectSet::OnObjectModified ); modifiedCallback->SetClientData(this); m_ObjectModifiedTags[obj] = obj->AddObserver ( vtkCommand::ModifiedEvent, modifiedCallback ); m_ObjectDeleteTags[obj] = obj->AddObserver ( vtkCommand::DeleteEvent, modifiedCallback ); } }
void vtkObjectSet::AddObserver | ( | vtkObjectObserver * | observer ) |
Definition at line 17 of file vtkObjectSet.cpp.
References m_vtkObjectObservers.
{ m_vtkObjectObservers.insert(observer); }
void vtkObjectSet::OnObjectModified | ( | vtkObject * | caller, |
unsigned long | eid, | ||
void * | clientdata, | ||
void * | |||
) | [static] |
vtk event function
Definition at line 61 of file vtkObjectSet.cpp.
References m_vtkObjectObservers, and RemoveObject().
Referenced by AddObject().
{ // if event == modified event, inform objectobservers // else: call RemoveObject() or remove objectobserver and inform objectobservers vtkObjectSet* instance = static_cast<vtkObjectSet*>( clientdata ); for(std::set<vtkObjectObserver*>::iterator it = instance->m_vtkObjectObservers.begin(); it != instance->m_vtkObjectObservers.end(); ++it) eid == vtkCommand::ModifiedEvent ? (*it)->OnModified( caller ): (*it)->OnDeleted( caller ); if(eid != vtkCommand::ModifiedEvent) instance->RemoveObject( caller ); }
void vtkObjectSet::RemoveObject | ( | vtkObject * | obj ) |
Definition at line 46 of file vtkObjectSet.cpp.
References m_ObjectDeleteTags, m_ObjectModifiedTags, and m_Objects.
Referenced by OnObjectModified().
{ // if object removed, remove observer and tags for modified and delete event std::set<const vtkObject *>::size_type deletedObjs = m_Objects.erase(obj); if(deletedObjs > 0) { obj->RemoveObserver(m_ObjectModifiedTags[obj]); obj->RemoveObserver(m_ObjectDeleteTags[obj]); m_ObjectModifiedTags.erase(obj); m_ObjectDeleteTags.erase(obj); } }
void vtkObjectSet::RemoveObserver | ( | vtkObjectObserver * | observer ) |
Definition at line 22 of file vtkObjectSet.cpp.
References m_vtkObjectObservers.
{ m_vtkObjectObservers.erase(observer); }
std::map<const vtkObject *, unsigned long> vtkObjectSet::m_ObjectDeleteTags [protected] |
Holds all tags of Modified Event Listeners.
Definition at line 48 of file vtkObjectSet.h.
Referenced by AddObject(), and RemoveObject().
std::map<const vtkObject *, unsigned long> vtkObjectSet::m_ObjectModifiedTags [protected] |
Holds all tags of Modified Event Listeners.
Definition at line 44 of file vtkObjectSet.h.
Referenced by AddObject(), and RemoveObject().
std::set<const vtkObject*> vtkObjectSet::m_Objects [protected] |
Definition at line 40 of file vtkObjectSet.h.
Referenced by AddObject(), and RemoveObject().
std::set<vtkObjectObserver*> vtkObjectSet::m_vtkObjectObservers [protected] |
Definition at line 39 of file vtkObjectSet.h.
Referenced by AddObserver(), OnObjectModified(), and RemoveObserver().