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 | |
13 | PrsMgr_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 | |
24 | Standard_Boolean PrsMgr_PresentationManager2d::Is3D() const |
25 | {return Standard_False;} |
26 | |
27 | void 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 | |
37 | void PrsMgr_PresentationManager2d::EnablePlot(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) { |
38 | CastPresentation(aPresentableObject,aMode)->EnablePlot(); |
39 | } |
40 | |
41 | void PrsMgr_PresentationManager2d::DisablePlot(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) { |
42 | CastPresentation(aPresentableObject,aMode)->DisablePlot(); |
43 | } |
44 | |
45 | Standard_Boolean PrsMgr_PresentationManager2d::IsPlottable(const Handle(PrsMgr_PresentableObject)& aPresentableObject, const Standard_Integer aMode) const { |
46 | return CastPresentation(aPresentableObject,aMode)->IsPlottable(); |
47 | } |
48 | |
49 | void PrsMgr_PresentationManager2d::SetHighlightColor(const Standard_Integer anIndex) { |
50 | myStructureManager->SetDefaultOverrideColor(anIndex); |
51 | } |
52 | |
53 | Handle(PrsMgr_Presentation) PrsMgr_PresentationManager2d::newPresentation(const Handle(PrsMgr_PresentableObject) & aPresentableObject) { |
54 | return new PrsMgr_Presentation2d(this); |
55 | } |
56 | |
57 | Handle(Graphic2d_View) PrsMgr_PresentationManager2d::StructureManager () const { |
58 | return myStructureManager; |
59 | } |
60 | |
61 | |
62 | void 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 | |
73 | Handle(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 | } |
76 | void PrsMgr_PresentationManager2d::InitMinMax() { |
77 | MinMaxList = new Graphic2d_DisplayList; |
78 | } |
79 | void 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 | |
86 | void 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 | } |
93 | void 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 | |
102 | Standard_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 | //======================================================================= |
111 | void PrsMgr_PresentationManager2d::BeginDraw() |
112 | { |
113 | PrsMgr_PresentationManager::BeginDraw(); |
114 | myGOList.Clear(); |
115 | } |
116 | |
117 | //======================================================================= |
118 | //function : AddToImmediateList |
119 | //purpose : |
120 | //======================================================================= |
121 | void PrsMgr_PresentationManager2d::AddToImmediateList(const Handle(Graphic2d_GraphicObject)& GO) |
122 | {myGOList.Append(GO);} |
123 | |
124 | //======================================================================= |
125 | //function : EndDraw |
126 | //purpose : |
127 | //======================================================================= |
128 | |
129 | void 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 | |