0027961: Visualization - remove unused and no more working OpenGl_AVIWriter
[occt.git] / src / TPrsStd / TPrsStd_NamedShapeDriver.cxx
CommitLineData
973c2be1 1// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 2//
973c2be1 3// This file is part of Open CASCADE Technology software library.
b311480e 4//
d5f74e42 5// This library is free software; you can redistribute it and/or modify it under
6// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 7// by the Free Software Foundation, with special exception defined in the file
8// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9// distribution for complete text of the license and disclaimer of any warranty.
b311480e 10//
973c2be1 11// Alternatively, this file may be used under the terms of Open CASCADE
12// commercial license or contractual agreement.
b311480e 13
7fd59977 14// last modified by SRN 01/08/2000
15
7fd59977 16#include <AIS_InteractiveContext.hxx>
42cf5bc1 17#include <AIS_InteractiveObject.hxx>
18#include <AIS_Shape.hxx>
19#include <Geom_Transformation.hxx>
20#include <Prs3d_Presentation.hxx>
21#include <PrsMgr_Presentation.hxx>
22#include <PrsMgr_PresentationManager.hxx>
7fd59977 23#include <Standard_GUID.hxx>
42cf5bc1 24#include <Standard_Type.hxx>
25#include <TColStd_ListIteratorOfListOfInteger.hxx>
26#include <TColStd_ListOfInteger.hxx>
27#include <TDataStd.hxx>
28#include <TDF_Label.hxx>
29#include <TNaming_NamedShape.hxx>
7fd59977 30#include <TNaming_Tool.hxx>
31#include <TopLoc_Location.hxx>
42cf5bc1 32#include <TPrsStd_DriverTable.hxx>
33#include <TPrsStd_NamedShapeDriver.hxx>
7fd59977 34
92efcf78 35IMPLEMENT_STANDARD_RTTIEXT(TPrsStd_NamedShapeDriver,TPrsStd_Driver)
36
7fd59977 37#undef OPTIM_UPDATE // If this variable is defined there will be done
38// more otimized update of AIS_Shape. If an object was
39// erased in the viewer and it's location was changed
40// but topological data wasn't then when displayed only
41// the object's presentation will be moved to new location
42// without recompute. The shape in AIS_Shape will
43// be the previous one with the old location.
44// NOTE! After selection of sub shapes of the object
45// they will have THE OLD LOCATION and it has to be
46// compared with location of AIS_Shape that will contain
47// the right location of shape.
48
49
50//=======================================================================
51//function :
52//purpose :
53//=======================================================================
54TPrsStd_NamedShapeDriver::TPrsStd_NamedShapeDriver()
55{
56}
57
58//=======================================================================
59//function :
60//purpose :
61//=======================================================================
62Standard_Boolean TPrsStd_NamedShapeDriver::Update (const TDF_Label& aLabel,
63 Handle(AIS_InteractiveObject)& AIS)
64{
65 Handle(TNaming_NamedShape) NS;
66
67 if( !aLabel.FindAttribute(TNaming_NamedShape::GetID(), NS) ) {
68 return Standard_False;
69 }
70
71 //TopoDS_Shape S = TNaming_Tool::CurrentShape (NS);
72 TopoDS_Shape S = TNaming_Tool::GetShape (NS);
73 if(S.IsNull()){
74 return Standard_False;
75 }
76 TopLoc_Location L = S.Location();
77
78 Handle(AIS_Shape) AISShape;
79 if (AIS.IsNull()) AISShape = new AIS_Shape(S);
80 else {
81 AISShape = Handle(AIS_Shape)::DownCast(AIS);
82 if (AISShape.IsNull()) {
83 AISShape = new AIS_Shape(S);
84 }
85 else {
86 TopoDS_Shape oldShape = AISShape->Shape();
87 if(oldShape != S) {
0717ddc1 88 AISShape->ResetTransformation();
7fd59977 89
90#ifdef OPTIM_UPDATE
91 Handle(AIS_InteractiveContext) ctx = AISShape->GetContext();
92 if(S.IsPartner(oldShape) && (!ctx.IsNull() && !ctx->IsDisplayed(AISShape))) {
93 if(L != oldShape.Location()) ctx->SetLocation(AISShape, L);
94 }
95 else {
96 AISShape->Set(S);
97 AISShape->UpdateSelection();
98 AISShape->SetToUpdate();
99 }
100#else
101 AISShape->Set(S);
102 AISShape->UpdateSelection();
103 AISShape->SetToUpdate();
104#endif
105 }
106 }
107
108 AISShape->SetInfiniteState(S.Infinite());
109 }
110 AIS = AISShape;
111 return Standard_True;
112
113}
114