Salome HOME
Update copyright
[modules/geom.git] / src / OCC2VTK / GEOM_VertexSource.cxx
1 // Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #include "GEOM_VertexSource.h" 
21  
22 #include <vtkObjectFactory.h> 
23
24 #include <vtkPoints.h> 
25 #include <vtkCellArray.h> 
26 #include <vtkPolyData.h> 
27 #include <vtkPolyDataMapper.h> 
28  
29 #include <gp_Pnt.hxx>
30 #include <BRep_Tool.hxx>
31  
32 vtkStandardNewMacro(GEOM_VertexSource);
33  
34 GEOM_VertexSource::GEOM_VertexSource() 
35
36
37  
38 GEOM_VertexSource::~GEOM_VertexSource() 
39
40
41  
42 void  
43 GEOM_VertexSource:: 
44 AddVertex(const TopoDS_Vertex& theVertex) 
45
46   myVertexSet.Add(theVertex); 
47
48  
49 void
50 GEOM_VertexSource:: 
51 Execute()
52 {
53   vtkPolyData* aPolyData = GetOutput();
54   aPolyData->Allocate();
55   vtkPoints* aPts = vtkPoints::New();
56   aPolyData->SetPoints(aPts);
57   aPts->Delete();
58
59   TVertexSet::Iterator anIter(myVertexSet);
60   for(; anIter.More(); anIter.Next()){
61     const TopoDS_Vertex& aVertex = anIter.Value();
62     OCC2VTK(aVertex,aPolyData,aPts);
63   }
64 }
65
66 void  
67 GEOM_VertexSource:: 
68 OCC2VTK(const TopoDS_Vertex& theVertex,  
69         vtkPolyData* thePolyData, 
70         vtkPoints* thePts) 
71
72   gp_Pnt aPnt = BRep_Tool::Pnt(theVertex);
73   vtkIdType anId = thePts->InsertNextPoint(aPnt.X(),aPnt.Y(),aPnt.Z());
74   thePolyData->InsertNextCell(VTK_VERTEX,1,&anId);
75 }