Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

181 lines
5.9 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkCommand.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkCommand - superclass for callback/observer methods
// .SECTION Description
// vtkCommand is an implementation of the observer/command design
// pattern. In this design pattern, any instance of vtkObject can be
// "observed" for any events it might invoke. For example,
// vtkRenderer invokes a StartEvent as it begins to render and a
// EndEvent when it finishes rendering. Filters (subclasses of
// vtkProcessObject) invoke StartEvent, ProgressEvent, and EndEvent as
// the filter processes data. Observers of events are added with the
// AddObserver() method found in vtkObject. AddObserver(), besides
// requiring an event id or name, also takes an instance of vtkCommand
// (or a subclasses). Note that vtkCommand is meant to be subclassed,
// so that you can package the information necessary to support your
// callback.
//
// Event processing can be organized in priority lists, so it is
// possible to truncate the processing of a particular event by
// setting the AbortFlag variable. The priority is set using the
// AddObserver() method. By default the priority is 0, events of the
// same priority are processed in last-in-first-processed order. The
// ordering/aborting of events is important for things like 3D
// widgets, which handle an event if the widget is selected (and then
// aborting further processing of that event). Otherwise. the event
// is passed along for further processing.
// .SECTION See Also
// vtkObject vtkCallbackCommand vtkOldStyleCallbackCommand
// vtkInteractorObserver vtk3DWidget
#ifndef __vtkCommand_h
#define __vtkCommand_h
#include "vtkObjectBase.h"
class vtkObject;
// The superclass that all commands should be subclasses of
class VTK_COMMON_EXPORT vtkCommand : public vtkObjectBase
{
public:
// Description:
// Decrease the reference count (release by another object). This has
// the same effect as invoking Delete() (i.e., it reduces the reference
// count by 1).
void UnRegister();
virtual void UnRegister(vtkObjectBase *)
{ this->UnRegister(); }
// Description:
// All derived classes of vtkCommand must implement this
// method. This is the method that actually does the work of the
// callback. The caller argument is the object invoking the event,
// the eventId parameter is the id of the event, and callData
// parameter is data that can be passed into the execute
// method. (Note: vtkObject::InvokeEvent() takes two parameters: the
// event id (or name) and call data. Typically call data is NULL,
// but the user can package data and pass it this
// way. Alternatively, a derived class of vtkCommand can be used to
// pass data.)
virtual void Execute(vtkObject *caller, unsigned long eventId,
void *callData) = 0;
// Description:
// Convenience methods for translating between event names and event
// ids.
static const char *GetStringFromEventId(unsigned long event);
static unsigned long GetEventIdFromString(const char *event);
// Description:
// Set/Get the abort flag. If this is set to true no further
// commands are executed.
void SetAbortFlag(int f)
{ this->AbortFlag = f; }
int GetAbortFlag()
{ return this->AbortFlag; }
void AbortFlagOn()
{ this->SetAbortFlag(1); }
void AbortFlagOff()
{ this->SetAbortFlag(0); }
//BTX
// Description:
// All the currently defined events are listed here. Developers can
// use -- vtkCommand::UserEvent + int to specify their own event
// ids. If this list is adjusted, be sure to adjust
// vtkCommandEventStrings in vtkCommand.cxx to match.
enum EventIds {
NoEvent = 0,
AnyEvent,
DeleteEvent,
StartEvent,
EndEvent,
RenderEvent,
ProgressEvent,
PickEvent,
StartPickEvent,
EndPickEvent,
AbortCheckEvent,
ExitEvent,
LeftButtonPressEvent,
LeftButtonReleaseEvent,
MiddleButtonPressEvent,
MiddleButtonReleaseEvent,
RightButtonPressEvent,
RightButtonReleaseEvent,
EnterEvent,
LeaveEvent,
KeyPressEvent,
KeyReleaseEvent,
CharEvent,
ExposeEvent,
ConfigureEvent,
TimerEvent,
MouseMoveEvent,
MouseWheelForwardEvent,
MouseWheelBackwardEvent,
ResetCameraEvent,
ResetCameraClippingRangeEvent,
ModifiedEvent,
WindowLevelEvent,
StartWindowLevelEvent,
EndWindowLevelEvent,
ResetWindowLevelEvent,
SetOutputEvent,
ErrorEvent,
WarningEvent,
StartInteractionEvent, //mainly used by vtkInteractorObservers
InteractionEvent,
EndInteractionEvent,
EnableEvent,
DisableEvent,
CreateTimerEvent,
DestroyTimerEvent,
PlacePointEvent,
PlaceWidgetEvent,
CursorChangedEvent,
ExecuteInformationEvent,
RenderWindowMessageEvent,
WrongTagEvent,
StartAnimationCueEvent, // used by vtkAnimationCue
AnimationCueTickEvent,
EndAnimationCueEvent,
VolumeMapperRenderProgressEvent,
VolumeMapperComputeGradientsEndEvent,
VolumeMapperComputeGradientsProgressEvent,
VolumeMapperComputeGradientsStartEvent,
WidgetModifiedEvent,
WidgetValueChangedEvent,
WidgetActivateEvent,
UserEvent = 1000
};
//ETX
protected:
int AbortFlag;
vtkCommand();
virtual ~vtkCommand() {}
friend class vtkSubjectHelper;
//BTX
vtkCommand(const vtkCommand& c) : vtkObjectBase(c) {}
void operator=(const vtkCommand&) {}
//ETX
};
#endif /* __vtkCommand_h */