]> Creatis software - cpMesh.git/blob - lib/cpm/VTK/ThreadedDeformation.h
First commit
[cpMesh.git] / lib / cpm / VTK / ThreadedDeformation.h
1 #ifndef __CPM__VTK__THREADEDDEFORMATION__H__
2 #define __CPM__VTK__THREADEDDEFORMATION__H__
3
4 // Configure compiler and headers
5 #include <utility>
6 #include <vtkRenderWindow.h>
7 #include <vtkMultiThreader.h>
8 #if ( defined( _WIN32 ) || defined ( _WIN64 ) ) && !defined( __CYGWIN__ )
9 #  undef CPM_VTK_THREADEDDEFORMATION_ON_LINUX
10 #else
11 #  define CPM_VTK_THREADEDDEFORMATION_ON_LINUX
12 #  include <X11/Xlib.h>
13 #  include <GL/glx.h>
14 #endif
15
16 namespace cpm
17 {
18   namespace VTK
19   {
20     /**
21      */
22     template< class F >
23     class ThreadedDeformation
24       : public vtkMultiThreader
25     {
26     public:
27       typedef ThreadedDeformation Self;
28       typedef F TFilter;
29
30     protected:
31       typedef std::pair< F*, vtkRenderWindow* > _TData;
32
33     public:
34       vtkTypeMacro( ThreadedDeformation, vtkMultiThreader );
35
36     public:
37       static Self* New( );
38       static void InitThreadSupport( );
39       int ExecuteFilter( F* filter, vtkRenderWindow* window );
40
41     protected:
42       ThreadedDeformation( );
43       virtual ~ThreadedDeformation( );
44
45       static void* _Function( void* arg );
46
47     private:
48       // Purposely not implemented
49       ThreadedDeformation( const Self& );
50       Self& operator=( const Self& );
51     };
52
53   } // ecapseman
54
55 } // ecapseman
56
57 #include <cpm/VTK/ThreadedDeformation.hxx>
58
59 #endif // __CPM__VTK__THREADEDDEFORMATION__H__
60
61 // eof - $RCSfile$