Salome HOME
StaticMeshPlugin porting for PV5.11
[modules/paravis.git] / src / Plugins / StaticMesh / plugin / StaticMeshModule / vtkStaticMeshObjectFactory.cxx
1 /*=========================================================================
2
3   Program:   Visualization Toolkit
4   Module:    vtkStaticMeshObjectFactory.cxx
5
6   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7   All rights reserved.
8   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10      This software is distributed WITHOUT ANY WARRANTY; without even
11      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12      PURPOSE.  See the above copyright notice for more information.
13
14 =========================================================================*/
15 #include "vtkStaticMeshObjectFactory.h"
16
17 #include <vtkCollectionIterator.h>
18 #include <vtkObjectFactory.h>
19 #include <vtkObjectFactoryCollection.h>
20 #include <vtkVersion.h>
21
22 #include "vtkStaticDataSetSurfaceFilter.h"
23 #include "vtkStaticEnSight6BinaryReader.h"
24 #include "vtkStaticEnSight6Reader.h"
25 #include "vtkStaticEnSightGoldBinaryReader.h"
26 #include "vtkStaticEnSightGoldReader.h"
27 #include "vtkStaticPlaneCutter.h"
28
29 #ifdef PARAVIEW_USE_MPI
30 #include "vtkStaticPUnstructuredGridGhostCellsGenerator.h"
31 #endif
32
33 vtkStandardNewMacro(vtkStaticMeshObjectFactory);
34
35 VTK_CREATE_CREATE_FUNCTION(vtkStaticDataSetSurfaceFilter);
36 VTK_CREATE_CREATE_FUNCTION(vtkStaticPlaneCutter);
37 VTK_CREATE_CREATE_FUNCTION(vtkStaticEnSight6BinaryReader);
38 VTK_CREATE_CREATE_FUNCTION(vtkStaticEnSight6Reader);
39 VTK_CREATE_CREATE_FUNCTION(vtkStaticEnSightGoldReader);
40 VTK_CREATE_CREATE_FUNCTION(vtkStaticEnSightGoldBinaryReader);
41
42 #ifdef PARAVIEW_USE_MPI
43 VTK_CREATE_CREATE_FUNCTION(vtkStaticPUnstructuredGridGhostCellsGenerator);
44 #endif
45
46 //-----------------------------------------------------------------------------
47 vtkStaticMeshObjectFactory::vtkStaticMeshObjectFactory()
48 {
49   this->RegisterOverride("vtkGeometryFilter", "vtkStaticDataSetSurfaceFilter",
50     "StaticDataSetSurfaceFilter", 1, vtkObjectFactoryCreatevtkStaticDataSetSurfaceFilter);
51   this->RegisterOverride("vtkPlaneCutter", "vtkStaticPlaneCutter", "StaticPlaneCutter", 1,
52     vtkObjectFactoryCreatevtkStaticPlaneCutter);
53   this->RegisterOverride("vtkEnSight6BinaryReader", "vtkStaticEnSight6BinaryReader",
54     "StaticEnSight6BinaryReader", 1, vtkObjectFactoryCreatevtkStaticEnSight6BinaryReader);
55   this->RegisterOverride("vtkEnSight6Reader", "vtkStaticEnSight6Reader", "StaticEnSight6Reader", 1,
56     vtkObjectFactoryCreatevtkStaticEnSight6Reader);
57   this->RegisterOverride("vtkEnSightGoldReader", "vtkStaticEnSight6BinaryReader",
58     "StaticEnSight6BinaryReader", 1, vtkObjectFactoryCreatevtkStaticEnSightGoldReader);
59   this->RegisterOverride("vtkEnSightGoldBinaryReader", "vtkStaticEnSightGoldBinaryReader",
60     "StaticEnSightGoldBinaryReader", 1, vtkObjectFactoryCreatevtkStaticEnSightGoldBinaryReader);
61
62 #ifdef PARAVIEW_USE_MPI
63   this->RegisterOverride("vtkPUnstructuredGridGhostCellsGenerator",
64     "vtkStaticPUnstructuredGridGhostCellsGenerator", "StaticPUnstructuredGridGhostCellsGenerator",
65     1, vtkObjectFactoryCreatevtkStaticPUnstructuredGridGhostCellsGenerator);
66 #endif
67 }
68
69 //-----------------------------------------------------------------------------
70 void vtkStaticMeshObjectFactory::PrintSelf(ostream& os, vtkIndent indent)
71 {
72   os << indent << this->GetDescription() << endl;
73 }
74
75 //-----------------------------------------------------------------------------
76 const char* vtkStaticMeshObjectFactory::GetVTKSourceVersion()
77 {
78   return VTK_SOURCE_VERSION;
79 }
80
81 //-----------------------------------------------------------------------------
82 const char* vtkStaticMeshObjectFactory::GetDescription()
83 {
84   return "VTK Static Mesh Extension Factory";
85 }
86
87 //-----------------------------------------------------------------------------
88 class StaticFactoryInitialize
89 {
90 public:
91   StaticFactoryInitialize()
92   {
93     bool hasStaticPluginFactory = false;
94     vtkObjectFactoryCollection* collection = vtkObjectFactory::GetRegisteredFactories();
95     collection->InitTraversal();
96     vtkObjectFactory* f;
97     while ((f = collection->GetNextItem()))
98     {
99       if (f->IsA("vtkStaticMeshObjectFactory"))
100       {
101         hasStaticPluginFactory = true;
102         break;
103       }
104     }
105     if (!hasStaticPluginFactory)
106     {
107       vtkNew<vtkStaticMeshObjectFactory> instance;
108       vtkObjectFactory::RegisterFactory(instance);
109     }
110   }
111
112   virtual ~StaticFactoryInitialize()
113   {
114     vtkObjectFactoryCollection* collection = vtkObjectFactory::GetRegisteredFactories();
115     collection->InitTraversal();
116     vtkObjectFactory* f;
117     while ((f = collection->GetNextItem()))
118     {
119       if (f->IsA("vtkStaticMeshObjectFactory"))
120       {
121         vtkObjectFactory::UnRegisterFactory(f);
122         break;
123       }
124     }
125   }
126 };
127
128 static StaticFactoryInitialize StaticFactory;