0024837: Visualization - revise design and implementation of connected Interactive...
[occt.git] / src / PrsMgr / PrsMgr_PresentationManager.cxx
CommitLineData
b311480e 1// Copyright (c) 1998-1999 Matra Datavision
973c2be1 2// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 3//
973c2be1 4// This file is part of Open CASCADE Technology software library.
b311480e 5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
b311480e 11//
973c2be1 12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
b311480e 14
7fd59977 15#include <PrsMgr_PresentationManager.ixx>
679ecdee 16
17#include <Graphic3d_GraphicDriver.hxx>
18#include <Prs3d_PresentationShadow.hxx>
7fd59977 19#include <PrsMgr_PresentableObject.hxx>
20#include <PrsMgr_Presentation.hxx>
21#include <PrsMgr_Presentations.hxx>
22#include <PrsMgr_ModedPresentation.hxx>
23#include <TColStd_ListIteratorOfListOfTransient.hxx>
679ecdee 24#include <V3d_View.hxx>
25#include <Visual3d_View.hxx>
26#include <Visual3d_Layer.hxx>
27
28// =======================================================================
29// function : PrsMgr_PresentationManager
30// purpose :
31// =======================================================================
32PrsMgr_PresentationManager::PrsMgr_PresentationManager (const Handle(Graphic3d_StructureManager)& theStructureManager)
33: myStructureManager (theStructureManager),
34 myImmediateModeOn (0)
35{
36 //
37}
7fd59977 38
679ecdee 39// =======================================================================
40// function : Display
41// purpose :
42// =======================================================================
43void PrsMgr_PresentationManager::Display (const Handle(PrsMgr_PresentableObject)& thePrsObj,
44 const Standard_Integer theMode)
7fd59977 45{
0717ddc1 46 if (thePrsObj->HasOwnPresentations())
679ecdee 47 {
0717ddc1 48 if (!HasPresentation (thePrsObj, theMode))
49 {
50 AddPresentation (thePrsObj, theMode);
51 }
679ecdee 52
0717ddc1 53 Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
679ecdee 54
0717ddc1 55 if (aPrs.IsNull()) return;
56
57 if (aPrs->MustBeUpdated())
58 {
59 Update (thePrsObj, theMode);
60 }
61
62 if (myImmediateModeOn > 0)
63 {
64 AddToImmediateList (aPrs->Presentation());
65 }
66 else
67 {
68 aPrs->Display();
69 }
7fd59977 70 }
7fd59977 71 else
679ecdee 72 {
0717ddc1 73 thePrsObj->Compute (this, Handle(Prs3d_Presentation)(), theMode);
74 }
75
76 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
77 {
78 Display (anIter.Value(), theMode);
679ecdee 79 }
7fd59977 80}
81
679ecdee 82// =======================================================================
83// function : Erase
84// purpose :
85// =======================================================================
86void PrsMgr_PresentationManager::Erase (const Handle(PrsMgr_PresentableObject)& thePrsObj,
87 const Standard_Integer theMode)
7fd59977 88{
0717ddc1 89 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
90 {
91 Erase (anIter.Value(), theMode);
92 }
93
679ecdee 94 if (HasPresentation (thePrsObj, theMode))
eef7fc64 95 {
679ecdee 96 Presentation (thePrsObj, theMode)->Erase();
97 RemovePresentation (thePrsObj, theMode);
eef7fc64 98 }
7fd59977 99}
100
679ecdee 101// =======================================================================
102// function : Clear
103// purpose :
104// =======================================================================
105void PrsMgr_PresentationManager::Clear (const Handle(PrsMgr_PresentableObject)& thePrsObj,
106 const Standard_Integer theMode)
7fd59977 107{
0717ddc1 108 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
109 {
110 Clear (anIter.Value(), theMode);
111 }
112
679ecdee 113 if (HasPresentation (thePrsObj, theMode))
114 {
115 Presentation (thePrsObj, theMode)->Clear();
116 }
7fd59977 117}
118
679ecdee 119// =======================================================================
120// function : SetVisibility
121// purpose :
122// =======================================================================
0717ddc1 123void PrsMgr_PresentationManager::SetVisibility (const Handle(PrsMgr_PresentableObject)& thePrsObj,
eb4320f2 124 const Standard_Integer theMode,
125 const Standard_Boolean theValue)
126{
0717ddc1 127 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
128 {
129 SetVisibility (anIter.Value(), theMode, theValue);
130 }
131 if (!thePrsObj->HasOwnPresentations())
132 {
133 return;
134 }
135
136 Presentation (thePrsObj, theMode)->SetVisible (theValue);
eb4320f2 137}
7fd59977 138
679ecdee 139// =======================================================================
140// function : Highlight
141// purpose :
142// =======================================================================
143void PrsMgr_PresentationManager::Highlight (const Handle(PrsMgr_PresentableObject)& thePrsObj,
144 const Standard_Integer theMode)
7fd59977 145{
0717ddc1 146 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
147 {
148 Highlight (anIter.Value(), theMode);
149 }
150 if (!thePrsObj->HasOwnPresentations())
151 {
152 return;
153 }
154
679ecdee 155 if (!HasPresentation (thePrsObj, theMode))
156 {
157 AddPresentation (thePrsObj, theMode);
7fd59977 158 }
679ecdee 159
0717ddc1 160 if (!HasPresentation (thePrsObj, theMode)) return;
161
af324faa 162 Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
679ecdee 163 if (aPrs->MustBeUpdated())
164 {
165 Update (thePrsObj, theMode);
7fd59977 166 }
7fd59977 167
679ecdee 168 if (myImmediateModeOn > 0)
169 {
170 Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
171 aShadow->Highlight();
172 AddToImmediateList (aShadow);
173 }
174 else
175 {
176 aPrs->Highlight();
177 }
7fd59977 178}
179
679ecdee 180// =======================================================================
181// function : Unhighlight
182// purpose :
183// =======================================================================
184void PrsMgr_PresentationManager::Unhighlight (const Handle(PrsMgr_PresentableObject)& thePrsObj,
185 const Standard_Integer theMode)
7fd59977 186{
0717ddc1 187 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
188 {
189 Unhighlight (anIter.Value(), theMode);
190 }
191
679ecdee 192 if (HasPresentation (thePrsObj, theMode))
193 {
194 Presentation (thePrsObj, theMode)->Unhighlight();
7fd59977 195 }
196}
197
679ecdee 198// =======================================================================
199// function : SetDisplayPriority
200// purpose :
201// =======================================================================
202void PrsMgr_PresentationManager::SetDisplayPriority (const Handle(PrsMgr_PresentableObject)& thePrsObj,
203 const Standard_Integer theMode,
204 const Standard_Integer theNewPrior) const
205{
0717ddc1 206 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
207 {
208 SetDisplayPriority (anIter.Value(), theMode, theNewPrior);
209 }
210
679ecdee 211 if (HasPresentation (thePrsObj, theMode))
212 {
213 Presentation (thePrsObj, theMode)->SetDisplayPriority (theNewPrior);
214 }
215}
7fd59977 216
679ecdee 217// =======================================================================
218// function : DisplayPriority
219// purpose :
220// =======================================================================
221Standard_Integer PrsMgr_PresentationManager::DisplayPriority (const Handle(PrsMgr_PresentableObject)& thePrsObj,
222 const Standard_Integer theMode) const
7fd59977 223{
0717ddc1 224 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
225 {
226 Standard_Integer aPriority = DisplayPriority (anIter.Value(), theMode);
227 if (aPriority != 0)
228 {
229 return aPriority;
230 }
231 }
232
679ecdee 233 return HasPresentation (thePrsObj, theMode)
234 ? Presentation (thePrsObj, theMode)->DisplayPriority()
235 : 0;
7fd59977 236}
237
679ecdee 238// =======================================================================
239// function : IsDisplayed
240// purpose :
241// =======================================================================
242Standard_Boolean PrsMgr_PresentationManager::IsDisplayed (const Handle(PrsMgr_PresentableObject)& thePrsObj,
243 const Standard_Integer theMode) const
7fd59977 244{
0717ddc1 245 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
246 {
247 if (IsDisplayed (anIter.Value(), theMode))
248 {
249 return Standard_True;
250 }
251 }
252
679ecdee 253 return HasPresentation (thePrsObj, theMode)
254 && Presentation (thePrsObj, theMode)->IsDisplayed();
7fd59977 255}
256
679ecdee 257// =======================================================================
258// function : IsHighlighted
259// purpose :
260// =======================================================================
261Standard_Boolean PrsMgr_PresentationManager::IsHighlighted (const Handle(PrsMgr_PresentableObject)& thePrsObj,
262 const Standard_Integer theMode) const
263{
0717ddc1 264 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
265 {
266 if (IsHighlighted (anIter.Value(), theMode))
267 {
268 return Standard_True;
269 }
270 }
271
679ecdee 272 return HasPresentation (thePrsObj, theMode)
273 && Presentation (thePrsObj, theMode)->IsHighlighted();
274}
7fd59977 275
679ecdee 276// =======================================================================
277// function : Update
278// purpose :
279// =======================================================================
280void PrsMgr_PresentationManager::Update (const Handle(PrsMgr_PresentableObject)& thePrsObj,
281 const Standard_Integer theMode) const
282{
0717ddc1 283 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
284 {
285 Update (anIter.Value(), theMode);
286 }
679ecdee 287 if (!HasPresentation(thePrsObj, theMode))
288 {
289 return;
290 }
7fd59977 291
679ecdee 292 Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
293 if (!aPrs.IsNull())
294 {
295 aPrs->Clear();
296 thePrsObj->Fill (this, aPrs, theMode);
297 aPrs->SetUpdateStatus (Standard_False);
298 }
299}
7fd59977 300
679ecdee 301// =======================================================================
302// function : BeginImmediateDraw
303// purpose :
304// =======================================================================
305void PrsMgr_PresentationManager::BeginImmediateDraw()
306{
307 if (++myImmediateModeOn > 1)
308 {
309 return;
7fd59977 310 }
679ecdee 311
312 ClearImmediateDraw();
7fd59977 313}
679ecdee 314
315// =======================================================================
316// function : ClearImmediateDraw
317// purpose :
318// =======================================================================
319void PrsMgr_PresentationManager::ClearImmediateDraw()
320{
321 if (myImmediateView.IsNull())
322 {
323 myImmediateList.Clear();
324 return;
325 }
326
327 for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
328 {
329 myImmediateView->View()->EraseImmediate (anIter.Value());
330 }
331
7fd59977 332 myImmediateList.Clear();
679ecdee 333 myImmediateView.Nullify();
7fd59977 334}
335
679ecdee 336// =======================================================================
337// function : EndImmediateDraw
338// purpose :
339// =======================================================================
340void PrsMgr_PresentationManager::EndImmediateDraw (const Handle(V3d_View)& theView)
341{
342 if (--myImmediateModeOn > 0)
343 {
344 return;
345 }
346
347 for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
348 {
349 theView->View()->DisplayImmediate (anIter.Value(), Standard_True);
350 }
351 if (!myImmediateList.IsEmpty())
352 {
353 myImmediateView = theView;
354 }
355}
7fd59977 356
679ecdee 357// =======================================================================
358// function : AddToImmediateList
359// purpose :
360//=======================================================================
361void PrsMgr_PresentationManager::AddToImmediateList (const Handle(Prs3d_Presentation)& thePrs)
362{
363 if (myImmediateModeOn < 1)
364 {
365 return;
366 }
367
368 for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
369 {
370 if (anIter.Value() == thePrs)
371 {
372 return;
7fd59977 373 }
679ecdee 374 }
375
376 myImmediateList.Append (thePrs);
377}
378
379// =======================================================================
380// function : HasPresentation
381// purpose :
382// =======================================================================
383Standard_Boolean PrsMgr_PresentationManager::HasPresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
384 const Standard_Integer theMode) const
385{
0717ddc1 386 if (!thePrsObj->HasOwnPresentations())
387 return Standard_False;
388
679ecdee 389 const PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
390 for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
391 {
392 const PrsMgr_ModedPresentation& aModedPrs = aPrsList.Value (aPrsIter);
393 const Handle(PrsMgr_PresentationManager)& aPrsMgr = aModedPrs.Presentation()->PresentationManager();
394 if (theMode == aModedPrs.Mode()
395 && this == aPrsMgr)
396 {
397 return Standard_True;
7fd59977 398 }
399 }
679ecdee 400 return Standard_False;
7fd59977 401}
402
679ecdee 403// =======================================================================
404// function : Presentation
405// purpose :
406// =======================================================================
407Handle(PrsMgr_Presentation) PrsMgr_PresentationManager::Presentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
408 const Standard_Integer theMode) const
409{
410 const PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
411 if (aPrsList.IsEmpty())
412 {
413 return Handle(PrsMgr_Presentation)();
414 }
7fd59977 415
679ecdee 416 for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
417 {
418 const PrsMgr_ModedPresentation& aModedPrs = aPrsList.Value (aPrsIter);
419 const Handle(PrsMgr_PresentationManager)& aPrsMgr = aModedPrs.Presentation()->PresentationManager();
420 if (theMode == aModedPrs.Mode()
421 && this == aPrsMgr)
422 {
423 return aModedPrs.Presentation();
424 }
425 }
7fd59977 426
679ecdee 427 // To be changed within dedicated patch
428 ///return Handle(PrsMgr_Presentation)();
429 return aPrsList.Last().Presentation();
430}
7fd59977 431
679ecdee 432// =======================================================================
433// function : AddPresentation
434// purpose :
435// =======================================================================
436void PrsMgr_PresentationManager::AddPresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
437 const Standard_Integer theMode)
438{
af324faa 439 Handle(PrsMgr_Presentation) aPrs = new PrsMgr_Presentation (this, thePrsObj);
679ecdee 440 thePrsObj->Presentations().Append (PrsMgr_ModedPresentation (aPrs, theMode));
441 thePrsObj->Fill (this, aPrs, theMode);
7fd59977 442
679ecdee 443 // set layer index accordingly to object's presentations
444 const Standard_Integer aZLayerId = GetZLayer (thePrsObj);
445 if (aZLayerId >= 0)
446 {
447 aPrs->SetZLayer (aZLayerId);
448 }
449 aPrs->SetUpdateStatus (Standard_False);
450}
7fd59977 451
679ecdee 452// =======================================================================
453// function : RemovePresentation
454// purpose :
455// =======================================================================
456void PrsMgr_PresentationManager::RemovePresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
457 const Standard_Integer theMode)
7fd59977 458{
679ecdee 459 PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
460 for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
461 {
462 if (theMode == aPrsList (aPrsIter).Mode())
463 // && this == aPrsMgr) ??
464 {
465 aPrsList.Remove (aPrsIter);
466 break;
467 }
468 }
469}
7fd59977 470
679ecdee 471// =======================================================================
472// function : SetZLayer
473// purpose :
474// =======================================================================
475void PrsMgr_PresentationManager::SetZLayer (const Handle(PrsMgr_PresentableObject)& thePrsObj,
476 const Standard_Integer theLayerId)
477{
0717ddc1 478 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
479 {
480 SetZLayer (anIter.Value(), theLayerId);
481 }
482 if (!thePrsObj->HasOwnPresentations())
483 {
484 return;
485 }
679ecdee 486 PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
487 for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
488 {
489 Handle(PrsMgr_Presentation) aPrs = aPrsList.ChangeValue (aPrsIter).Presentation();
490 if (aPrs->PresentationManager() == this)
491 {
492 aPrs->SetZLayer (theLayerId);
493 }
494 }
495}
7fd59977 496
679ecdee 497// =======================================================================
498// function : GetZLayer
499// purpose :
500// =======================================================================
501Standard_Integer PrsMgr_PresentationManager::GetZLayer (const Handle(PrsMgr_PresentableObject)& thePrsObj) const
502{
0717ddc1 503 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
504 {
505 Standard_Integer aLayer = GetZLayer (anIter.Value());
506 if (aLayer != -1)
507 {
508 return aLayer;
509 }
510 }
511 if (!thePrsObj->HasOwnPresentations())
512 {
513 return -1;
514 }
679ecdee 515 const PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
516 for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
517 {
518 Handle(PrsMgr_Presentation) aPrs = aPrsList.Value (aPrsIter).Presentation();
519 if (aPrs->PresentationManager() == this)
520 {
521 return aPrs->GetZLayer();
7fd59977 522 }
7fd59977 523 }
679ecdee 524 return -1;
525}
7fd59977 526
679ecdee 527// =======================================================================
528// function : Connect
529// purpose :
530// =======================================================================
531void PrsMgr_PresentationManager::Connect (const Handle(PrsMgr_PresentableObject)& thePrsObject,
532 const Handle(PrsMgr_PresentableObject)& theOtherObject,
533 const Standard_Integer theMode,
534 const Standard_Integer theOtherMode)
535{
536 if (!HasPresentation (thePrsObject, theMode))
537 {
538 AddPresentation (thePrsObject, theMode);
539 }
540 if (!HasPresentation (theOtherObject, theOtherMode))
541 {
542 AddPresentation (theOtherObject, theOtherMode);
543 }
af324faa 544 Presentation (thePrsObject, theMode)->Connect (Presentation (theOtherObject, theMode));
7fd59977 545}
546
679ecdee 547// =======================================================================
548// function : Transform
549// purpose :
550// =======================================================================
551void PrsMgr_PresentationManager::Transform (const Handle(PrsMgr_PresentableObject)& thePrsObj,
552 const Handle(Geom_Transformation)& theTransformation,
553 const Standard_Integer theMode)
554{
af324faa 555 Presentation (thePrsObj, theMode)->Transform (theTransformation);
679ecdee 556}
7fd59977 557
7fd59977 558
679ecdee 559// =======================================================================
560// function : Color
561// purpose :
562// =======================================================================
563void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)& thePrsObj,
564 const Quantity_NameOfColor theColor,
565 const Standard_Integer theMode)
7fd59977 566{
0717ddc1 567 for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
568 {
569 Color (anIter.Value(), theColor, theMode);
570 }
571 if (!thePrsObj->HasOwnPresentations())
572 {
573 return;
574 }
575
679ecdee 576 if (!HasPresentation (thePrsObj, theMode))
577 {
578 AddPresentation (thePrsObj, theMode);
7fd59977 579 }
7fd59977 580
0717ddc1 581 if (!HasPresentation (thePrsObj, theMode)) return;
582
af324faa 583 Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
679ecdee 584 if (aPrs->MustBeUpdated())
585 {
586 Update (thePrsObj, theMode);
587 }
59f45b7c 588
679ecdee 589 if (myImmediateModeOn > 0)
590 {
591 Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
592 aShadow->Color (theColor);
593 AddToImmediateList (aShadow);
594 }
595 else
596 {
597 aPrs->Color (theColor);
598 }
599}
600
601// =======================================================================
602// function : BoundBox
603// purpose :
604// =======================================================================
605void PrsMgr_PresentationManager::BoundBox (const Handle(PrsMgr_PresentableObject)& thePrsObject,
606 const Standard_Integer theMode)
59f45b7c 607{
679ecdee 608 if (!HasPresentation (thePrsObject, theMode))
59f45b7c 609 {
679ecdee 610 AddPresentation (thePrsObject, theMode);
611 }
612 else if (Presentation (thePrsObject, theMode)->MustBeUpdated())
613 {
614 Update (thePrsObject, theMode);
59f45b7c 615 }
af324faa 616 Presentation (thePrsObject, theMode)->BoundBox();
59f45b7c 617}
618
679ecdee 619// =======================================================================
620// function : SetShadingAspect
621// purpose :
622// =======================================================================
623void PrsMgr_PresentationManager::SetShadingAspect (const Handle(PrsMgr_PresentableObject)& thePrsObject,
624 const Quantity_NameOfColor theColor,
625 const Graphic3d_NameOfMaterial theMaterial,
626 const Standard_Integer theMode)
627{
628 Handle(Prs3d_ShadingAspect) anAspect = new Prs3d_ShadingAspect();
629 anAspect->SetColor (theColor);
630 anAspect->SetMaterial (theMaterial);
631 SetShadingAspect (thePrsObject, anAspect, theMode);
632}
59f45b7c 633
679ecdee 634// =======================================================================
635// function : SetShadingAspect
636// purpose :
637// =======================================================================
638void PrsMgr_PresentationManager::SetShadingAspect (const Handle(PrsMgr_PresentableObject)& thePrsObject,
639 const Handle(Prs3d_ShadingAspect)& theShadingAspect,
640 const Standard_Integer theMode)
59f45b7c 641{
679ecdee 642 if (HasPresentation (thePrsObject, theMode))
59f45b7c 643 {
af324faa 644 Presentation (thePrsObject, theMode)->SetShadingAspect (theShadingAspect);
59f45b7c 645 }
679ecdee 646}