Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
vtkObservation.h
Go to the documentation of this file.
1/*=auto=========================================================================
2
3 Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7
8 Program: 3D Slicer
9 Module: $RCSfile: vtkObservation.h,v $
10 Date: $Date: 2006/01/08 04:48:05 $
11 Version: $Revision: 1.45 $
12
13=========================================================================auto=*/
14
15#ifndef __vtkObservation_h
16#define __vtkObservation_h
17
18// MRML includes
19#include "vtkMRML.h"
20class vtkEventBroker;
21
22// VTK includes
23#include <vtkObject.h>
24class vtkCallbackCommand;
25
26// STD includes
27#include <deque>
28
40//
43class VTK_MRML_EXPORT vtkObservation : public vtkObject
44{
45 public:
46
49 vtkTypeMacro(vtkObservation,vtkObject);
50 void PrintSelf(ostream& os, vtkIndent indent) override;
51
58 virtual void SetEventBroker(vtkEventBroker* eventBroker);
59 vtkGetObjectMacro (EventBroker, vtkEventBroker);
60 vtkGetMacro (InEventQueue, int);
61 vtkSetMacro (InEventQueue, int);
62 vtkGetObjectMacro (ObservationCallbackCommand, vtkCallbackCommand);
63 vtkGetObjectMacro (Subject, vtkObject);
64 void AssignSubject(vtkObject* subject) {this->Subject = subject;};
65 vtkGetMacro (Event, unsigned long);
66 vtkSetMacro (Event, unsigned long);
67 virtual void SetCallbackCommand(vtkCallbackCommand* callbackCommand);
68 vtkGetObjectMacro (CallbackCommand, vtkCallbackCommand);
69 vtkSetStringMacro (Script);
70 vtkGetStringMacro (Script);
71 vtkGetObjectMacro (Observer, vtkObject);
72 void AssignObserver(vtkObject* observer) {this->Observer = observer;};
73 vtkSetStringMacro (Comment);
74 vtkGetStringMacro (Comment);
75 vtkSetMacro(Priority, float);
76 vtkGetMacro(Priority, float);
77
78 vtkGetMacro (EventTag, unsigned long);
79 vtkSetMacro (EventTag, unsigned long);
80 vtkGetMacro (SubjectDeleteEventTag, unsigned long);
81 vtkSetMacro (SubjectDeleteEventTag, unsigned long);
82 vtkGetMacro (ObserverDeleteEventTag, unsigned long);
83 vtkSetMacro (ObserverDeleteEventTag, unsigned long);
84
88 vtkGetMacro (LastElapsedTime, double);
89 vtkSetMacro (LastElapsedTime, double);
90 vtkGetMacro (TotalElapsedTime, double);
91 vtkSetMacro (TotalElapsedTime, double);
92
93 struct CallType
94 {
95 inline CallType(unsigned long eventID, void* callData);
96 unsigned long EventID;
97 void* CallData;
98 };
99 std::deque<CallType> *GetCallDataList() {return &(this->CallDataList);};
100
101protected:
103 ~vtkObservation() override;
106
110
114 vtkCallbackCommand *ObservationCallbackCommand;
115
121
124 vtkObject *Subject;
125
128 unsigned long Event;
129
132 vtkObject *Observer;
133
136 vtkCallbackCommand *CallbackCommand;
137
140 std::deque<CallType> CallDataList;
141
144 char *Script;
145
148 char *Comment;
149
151 float Priority;
152
156 unsigned long EventTag;
159
162
163};
164
165//----------------------------------------------------------------------------
166vtkObservation::CallType::CallType(unsigned long eventID, void* callData)
167 : EventID(eventID)
168 , CallData(callData)
169{
170}
171
172
173#endif
Class that manages adding and deleting of observers with events.
unsigned long SubjectDeleteEventTag
void PrintSelf(ostream &os, vtkIndent indent) override
float Priority
Priority of the observer.
unsigned long ObserverDeleteEventTag
void AssignObserver(vtkObject *observer)
virtual void SetEventBroker(vtkEventBroker *eventBroker)
~vtkObservation() override
vtkCallbackCommand * CallbackCommand
Holder for callback that the Observer wants to have run when Event happens.
vtkEventBroker * EventBroker
EventBroker that 'owns' this observation.
static vtkObservation * New()
The Usual vtk class functions.
unsigned long Event
Holder for Event.
char * Script
Holder for script as an alternative to the callback command.
virtual void SetCallbackCommand(vtkCallbackCommand *callbackCommand)
vtkCallbackCommand * ObservationCallbackCommand
std::deque< CallType > * GetCallDataList()
char * Comment
Holder for comment string.
unsigned long EventTag
vtkObject * Observer
Holder for Observer.
vtkObservation(const vtkObservation &)
vtkObject * Subject
Holder for Subject.
void AssignSubject(vtkObject *subject)
std::deque< CallType > CallDataList
data passed to the observation by the subject
void operator=(const vtkObservation &)
CallType(unsigned long eventID, void *callData)