1 /***********************************************************************
5 Classe OCCViewer_VService :
7 HISTORIQUE DES MODIFICATIONS :
8 --------------------------------
9 00-09-92 : GG ; Creation.
10 25-02-98 : FMN ; PERF.27: Optimisation de la création d'une vue à partir d'une vue existante
15 ************************************************************************/
17 /*----------------------------------------------------------------------*/
21 //just to load the OpenGl shared library
22 //#include <OpenGl_GraphicDriver.hxx>
24 #include "OCCViewer_VService.h"
25 #include <V3d_Viewer.hxx>
26 #include <V3d_View.hxx>
27 #include <Viewer_Viewer.hxx>
29 #include <V2d_Viewer.hxx>
30 #include <V2d_View.hxx>
31 #include <Viewer_Viewer.hxx>
34 #include <WNT_Window.hxx>
35 #include <Graphic3d_WNTGraphicDevice.hxx>
36 #include <WNT_GraphicDevice.hxx>
37 #include <WNT_GraphicDevice.hxx>
38 #include <WNT_WDriver.hxx>
40 #include <Xw_Window.hxx>
41 #include <Graphic3d_GraphicDevice.hxx>
42 #include <Xw_Driver.hxx>
43 #include <Xdps_Driver.hxx>
44 #include <Xw_TypeOfMapping.hxx>
51 static Handle(WNT_GraphicDevice) XServiceDefault2dDevice;
52 static Handle(WNT_GraphicDevice) XServiceImageDevice;
54 static Handle(WNT_GraphicDevice)& _XServiceDefault2dDevice() {
55 static Handle(WNT_GraphicDevice) XServiceDefault2dDevice;
56 return XServiceDefault2dDevice;
58 #define XServiceDefault2dDevice _XServiceDefault2dDevice()
60 static Handle(WNT_GraphicDevice)& _XServiceImageDevice() {
61 static Handle(WNT_GraphicDevice) XServiceImageDevice;
62 return XServiceImageDevice;
64 #define XServiceImageDevice _XServiceImageDevice()
68 static Handle(Xw_GraphicDevice) XServiceDefault2dDevice;
69 static Handle(Xw_GraphicDevice) XServiceImageDevice;
71 static Handle(Xw_GraphicDevice)& _XServiceDefault2dDevice() {
72 static Handle(Xw_GraphicDevice) XServiceDefault2dDevice;
73 return XServiceDefault2dDevice;
75 #define XServiceDefault2dDevice _XServiceImageDevice()
77 static Handle(Xw_GraphicDevice)& _XServiceImageDevice() {
78 static Handle(Xw_GraphicDevice) XServiceImageDevice;
79 return XServiceImageDevice;
81 #define XServiceImageDevice _XServiceImageDevice()
86 Maps CasCade view to the window [ static ]
88 void OCCViewer_VService::SetWindow( const Handle(V3d_View)& view,
89 const Standard_Integer hiwin,
90 const Standard_Integer lowin,
91 const Xw_WindowQuality quality )
94 Handle(WNT_Window) w =
95 new WNT_Window( Handle(Graphic3d_WNTGraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin );
98 new Xw_Window( Handle(Graphic3d_GraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin, quality );
100 view->SetWindow( w );
104 Magnifies 'view' based on previous view [ static ]
106 void OCCViewer_VService::SetMagnify( const Handle(V3d_View)& view,
107 const Standard_Integer hiwin,
108 const Standard_Integer lowin,
109 const Handle(V3d_View)& prevView,
110 const Standard_Integer x1,
111 const Standard_Integer y1,
112 const Standard_Integer x2,
113 const Standard_Integer y2,
114 const Xw_WindowQuality aQuality )
117 Handle(WNT_Window) w =
118 new WNT_Window( Handle(Graphic3d_WNTGraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin );
120 Handle(Xw_Window) w =
121 new Xw_Window( Handle(Graphic3d_GraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin, aQuality );
123 view->SetMagnify( w, prevView, x1, y1, x2, y2 );
127 Creates viewer 3d [ static ]
129 Handle(V3d_Viewer) OCCViewer_VService::Viewer3d( const Standard_CString aDisplay,
130 const Standard_ExtString aName,
131 const Standard_CString aDomain,
132 const Standard_Real ViewSize ,
133 const V3d_TypeOfOrientation ViewProj,
134 const Standard_Boolean ComputedMode,
135 const Standard_Boolean aDefaultComputedMode )
138 static Handle(Graphic3d_GraphicDevice) defaultdevice;
139 if ( defaultdevice.IsNull() )
140 defaultdevice = new Graphic3d_GraphicDevice( aDisplay );
141 return new V3d_Viewer( defaultdevice, aName, aDomain, ViewSize, ViewProj,
142 Quantity_NOC_GRAY30, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
143 ComputedMode, aDefaultComputedMode, V3d_TEX_NONE );
145 static Handle(Graphic3d_WNTGraphicDevice) defaultdevice;
146 if ( defaultdevice.IsNull() )
147 defaultdevice = new Graphic3d_WNTGraphicDevice();
148 return new V3d_Viewer( defaultdevice, aName, aDomain, ViewSize, ViewProj,
149 Quantity_NOC_GRAY30, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
150 ComputedMode, aDefaultComputedMode, V3d_TEX_NONE);
155 Creates view 2D and maps it to the window [ static ]
157 /*Handle(V2d_View) OCCViewer_VService::View2d( const Handle(V2d_Viewer)& aViewer,
158 const Standard_Integer hiwin,
159 const Standard_Integer lowin,
160 const Xw_WindowQuality aQuality,
161 const Standard_Boolean Update,
162 const Quantity_NameOfColor BackColor )
165 Handle(WNT_GraphicDevice) GD = Handle(WNT_GraphicDevice)::DownCast(aViewer->Device());
166 Handle(WNT_Window) W = new WNT_Window( GD, hiwin, lowin, BackColor );
167 Handle(WNT_WDriver) D = new WNT_WDriver( W );
169 Handle(Xw_GraphicDevice) GD = Handle(Xw_GraphicDevice)::DownCast(aViewer->Device());
170 Handle(Xw_Window) W = new Xw_Window( GD, hiwin, lowin, aQuality, BackColor );
171 Handle(Xw_Driver) D = new Xw_Driver( W );
173 Handle(V2d_View) V = new V2d_View( D, aViewer );
180 Creates view 2D and maps it to the window [ static ]
182 /*Handle(V2d_View) OCCViewer_VService::dpsView2d( const Handle(V2d_Viewer)& aViewer,
183 const Standard_Integer hiwin,
184 const Standard_Integer lowin,
185 const Xw_WindowQuality aQuality,
186 const Standard_Boolean Update,
187 const Quantity_NameOfColor BackColor )
190 Handle(WNT_GraphicDevice) GD = Handle(WNT_GraphicDevice)::DownCast(aViewer->Device());
191 Handle(WNT_Window) W = new WNT_Window( GD, hiwin, lowin, BackColor );
192 W->SetBackground( BackColor );
193 Handle(WNT_WDriver) D = new WNT_WDriver( W );
195 Handle(Xw_GraphicDevice) GD = Handle(Xw_GraphicDevice)::DownCast(aViewer->Device());
196 Handle(Xw_Window) W = new Xw_Window( GD, hiwin, lowin, aQuality, BackColor );
197 Handle(Xdps_Driver) D = new Xdps_Driver( W );
199 Handle(V2d_View) V = new V2d_View( D, aViewer );
206 Creates viewer 2D [ static ]
208 /*Handle(V2d_Viewer) OCCViewer_VService::Viewer2d( const Standard_CString aDisplay,
209 const Standard_ExtString aName,
210 const Standard_CString aDomain )
213 if ( XServiceDefault2dDevice.IsNull() )
214 XServiceDefault2dDevice = new WNT_GraphicDevice();
216 if ( XServiceDefault2dDevice.IsNull() )
217 XServiceDefault2dDevice = new Xw_GraphicDevice( aDisplay, Xw_TOM_READONLY );
219 return new V2d_Viewer( XServiceDefault2dDevice, aName, aDomain );
223 Creates viewer 2D [ static ]
225 /*Handle(V2d_Viewer) OCCViewer_VService::Viewer2d( const Standard_CString aDisplay,
226 const Handle(Graphic2d_View)& aView,
227 const Standard_ExtString aName,
228 const Standard_CString aDomain )
231 if ( XServiceDefault2dDevice.IsNull() )
232 XServiceDefault2dDevice = new WNT_GraphicDevice();
234 if ( XServiceDefault2dDevice.IsNull() )
235 XServiceDefault2dDevice = new Xw_GraphicDevice( aDisplay, Xw_TOM_READONLY );
237 return new V2d_Viewer( XServiceDefault2dDevice, aView, aName, aDomain );
241 Creates window driver [ static ]
243 Handle(Aspect_WindowDriver) OCCViewer_VService::WindowDriver( const Standard_CString aDisplay,
244 const Standard_Integer ahiwin,
245 const Standard_Integer alowin,
246 const Quantity_NameOfColor aColor )
249 if ( XServiceDefault2dDevice.IsNull() )
250 XServiceDefault2dDevice = new WNT_GraphicDevice();
251 Handle(WNT_Window) W = new WNT_Window( XServiceDefault2dDevice, ahiwin, alowin, aColor );
252 return new WNT_WDriver( W );
254 if ( XServiceDefault2dDevice.IsNull() )
255 XServiceDefault2dDevice = new Xw_GraphicDevice( aDisplay, Xw_TOM_READONLY );
256 Handle(Xw_Window) W = new Xw_Window( XServiceDefault2dDevice, ahiwin, alowin, Xw_WQ_DRAWINGQUALITY , aColor );
257 return new Xw_Driver( W );
262 Creates Xdps window driver [ static ]
263 On Win32 the same as OCCViewer_VService::WindowDriver()
265 Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CString aDisplay,
266 const Standard_Integer ahiwin,
267 const Standard_Integer alowin,
268 const Quantity_NameOfColor aColor )
271 if ( XServiceDefault2dDevice.IsNull() )
272 XServiceDefault2dDevice = new WNT_GraphicDevice();
273 Handle(WNT_Window) W = new WNT_Window( XServiceDefault2dDevice, ahiwin, alowin, aColor );
274 return new WNT_WDriver( W );
276 if ( XServiceDefault2dDevice.IsNull() )
277 XServiceDefault2dDevice = new Xw_GraphicDevice( aDisplay, Xw_TOM_READONLY );
278 Handle(Xw_Window) W = new Xw_Window( XServiceDefault2dDevice, ahiwin, alowin,
279 Xw_WQ_DRAWINGQUALITY, aColor );
280 return new Xdps_Driver( W );
285 Creates Xw window driver [ static ]
286 On Win32 the same as OCCViewer_VService::WindowDriver()
288 Handle(Aspect_WindowDriver) OCCViewer_VService::ImageDriver( const Standard_CString aDisplay,
289 const Standard_Integer ahiwin,
290 const Standard_Integer alowin,
291 const Quantity_NameOfColor aColor )
294 if ( XServiceImageDevice.IsNull() )
295 XServiceImageDevice = new WNT_GraphicDevice();
296 Handle(WNT_Window) W = new WNT_Window( XServiceImageDevice, ahiwin, alowin, aColor );
297 return new WNT_WDriver( W );
299 if ( XServiceImageDevice.IsNull() )
300 XServiceImageDevice = new Xw_GraphicDevice( aDisplay, Xw_TOM_READONLY );
301 Handle(Xw_Window) W = new Xw_Window( XServiceImageDevice, ahiwin, alowin,
302 Xw_WQ_PICTUREQUALITY, aColor );
303 return new Xw_Driver( W );