0024732: OpenGl_Context - retrieve functions up to GL4.4
[occt.git] / src / ViewerTest / ViewerTest_EventManager.cxx
CommitLineData
b311480e 1// Created on: 1998-08-27
2// Created by: Robert COUBLANC
3// Copyright (c) 1998-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
17#include <ViewerTest_EventManager.ixx>
18#include <AIS_InteractiveContext.hxx>
19#include <NIS_View.hxx>
20
21//=======================================================================
22//function : ViewerTest_EventManager
23//purpose :
24//=======================================================================
25
26ViewerTest_EventManager::ViewerTest_EventManager
27 (const Handle(V3d_View)& aView,
28 const Handle(AIS_InteractiveContext)& Ctx)
eafb234b 29 : myCtx (Ctx),
30 myView (aView),
7fd59977 31 myX (-1),
32 myY (-1)
33{}
34
35//=======================================================================
36//function : MoveTo
37//purpose :
38//=======================================================================
39
40void ViewerTest_EventManager::MoveTo(const Standard_Integer XPix,
41 const Standard_Integer YPix)
42{
43 if(!myCtx.IsNull() && !myView.IsNull())
44 myCtx->MoveTo(XPix,YPix,myView);
45 myX = XPix;
46 myY = YPix;
47 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
48 if (!aView.IsNull())
49 aView->DynamicHilight (XPix, YPix);
50}
51
52//=======================================================================
53//function : Select
54//purpose :
55//=======================================================================
56
57void ViewerTest_EventManager::Select(const Standard_Integer XPMin,
58 const Standard_Integer YPMin,
59 const Standard_Integer XPMax,
60 const Standard_Integer YPMax)
61{
62#define IS_FULL_INCLUSION Standard_True
63 if(!myCtx.IsNull() && !myView.IsNull())
64 myCtx->Select(XPMin,YPMin,XPMax,YPMax,myView);
65 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
66 if (!aView.IsNull())
67 aView->Select(XPMin,YPMin,XPMax,YPMax, Standard_False, IS_FULL_INCLUSION);
68}
69
70//=======================================================================
71//function : ShiftSelect
72//purpose :
73//=======================================================================
74
75void ViewerTest_EventManager::ShiftSelect(const Standard_Integer XPMin,
76 const Standard_Integer YPMin,
77 const Standard_Integer XPMax,
78 const Standard_Integer YPMax)
79{
80 if(!myCtx.IsNull() && !myView.IsNull())
81 myCtx->AIS_InteractiveContext::ShiftSelect(XPMin,YPMin,XPMax,YPMax,myView,
82 Standard_True);
83 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
84 if (!aView.IsNull())
85 aView->Select(XPMin,YPMin,XPMax,YPMax, Standard_True, IS_FULL_INCLUSION);
86}
87
88//=======================================================================
89//function : Select
90//purpose :
91//=======================================================================
92
93void ViewerTest_EventManager::Select()
94{
95 if (!myCtx.IsNull() && !myView.IsNull())
96 myCtx->Select();
97 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
98 if (!aView.IsNull())
99 aView->Select(myX, myY);
100}
101
102//=======================================================================
103//function : ShiftSelect
104//purpose :
105//=======================================================================
106
107void ViewerTest_EventManager::ShiftSelect()
108{
109 if(!myCtx.IsNull() && !myView.IsNull())
110 myCtx->ShiftSelect(Standard_True);
111 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
112 if (!aView.IsNull())
113 aView->Select(myX, myY, Standard_True);
114}
4754e164 115
116//=======================================================================
117//function : Select
118//purpose : Selection with polyline
119//=======================================================================
120
121void ViewerTest_EventManager::Select(const TColgp_Array1OfPnt2d& thePolyline)
122{
123 if(!myCtx.IsNull() && !myView.IsNull())
124 myCtx->Select(thePolyline,myView);
125 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
126 if (!aView.IsNull())
127 {
128 NCollection_List<gp_XY> aPolylist;
129 for(Standard_Integer anIter = thePolyline.Lower();anIter <= thePolyline.Upper();++anIter)
130 {
131 aPolylist.Append(gp_XY(thePolyline.Value(anIter).X(),
132 thePolyline.Value(anIter).Y()));
133 }
134 aView->Select(aPolylist);
135 }
136}
137
138//=======================================================================
139//function : ShiftSelect
140//purpose : Selection with polyline without erasing of current selection
141//=======================================================================
142
143void ViewerTest_EventManager::ShiftSelect(const TColgp_Array1OfPnt2d& thePolyline)
144{
145 if(!myCtx.IsNull() && !myView.IsNull())
146 myCtx->ShiftSelect(thePolyline,myView);
147 const Handle(NIS_View) aView = Handle(NIS_View)::DownCast(myView);
148 if (!aView.IsNull())
149 {
150 NCollection_List<gp_XY> aPolylist;
151 for(Standard_Integer anIter = thePolyline.Lower();anIter <= thePolyline.Upper();++anIter)
152 {
153 aPolylist.Append(gp_XY(thePolyline.Value(anIter).X(),
154 thePolyline.Value(anIter).Y()));
155 }
156 aView->Select(aPolylist, Standard_True);
157 }
158}