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