6f875db7639118a3933f034b7f312e242305a563
[occt.git] / src / IVtk / IVtk_IShapeData.hxx
1 // Created on: 2011-10-12 
2 // Created by: Roman KOZLOV
3 // Copyright (c) 2011-2014 OPEN CASCADE SAS 
4 // 
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef __IVTK_ISHAPEDATA_H__
17 #define __IVTK_ISHAPEDATA_H__
18
19 #include <IVtk_Interface.hxx>
20 #include <IVtk_Types.hxx>
21
22 DEFINE_STANDARD_HANDLE( IVtk_IShapeData, IVtk_Interface )
23
24 //! @class IVtk_IShapeData
25 //! @brief Interface for working with triangulated data.
26 class IVtk_IShapeData : public IVtk_Interface
27 {
28 public:
29   typedef Handle(IVtk_IShapeData) Handle;
30
31   virtual ~IVtk_IShapeData() { }
32
33   DEFINE_STANDARD_RTTI(IVtk_IShapeData, IVtk_Interface)
34
35   //! Insert a coordinate
36   //! @param [in] theX X coordinate
37   //! @param [in] theY Y coordinate
38   //! @param [in] theZ Z coordinate
39   //! @return id of added point
40   virtual IVtk_PointId InsertCoordinate (double theX, double theY, double theZ) = 0;
41
42   //! Insert a vertex.
43   //! @param [in] theShapeID id of the sub-shape to which the vertex belongs.
44   //! @param [in] thePointId id of the point that defines the coordinates of the vertex
45   //! @param [in] theMeshType mesh type of the sub-shape (MT_Undefined by default)
46   virtual void InsertVertex (const IVtk_IdType   theShapeID,
47                              const IVtk_PointId  thePointId,
48                              const IVtk_MeshType theMeshType = MT_Undefined) = 0;
49
50   //! Insert a line.
51   //! @param [in] theShapeID id of the subshape to which the line belongs.
52   //! @param [in] thePointId1 id of the first point
53   //! @param [in] thePointId2 id of the second point
54   //! @param [in] theMeshType mesh type of the subshape (MT_Undefined by default)
55   virtual void InsertLine (const IVtk_IdType   theShapeID,
56                            const IVtk_PointId  thePointId1,
57                            const IVtk_PointId  thePointId2,
58                            const IVtk_MeshType theMeshType = MT_Undefined) = 0;
59
60   //! Insert a poly-line.
61   //! @param [in] shapeID id of the subshape to which the polyline belongs.
62   //! @param [in] pointIds vector of point ids
63   //! @param [in] meshType mesh type of the subshape (MT_Undefined by default)
64   virtual void InsertLine (const IVtk_IdType       theShapeID,
65                            const IVtk_PointIdList* thePointIds,
66                            const IVtk_MeshType     theMeshType = MT_Undefined) = 0;
67
68   //! Insert a triangle
69   //! @param [in] theShapeID id of the subshape to which the triangle belongs.
70   //! @param [in] thePointId1 id of the first point
71   //! @param [in] thePointId2 id of the second point
72   //! @param [in] thePointId3 id of the third point
73   //! @param [in] theMeshType mesh type of the subshape (MT_Undefined by default)
74   virtual void InsertTriangle (const IVtk_IdType   theShapeID,
75                                const IVtk_PointId  thePointId1,
76                                const IVtk_PointId  thePointId2,
77                                const IVtk_PointId  thePointId3,
78                                const IVtk_MeshType theMeshType = MT_Undefined) = 0;
79 };
80
81 #endif // __IVTK_ISHAPEDATA_H__