[vtkusers] New functionality: Observing events from class member functions
Jim Peterson
jimcp at cox.net
Mon Oct 11 16:20:47 EDT 2010
David Doria wrote:
> Thanks to the hard work of Utkarsh and David Gobbi, we can now observe
> VTK events from class member functions!
>
> The idea is:
>
> class MyClass
> {
> public:
> void KeypressCallbackFunction(vtkObject* caller,
> long unsigned int eventId,
> void* callData )
> {
> std::cout << "Caught event in MyClass" << std::endl;
> }
>
> };
>
> ... else where ...
>
> MyClass myClass;
> renderWindowInteractor->AddObserver(vtkCommand::KeyPressEvent,
> &myClass, &MyClass::KeypressCallbackFunction);
>
> (This in in contrast to the old method of creating a
> vtkCallbackCommand object and passing it a static class function,
> yuck!)
>
> A full demonstration can be found here:
> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Interaction/ObserverMemberFunction
>
> Hopefully this new addition will improve the organization of everyones
> code. It certainly has with mine!
>
This is excellent news, The callback structure is one of the reasons I
gravitated to the Java interface in the first place. The Java callbacks
do not have an equivalent of the void* data parameter, but since the
callback in an instance object, My feeling is this parameter is rendered
relatively unecessary.
Great work to all involved.
Jim
More information about the vtkusers
mailing list