3 #include <ISession2D_InteractiveContext.h>
5 IMPLEMENT_STANDARD_HANDLE(ISession2D_InteractiveContext,MMgt_TShared)
6 IMPLEMENT_STANDARD_RTTIEXT(ISession2D_InteractiveContext,MMgt_TShared)
8 #include <Aspect_Window.hxx>
9 #include <Aspect_Background.hxx>
10 #include <SelectMgr_EntityOwner.hxx>
11 #include <SelectMgr_SelectionManager.hxx>
12 #include <V2d_Viewer.hxx>
13 #include <V2d_View.hxx>
14 #include <PrsMgr_PresentationManager2d.hxx>
15 #include <StdSelect_ViewerSelector2d.hxx>
16 #include <SelectMgr_SelectableObject.hxx>
17 #include <TColStd_MapIteratorOfMapOfTransient.hxx>
19 ISession2D_InteractiveContext::ISession2D_InteractiveContext()
23 ISession2D_InteractiveContext::ISession2D_InteractiveContext(const Handle(V2d_Viewer)& aViewer)
28 void ISession2D_InteractiveContext::Initialize(const Handle(V2d_Viewer)& aViewer)
31 myPrsmgr = new PrsMgr_PresentationManager2d(myViewer->View());
32 mySelectionManager = new SelectMgr_SelectionManager();
33 mySelector = new StdSelect_ViewerSelector2d();
36 // set Sensitivity very very important for SensitiveCurve !!
37 mySelector->SetSensitivity (0.5); // en mm
38 mySelectionManager->Add(mySelector);
42 void ISession2D_InteractiveContext::Display(const Handle(AIS_InteractiveObject)& anObject,
43 const Standard_Boolean Redraw)
45 myMapOfObject.Add(anObject);
46 myPrsmgr->Display(anObject);//,anObject->DisplayMode());
48 mySelectionManager->Load(anObject,mySelector);
49 mySelectionManager->Activate(anObject,0,mySelector);
51 if (Redraw) myViewer->Update();
54 void ISession2D_InteractiveContext::Erase(const Handle(AIS_InteractiveObject)& anObject,
55 const Standard_Boolean Redraw)
57 if (!anObject.IsNull())
59 myPrsmgr->Erase(anObject);//,anObject->DisplayMode());
61 ->Deactivate(anObject,mySelector);
62 if (Redraw) myViewer->Update();
66 void ISession2D_InteractiveContext::Move(const Handle(V2d_View)& aView,
67 const Standard_Integer x1,
68 const Standard_Integer y1)
70 if (!aBuffer.IsNull())
76 if (myViewer->IsActive()) // A propos de la grille !!!
78 aView->ShowHit(x1,y1);
81 aBuffer =new Graphic2d_Buffer(aView->View(),0,0,3,5);
82 mySelector->Pick(x1,y1,aView);
84 Handle(SelectMgr_SelectableObject) aSelectableObject;
88 while (mySelector->More())
90 aSelectableObject = Handle(SelectMgr_SelectableObject)::DownCast(mySelector->Picked()->Selectable());
92 myPrsmgr->Dump(aBuffer,aSelectableObject) ;
99 void ISession2D_InteractiveContext::Pick(const Handle(V2d_View)& aView,
100 const Standard_Integer x1,
101 const Standard_Integer y1)
104 if (myViewer->IsActive()) // A propos de la grille !!!
106 aView->ShowHit(x1,y1);
109 mySelector->Pick(x1,y1,aView);
111 Handle(SelectMgr_SelectableObject) aSelectableObject;
113 while (mySelector->More())
115 Handle(SelectMgr_EntityOwner) aOwn= mySelector->Picked();
116 aSelectableObject = Handle(SelectMgr_SelectableObject)::DownCast(aOwn->Selectable());
117 myPrsmgr->ColorHighlight(aSelectableObject,5,0) ;
121 if (myViewer->IsActive()) // A propos de la grille !!!
123 aView->ShowHit(x1,y1);
128 void ISession2D_InteractiveContext::DisplayAreas()
130 myViewer->InitActiveViews();
131 while(myViewer->MoreActiveViews())
133 Handle(V2d_View) aView = myViewer->ActiveView();
134 mySelector->DisplayAreas(aView);
135 myViewer->NextActiveViews();
140 void ISession2D_InteractiveContext::ClearAreas()
142 mySelector->ClearAreas();
146 void ISession2D_InteractiveContext::EraseAll()
148 TColStd_MapIteratorOfMapOfTransient anIterator(myMapOfObject);
149 for (;anIterator.More();anIterator.Next())
151 Handle(Standard_Transient) aTransient = anIterator.Key();
152 Handle(AIS_InteractiveObject) anObject = Handle(AIS_InteractiveObject)::DownCast(aTransient);
154 if (!anObject.IsNull())
156 myPrsmgr->Erase(anObject);
158 ->Deactivate(Handle(AIS_InteractiveObject)::DownCast(anObject),mySelector);
162 Standard_CString ObjectTypeName = aTransient->DynamicType()->Name();