Slicer  4.10
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"
20 class vtkEventBroker;
21 
22 // VTK includes
23 #include <vtkObject.h>
24 class vtkCallbackCommand;
25 
26 // STD includes
27 #include <deque>
28 
40 //
43 class VTK_MRML_EXPORT vtkObservation : public vtkObject
44 {
45  public:
46 
48  static vtkObservation *New();
49  vtkTypeMacro(vtkObservation,vtkObject);
50  virtual void PrintSelf(ostream& os, vtkIndent indent) VTK_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 
101 protected:
102  vtkObservation();
103  virtual ~vtkObservation();
105  void operator=(const vtkObservation&);
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;
157  unsigned long SubjectDeleteEventTag;
158  unsigned long ObserverDeleteEventTag;
159 
162 
163 };
164 
165 //----------------------------------------------------------------------------
166 vtkObservation::CallType::CallType(unsigned long eventID, void* callData)
167  : EventID(eventID)
168  , CallData(callData)
169 {
170 }
171 
172 
173 #endif
char * Script
Holder for script as an alternative to the callback command
void AssignSubject(vtkObject *subject)
vtkCallbackCommand * CallbackCommand
Holder for callback that the Observer wants to have run when Event happens
float Priority
Priority of the observer.
vtkObject * Subject
Holder for Subject
unsigned long Event
Holder for Event
unsigned long ObserverDeleteEventTag
Stores information about the relationship between a Subject and an Observer.
Class that manages adding and deleting of observers with events.
void AssignObserver(vtkObject *observer)
double TotalElapsedTime
vtkObject * Observer
Holder for Observer
vtkCallbackCommand * ObservationCallbackCommand
std::deque< CallType > CallDataList
data passed to the observation by the subject
unsigned long EventTag
unsigned long SubjectDeleteEventTag
CallType(unsigned long eventID, void *callData)
double LastElapsedTime
char * Comment
Holder for comment string
vtkEventBroker * EventBroker
EventBroker that &#39;owns&#39; this observation
std::deque< CallType > * GetCallDataList()