]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/Events.h
First commit
[FrontAlgorithms.git] / lib / fpa / Base / Events.h
1 #ifndef __FPA__BASE__EVENTS__H__
2 #define __FPA__BASE__EVENTS__H__
3
4 #include <vector>
5 #include <itkProcessObject.h>
6
7 namespace fpa
8 {
9   namespace Base
10   {
11     /**
12      * Evolution event. An event is generated when a vertex changes its
13      * state.
14      */
15     template< class N >
16     class BaseEvent
17       : public itk::AnyEvent
18     {
19     public:
20       BaseEvent( )
21         : itk::AnyEvent( )
22         { }
23       BaseEvent( const N& n )
24         : itk::AnyEvent( ),
25           Node( n )
26         { }
27       virtual ~BaseEvent( )
28         { }
29
30       const char* GetEventName( ) const
31         { return( "fpa::Base::BaseEvent" ); }
32       bool CheckEvent( const itk::EventObject* e ) const
33         { return( dynamic_cast< const BaseEvent< N >* >( e ) != NULL ); }
34       itk::EventObject* MakeObject( ) const
35         { return( new BaseEvent< N >( ) ); }
36
37     public:
38       N Node;
39     };
40
41     /**
42      */
43     template< class N >
44     class FrontEvent
45       : public BaseEvent< N >
46     {
47     public:
48       FrontEvent( )
49         : BaseEvent< N >( )
50         { }
51       FrontEvent( const N& n )
52         : BaseEvent< N >( n )
53         { }
54       virtual ~FrontEvent( )
55         { }
56       const char* GetEventName( ) const
57         { return( "fpa::Base::FrontEvent" ); }
58       bool CheckEvent( const itk::EventObject* e ) const
59         { return( dynamic_cast< const FrontEvent< N >* >( e ) != NULL ); }
60       itk::EventObject* MakeObject( ) const
61         { return( new FrontEvent< N >( ) ); }
62     };
63
64     /**
65      */
66     template< class N >
67     class MarkEvent
68       : public BaseEvent< N >
69     {
70     public:
71       MarkEvent( )
72         : BaseEvent< N >( )
73         { }
74       MarkEvent( const N& n )
75         : BaseEvent< N >( n )
76         { }
77       virtual ~MarkEvent( )
78         { }
79       const char* GetEventName( ) const
80         { return( "fpa::Base::MarkEvent" ); }
81       bool CheckEvent( const itk::EventObject* e ) const
82         { return( dynamic_cast< const MarkEvent< N >* >( e ) != NULL ); }
83       itk::EventObject* MakeObject( ) const
84         { return( new MarkEvent< N >( ) ); }
85     };
86
87     /**
88      */
89     template< class N >
90     class CollisionEvent
91       : public BaseEvent< N >
92     {
93     public:
94       CollisionEvent( )
95         : BaseEvent< N >( )
96         { }
97       CollisionEvent( const N& n )
98         : BaseEvent< N >( n )
99         { }
100       virtual ~CollisionEvent( )
101         { }
102       const char* GetEventName( ) const
103         { return( "fpa::Base::CollisionEvent" ); }
104       bool CheckEvent( const itk::EventObject* e ) const
105         { return( dynamic_cast< const CollisionEvent< N >* >( e ) != NULL ); }
106       itk::EventObject* MakeObject( ) const
107         { return( new CollisionEvent< N >( ) ); }
108     };
109
110     /**
111      */
112     template< class N >
113     class EndEvent
114       : public BaseEvent< N >
115     {
116     public:
117       EndEvent( )
118         : BaseEvent< N >( )
119         { }
120       virtual ~EndEvent( )
121         { }
122       const char* GetEventName( ) const
123         { return( "fpa::Base::EndEvent" ); }
124       bool CheckEvent( const itk::EventObject* e ) const
125         { return( dynamic_cast< const EndEvent< N >* >( e ) != NULL ); }
126       itk::EventObject* MakeObject( ) const
127         { return( new EndEvent< N >( ) ); }
128     };
129
130   } // ecapseman
131
132 } // ecapseman
133
134 #endif // __FPA__BASE__EVENTS__H__
135
136 // eof - $RCSfile$