0022048: Visualization, AIS_InteractiveContext - single object selection should alway...
[occt.git] / src / MeshVS / MeshVS_PrsBuilder.cxx
1 // Created on: 2003-09-09
2 // Created by: Alexander SOLOVYOV
3 // Copyright (c) 2003-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
17 #include <MeshVS_DataSource.hxx>
18 #include <MeshVS_Drawer.hxx>
19 #include <MeshVS_Mesh.hxx>
20 #include <MeshVS_PrsBuilder.hxx>
21 #include <Prs3d_Presentation.hxx>
22 #include <Prs3d_Root.hxx>
23 #include <SelectBasics_EntityOwner.hxx>
24 #include <SelectBasics_SensitiveEntity.hxx>
25 #include <Standard_Type.hxx>
26
27 IMPLEMENT_STANDARD_RTTIEXT(MeshVS_PrsBuilder,Standard_Transient)
28
29 //================================================================
30 // Function : Constructor MeshVS_PrsBuilder
31 // Purpose  :
32 //================================================================
33 MeshVS_PrsBuilder::MeshVS_PrsBuilder ( const Handle(MeshVS_Mesh)& Parent,
34                                        const MeshVS_DisplayModeFlags& Flags,
35                                        const Handle(MeshVS_DataSource)& DS,
36                                        const Standard_Integer Id,
37                                        const MeshVS_BuilderPriority& Priority )
38 {
39   if (Id<0 && ! Parent.IsNull())
40     myId = Parent->GetFreeId();
41   else
42     myId = Id;
43
44   myParentMesh = Parent.operator->();
45   myDataSource = DS;
46   myDrawer = 0;
47
48   myFlags = Flags;
49   myIsExcluding = Standard_False;
50
51   myPriority = Priority;
52 }
53
54 //================================================================
55 // Function : CustomDraw
56 // Purpose  :
57 //================================================================
58 void MeshVS_PrsBuilder::CustomBuild ( const Handle(Prs3d_Presentation)&,
59                                       const TColStd_PackedMapOfInteger&,
60                                       TColStd_PackedMapOfInteger&,
61                                       const Standard_Integer ) const
62 {
63 }
64
65 //================================================================
66 // Function : CustomSensitiveEntity
67 // Purpose  :
68 //================================================================
69 Handle( SelectBasics_SensitiveEntity ) MeshVS_PrsBuilder::CustomSensitiveEntity
70   ( const Handle( SelectBasics_EntityOwner )&,
71     const Standard_Integer ) const
72 {
73   return 0;
74 }
75
76 //================================================================
77 // Function : DataSource
78 // Purpose  :
79 //================================================================
80 Handle (MeshVS_DataSource) MeshVS_PrsBuilder::DataSource () const
81 {
82   return myDataSource;
83 }
84
85 //================================================================
86 // Function : GetDataSource
87 // Purpose  :
88 //================================================================
89 Handle (MeshVS_DataSource) MeshVS_PrsBuilder::GetDataSource () const
90 {
91   if ( myDataSource.IsNull() )
92     return myParentMesh->GetDataSource();
93   else
94     return myDataSource;
95 }
96
97 //================================================================
98 // Function : SetDataSource
99 // Purpose  :
100 //================================================================
101 void MeshVS_PrsBuilder::SetDataSource ( const Handle (MeshVS_DataSource)& DS )
102 {
103   myDataSource = DS;
104 }
105
106 //================================================================
107 // Function : GetFlags
108 // Purpose  :
109 //================================================================
110 Standard_Integer MeshVS_PrsBuilder::GetFlags () const
111 {
112   return myFlags;
113 }
114
115 //================================================================
116 // Function : GetId
117 // Purpose  :
118 //================================================================
119 Standard_Integer MeshVS_PrsBuilder::GetId () const
120 {
121   return myId;
122 }
123
124 //================================================================
125 // Function : TestFlags
126 // Purpose  :
127 //================================================================
128 Standard_Boolean MeshVS_PrsBuilder::TestFlags ( const Standard_Integer DisplayMode ) const
129 {
130   return ( ( DisplayMode & GetFlags() ) > 0 );
131 }
132
133 //================================================================
134 // Function : SetExcluding
135 // Purpose  :
136 //================================================================
137 void MeshVS_PrsBuilder::SetExcluding  ( const Standard_Boolean state )
138 {
139   myIsExcluding = state;
140 }
141
142 //================================================================
143 // Function : IsExcludingOn
144 // Purpose  :
145 //================================================================
146 Standard_Boolean MeshVS_PrsBuilder::IsExcludingOn () const
147 {
148   return myIsExcluding;
149 }
150
151 //================================================================
152 // Function : GetPriority
153 // Purpose  :
154 //================================================================
155 Standard_Integer MeshVS_PrsBuilder::GetPriority () const
156 {
157   return myPriority;
158 }
159
160 //================================================================
161 // Function : GetDrawer
162 // Purpose  :
163 //================================================================
164 Handle (MeshVS_Drawer) MeshVS_PrsBuilder::GetDrawer () const
165 {
166   if ( myDrawer.IsNull() )
167     return myParentMesh->GetDrawer();
168   else
169     return myDrawer;
170 }
171
172 //================================================================
173 // Function : SetDataSource
174 // Purpose  :
175 //================================================================
176 void MeshVS_PrsBuilder::SetDrawer ( const Handle (MeshVS_Drawer)& Dr )
177 {
178   myDrawer = Dr;
179 }
180
181 //================================================================
182 // Function : Drawer
183 // Purpose  :
184 //================================================================
185 Handle (MeshVS_Drawer) MeshVS_PrsBuilder::Drawer () const
186 {
187   return myDrawer;
188 }
189
190 //================================================================
191 // Function : SetPresentationManager
192 // Purpose  : Set presentation manager. This method is used by 
193 //            MeshVS_Mesh::Compute methodto assign presentation 
194 //            manager to the builder. 
195 //================================================================
196 void MeshVS_PrsBuilder::SetPresentationManager( const Handle(PrsMgr_PresentationManager3d)& thePrsMgr )
197 {
198   myPrsMgr = thePrsMgr;
199 }
200
201 //================================================================
202 // Function : GetPresentationManager
203 // Purpose  : Get presentation manager
204 //================================================================
205 Handle(PrsMgr_PresentationManager3d) MeshVS_PrsBuilder::GetPresentationManager() const
206 {
207   return myPrsMgr;
208 }