Integration of OCCT 6.5.0 from SVN
[occt.git] / src / PrsMgr / PrsMgr_PresentationManager2d.cxx
CommitLineData
7fd59977 1#define G002 // TCL 040500 The Transientmanager has changed
2// to avoid unavailable cyclic dependency under WNT.
3
4#include <PrsMgr_PresentationManager2d.ixx>
5#include <PrsMgr_Presentation2d.hxx>
6#include <Standard_NotImplemented.hxx>
7#include <Graphic2d_TransientManager.hxx>
8#include <V2d_View.hxx>
9#include <TColStd_ListIteratorOfListOfTransient.hxx>
10
11
12
13PrsMgr_PresentationManager2d::PrsMgr_PresentationManager2d (const Handle(Graphic2d_View)& aStructureManager):myStructureManager(aStructureManager) {
14#ifdef G002
15 myTM = new Graphic2d_TransientManager(myStructureManager.operator -> ());
16#else
17 myTM = new Graphic2d_TransientManager(myStructureManager);
18#endif
19 myTM->SetOverrideColor(32);
20 myTM->SetMapping(Standard_True);
21}
22
23
24Standard_Boolean PrsMgr_PresentationManager2d::Is3D() const
25{return Standard_False;}
26
27void PrsMgr_PresentationManager2d::ColorHighlight(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aColor, const Standard_Integer aMode) {
28 if (!HasPresentation(aPresentableObject,aMode)){
29 AddPresentation(aPresentableObject,aMode);
30 }
31 CastPresentation(aPresentableObject,aMode)->Highlight(aColor);
32
33 // immediate mode
34// Add(aPresentableObject,aMode);
35}
36
37void PrsMgr_PresentationManager2d::EnablePlot(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) {
38 CastPresentation(aPresentableObject,aMode)->EnablePlot();
39}
40
41void PrsMgr_PresentationManager2d::DisablePlot(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) {
42 CastPresentation(aPresentableObject,aMode)->DisablePlot();
43}
44
45Standard_Boolean PrsMgr_PresentationManager2d::IsPlottable(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) const {
46 return CastPresentation(aPresentableObject,aMode)->IsPlottable();
47}
48
49void PrsMgr_PresentationManager2d::SetHighlightColor(const Standard_Integer anIndex) {
50 myStructureManager->SetDefaultOverrideColor(anIndex);
51}
52
53Handle(PrsMgr_Presentation) PrsMgr_PresentationManager2d::newPresentation(const Handle(PrsMgr_PresentableObject) & aPresentableObject) {
54 return new PrsMgr_Presentation2d(this);
55}
56
57Handle(Graphic2d_View) PrsMgr_PresentationManager2d::StructureManager () const {
58 return myStructureManager;
59}
60
61
62void PrsMgr_PresentationManager2d::Dump
63 (const Handle(Graphic2d_Buffer)& aBuffer,
64 const Handle(PrsMgr_PresentableObject)& aPresentableObject,
65 const Standard_Integer aMode) {
66 if (!HasPresentation(aPresentableObject,aMode)){
67 AddPresentation(aPresentableObject,aMode);
68 }
69 aBuffer->Add(CastPresentation(aPresentableObject,aMode)->Presentation());
70
71 }
72
73Handle(PrsMgr_Presentation2d) PrsMgr_PresentationManager2d::CastPresentation(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) const {
74 return Handle(PrsMgr_Presentation2d)::DownCast(Presentation(aPresentableObject,aMode));
75}
76void PrsMgr_PresentationManager2d::InitMinMax() {
77 MinMaxList = new Graphic2d_DisplayList;
78}
79void PrsMgr_PresentationManager2d::AddMinMax(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) {
80
81 if (HasPresentation(aPresentableObject,aMode)){
82 MinMaxList->Append(CastPresentation(aPresentableObject,aMode)->Presentation());}
83}
84
85
86void PrsMgr_PresentationManager2d::MinMax(Standard_Real& MinX,
87 Standard_Real& MaxX,
88 Standard_Real& MinY,
89 Standard_Real& MaxY) const {
90
91 myStructureManager->MinMax(MinMaxList,MinX,MaxX,MinY,MaxY);
92}
93void PrsMgr_PresentationManager2d::SetOffset(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer anOffset,const Standard_Integer aMode) {
94 if (HasPresentation(aPresentableObject,aMode)){
95 CastPresentation(aPresentableObject,aMode)->SetOffset(anOffset);
96 }
97
98 // immediate mode
99// Add(aPresentableObject,aMode);
100}
101
102Standard_Integer PrsMgr_PresentationManager2d::Offset(const Handle(PrsMgr_PresentableObject)& aPresentableObject,const Standard_Integer aMode) const{
103 return CastPresentation(aPresentableObject,aMode)->Offset();}
104
105
106
107//=======================================================================
108//function : BeginDraw
109//purpose :
110//=======================================================================
111void PrsMgr_PresentationManager2d::BeginDraw()
112{
113 PrsMgr_PresentationManager::BeginDraw();
114 myGOList.Clear();
115}
116
117//=======================================================================
118//function : AddToImmediateList
119//purpose :
120//=======================================================================
121void PrsMgr_PresentationManager2d::AddToImmediateList(const Handle(Graphic2d_GraphicObject)& GO)
122{myGOList.Append(GO);}
123
124//=======================================================================
125//function : EndDraw
126//purpose :
127//=======================================================================
128
129void PrsMgr_PresentationManager2d::EndDraw(const Handle(Viewer_View)& aView, const Standard_Boolean DoubleBuffer) {
130 Handle(V2d_View) aV2d = Handle(V2d_View)::DownCast(aView);
131 myTM->BeginDraw(Handle(Aspect_WindowDriver)::DownCast(aV2d->Driver()),Standard_True);
132
133 TColStd_ListIteratorOfListOfTransient it(myImmediateList);
134 while (it.More()) {
135 Handle(Graphic2d_GraphicObject) aGO = Handle(PrsMgr_Presentation2d)::DownCast(it.Value())->Presentation();
136 if (!aGO.IsNull()) myTM->Draw(aGO);
137 it.Next();
138 }
139
140 Handle(Standard_Transient) Tr;
141 for(it.Initialize(myGOList);it.More();it.Next()){
142 Tr =it.Value();
143 myTM->Draw(*((Handle(Graphic2d_GraphicObject)*)&Tr));
144 }
145
146 myTM->EndDraw(Standard_True);
147 myImmediateMode = Standard_False;
148}
149