]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/BaseObjects/Object.h
4d0ab88105fde6369e979fc6f0085928435f4d7d
[cpPlugins.git] / lib / cpPlugins / BaseObjects / Object.h
1 #ifndef __cpPlugins__BaseObjects__Object__h__
2 #define __cpPlugins__BaseObjects__Object__h__
3
4 #include <cpPlugins/Config.h>
5
6 #include <itkLightObject.h>
7 #include <itkObject.h>
8 #include <itkObjectFactory.h>
9 #include <vtkSmartPointer.h>
10 #include <vtkObjectBase.h>
11
12 namespace cpPlugins
13 {
14   namespace BaseObjects
15   {
16     /**
17      */
18     class cpPlugins_EXPORT Object
19       : public itk::Object
20     {
21     public:
22       typedef Object                          Self;
23       typedef itk::Object                     Superclass;
24       typedef itk::SmartPointer< Self >       Pointer;
25       typedef itk::SmartPointer< const Self > ConstPointer;
26
27     public:
28       itkTypeMacro( Object, itk::Object );
29
30     public:
31       virtual const char* GetClassName( ) const = 0;
32       virtual const char* GetClassCategory( ) const = 0;
33
34       const float& GetViewX( ) const;
35       const float& GetViewY( ) const;
36       void SetViewCoords( float x, float y );
37
38       virtual void Modified( ) const cpPlugins_OVERRIDE;
39       virtual itk::ModifiedTimeType GetMTime( ) const cpPlugins_OVERRIDE;
40
41       virtual void SetITK( itk::LightObject* o );
42       virtual void SetVTK( vtkObjectBase* o );
43
44       template< class _TType = itk::LightObject >
45         inline _TType* GetITK( );
46
47       template< class _TType = itk::LightObject >
48         inline const _TType* GetITK( ) const;
49
50       template< class _TType = vtkObjectBase >
51         inline _TType* GetVTK( );
52
53       template< class _TType = vtkObjectBase >
54         inline const _TType* GetVTK( ) const;
55
56     protected:
57       Object( );
58       virtual ~Object( );
59
60     private:
61       // Purposely not implemented
62       Object( const Self& );
63       Self& operator=( const Self& );
64
65     protected:
66       itk::LightObject::Pointer        m_ITK;
67       vtkSmartPointer< vtkObjectBase > m_VTK;
68
69       float m_ViewX;
70       float m_ViewY;
71     };
72
73   } // ecapseman
74
75 } // ecapseman
76
77 #include <cpPlugins/BaseObjects/Object.hxx>
78
79 #endif // __cpPlugins__BaseObjects__Object__h__
80
81 // eof - $RCSfile$