72 #include "vtkCommonCoreModule.h"
74 #include "vtkSetGet.h"
78 class vtkSubjectHelper;
94 void*
operator new(
size_t tSize);
95 void operator delete(
void* p);
212 template <
class U,
class T>
214 unsigned long event, U observer,
void (T::*callback)(),
float priority = 0.0f)
216 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
219 return this->AddTemplatedObserver(event, callable,
priority);
221 template <
class U,
class T>
225 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
228 return this->AddTemplatedObserver(event, callable,
priority);
237 template <
class U,
class T>
241 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
244 return this->AddTemplatedObserver(event, callable,
priority);
315 class vtkClassMemberCallbackBase
322 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
323 virtual ~vtkClassMemberCallbackBase() =
default;
333 class vtkClassMemberHandlerPointer
340 if ((this->VoidPointer =
dynamic_cast<T*
>(o)) ==
nullptr)
343 this->VoidPointer = o;
345 this->WeakPointer = o;
346 this->UseWeakPointer =
true;
348 void operator=(
void* o)
350 this->VoidPointer = o;
351 this->WeakPointer =
nullptr;
352 this->UseWeakPointer =
false;
356 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
360 return static_cast<T*
>(this->VoidPointer);
375 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
377 vtkClassMemberHandlerPointer<T> Handler;
378 void (T::*Method1)();
379 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
380 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
383 vtkClassMemberCallback(T* handler,
void (T::*method)())
385 this->Handler = handler;
386 this->Method1 = method;
387 this->Method2 =
nullptr;
388 this->Method3 =
nullptr;
391 vtkClassMemberCallback(T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
393 this->Handler = handler;
394 this->Method1 =
nullptr;
395 this->Method2 = method;
396 this->Method3 =
nullptr;
399 vtkClassMemberCallback(T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
401 this->Handler = handler;
402 this->Method1 =
nullptr;
403 this->Method2 =
nullptr;
404 this->Method3 = method;
406 ~vtkClassMemberCallback()
override =
default;
409 bool operator()(
vtkObject* caller,
unsigned long event,
void* calldata)
override
411 T* handler = this->Handler.GetPointer();
416 (handler->*this->Method1)();
418 else if (this->Method2)
420 (handler->*this->Method2)(caller, event, calldata);
422 else if (this->Method3)
424 return (handler->*this->Method3)(caller, event, calldata);
444 unsigned long AddTemplatedObserver(
445 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
447 friend class vtkObjectCommandInternal;
superclass for callback/observer methods
a simple class to control print indentation
abstract base class for most VTK objects
virtual void ObjectFinalize()
void operator=(const vtkObjectBase &)
abstract base class for most VTK objects
vtkBaseTypeMacro(vtkObject, vtkObjectBase)
void InternalReleaseFocus()
These methods allow a command to exclusively grab all events.
vtkCommand * GetCommand(unsigned long tag)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
virtual void DebugOn()
Turn debugging output on.
vtkTypeBool HasObserver(unsigned long event)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RemoveObservers(const char *event)
vtkSubjectHelper * SubjectHelper
std::string GetObjectDescription() const override
The object description printed in messages and PrintSelf output.
unsigned long AddObserver(unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
Allow user to set the AbortFlagOn() with the return value of the callback method.
vtkTypeBool HasObserver(const char *event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
virtual void DebugOff()
Turn debugging output off.
unsigned long AddObserver(unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
Overloads to AddObserver that allow developers to add class member functions as callbacks for events.
void InternalGrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
These methods allow a command to exclusively grab all events.
static void SetGlobalWarningDisplay(int val)
This is a global flag that controls whether any debug, warning or error messages are displayed.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
void RemoveObserver(vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
void RemoveObservers(unsigned long event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
virtual std::string GetObjectName() const
Set/get the name of this object for reporting purposes.
int InvokeEvent(unsigned long event)
void UnRegisterInternal(vtkObjectBase *, vtkTypeBool check) override
void RemoveAllObservers()
void RegisterInternal(vtkObjectBase *, vtkTypeBool check) override
static void GlobalWarningDisplayOff()
This is a global flag that controls whether any debug, warning or error messages are displayed.
int InvokeEvent(const char *event, void *callData)
This method invokes an event and return whether the event was aborted or not.
virtual void Modified()
Update the modification time for this object.
vtkTypeBool HasObserver(unsigned long event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
int InvokeEvent(unsigned long event, void *callData)
This method invokes an event and return whether the event was aborted or not.
static int GetGlobalWarningDisplay()
This is a global flag that controls whether any debug, warning or error messages are displayed.
unsigned long AddObserver(unsigned long event, vtkCommand *, float priority=0.0f)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
void RemoveObservers(const char *event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
unsigned long AddObserver(const char *event, vtkCommand *, float priority=0.0f)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
void SetDebug(bool debugFlag)
Set the value of the debug flag.
vtkTypeBool HasObserver(const char *event)
static void BreakOnError()
This method is called when vtkErrorMacro executes.
static void GlobalWarningDisplayOn()
This is a global flag that controls whether any debug, warning or error messages are displayed.
bool GetDebug()
Get the value of the debug flag.
virtual vtkMTimeType GetMTime()
Return this object's modified time.
void RemoveObservers(unsigned long event)
int InvokeEvent(const char *event)
virtual void SetObjectName(const std::string &objectName)
Set/get the name of this object for reporting purposes.
void RemoveObserver(unsigned long tag)
unsigned long AddObserver(unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
Overloads to AddObserver that allow developers to add class member functions as callbacks for events.
record modification and/or execution time
Non-templated superclass for vtkWeakPointer.
vtkTypeUInt32 vtkMTimeType