0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying...
[occt.git] / src / IVtk / IVtk_Types.hxx
1 // Created on: 2011-10-11
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_TYPES_H__
17 #define __IVTK_TYPES_H__
18
19 #include <gp_XY.hxx>
20 #include <NCollection_List.hxx>
21 #include <NCollection_TListIterator.hxx>
22 #include <NCollection_DataMap.hxx>
23 #include <NCollection_Map.hxx>
24 #include <Standard_Boolean.hxx>
25 #include <Standard_Integer.hxx>
26 #include <vtkType.h>
27
28 #ifdef VTK_USE_64BIT_IDS
29 #if defined(_WIN32) && !defined(_WIN64)
30 #error "64-bit VTK library can not be linked for 32-bit target platform"
31 #endif
32 #else
33 #ifdef _WIN64
34 #error "32-bit VTK library can not be linked for 64-bit target platform"
35 #endif
36 #endif
37
38
39 typedef vtkIdType IVtk_IdType;
40 typedef IVtk_IdType IVtk_PointId;
41
42 typedef IVtk_IdType IVtk_FaceId;
43 typedef IVtk_IdType IVtk_EdgeId;
44
45 typedef NCollection_List <IVtk_IdType> IVtk_ShapeIdList;
46 typedef NCollection_List <IVtk_PointId> IVtk_PointIdList;
47
48 typedef NCollection_DataMap <IVtk_IdType, IVtk_ShapeIdList> IVtk_SubShapeMap;
49 typedef NCollection_Map <IVtk_IdType> IVtk_IdTypeMap;
50
51 typedef NCollection_List <gp_XY> IVtk_Pnt2dList;
52
53
54 //! @enum IVtk_SelectionMode Selection modes for 3D shapes
55 //!
56 //! Enumeration that describes all supported selection modes for 3D shapes.
57 //! SM_None means that the shape should become non-selectable.
58 //! SM_Shape makes the shape selectable as a whole.
59 //! Other modes activate selection of sub-shapes of corresponding types.
60 typedef enum
61 {
62   SM_None      = -1, //!< No selection
63   SM_Shape     =  0, //!< Shape selection
64   SM_Vertex    =  1, //!< Vertex selection
65   SM_Edge      =  2, //!< Edge selection
66   SM_Wire      =  3, //!< Wire selection
67   SM_Face      =  4, //!< Face selection
68   SM_Shell     =  5, //!< Shell selection
69   SM_Solid     =  6, //!< Solid selection
70   SM_CompSolid =  7, //!< CompSolid selection
71   SM_Compound  =  8, //!< Compound selection
72 } IVtk_SelectionMode;
73
74 typedef NCollection_List< IVtk_SelectionMode > IVtk_SelectionModeList;
75
76 //! @enum IVtk_MeshType Types of mesh parts for 3D shapes
77 //!
78 //! Enumeration that describes all supported types of mesh parts for 3D shapes.
79 typedef enum
80 {
81   MT_Undefined     = -1, //!< Undefined
82   MT_IsoLine       =  0, //!< Isoline
83   MT_FreeVertex    =  1, //!< Free vertex
84   MT_SharedVertex  =  2, //!< Shared vertex
85   MT_FreeEdge      =  3, //!< Free edge
86   MT_BoundaryEdge  =  4, //!< Boundary edge (related to a single face)
87   MT_SharedEdge    =  5, //!< Shared edge (related to several faces)
88   MT_WireFrameFace =  6, //!< Wireframe face
89   MT_ShadedFace    =  7, //!< Shaded face
90   MT_SeamEdge      =  8  //!< Seam edge between faces
91 } IVtk_MeshType;
92
93 //! @enum IVtk_DisplayMode Display modes for 3D shapes
94 //!
95 //! Enumeration that describes all supported display modes for 3D shapes.
96 typedef enum
97 {
98   DM_Wireframe = 0, //!< Wireframe display mode
99   DM_Shading   = 1  //!< Shaded display mode
100 } IVtk_DisplayMode;
101
102 #endif // __IVTK_TYPES_H__
103