2 // File : OCCViewer_VService.cxx
3 // Created : Wed Mar 20 10:36:38 2002
4 // Author : GG, FMN, Nicolas REJNERI
7 // Copyright : Open CASCADE 2002
10 #include "OCCViewer_VService.h"
12 // Open CASCADE Includes
13 #include <V3d_Viewer.hxx>
14 #include <V3d_View.hxx>
15 #include <Viewer_Viewer.hxx>
17 #include <V2d_Viewer.hxx>
18 #include <V2d_View.hxx>
19 #include <Viewer_Viewer.hxx>
22 #include <WNT_Window.hxx>
23 #include <Graphic3d_WNTGraphicDevice.hxx>
24 #include <WNT_GraphicDevice.hxx>
25 #include <WNT_GraphicDevice.hxx>
26 #include <WNT_WDriver.hxx>
28 #include <Xw_Window.hxx>
29 #include <Graphic3d_GraphicDevice.hxx>
30 #include <Xw_Driver.hxx>
31 #include <Xdps_Driver.hxx>
32 #include <Xw_TypeOfMapping.hxx>
39 static Handle(WNT_GraphicDevice) XServiceDefault2dDevice;
40 static Handle(WNT_GraphicDevice) XServiceImageDevice;
42 static Handle(WNT_GraphicDevice)& _XServiceDefault2dDevice() {
43 static Handle(WNT_GraphicDevice) XServiceDefault2dDevice;
44 return XServiceDefault2dDevice;
46 #define XServiceDefault2dDevice _XServiceDefault2dDevice()
48 static Handle(WNT_GraphicDevice)& _XServiceImageDevice() {
49 static Handle(WNT_GraphicDevice) XServiceImageDevice;
50 return XServiceImageDevice;
52 #define XServiceImageDevice _XServiceImageDevice()
56 static Handle(Xw_GraphicDevice) XServiceDefault2dDevice;
57 static Handle(Xw_GraphicDevice) XServiceImageDevice;
59 static Handle(Xw_GraphicDevice)& _XServiceDefault2dDevice() {
60 static Handle(Xw_GraphicDevice) XServiceDefault2dDevice;
61 return XServiceDefault2dDevice;
63 #define XServiceDefault2dDevice _XServiceImageDevice()
65 static Handle(Xw_GraphicDevice)& _XServiceImageDevice() {
66 static Handle(Xw_GraphicDevice) XServiceImageDevice;
67 return XServiceImageDevice;
69 #define XServiceImageDevice _XServiceImageDevice()
74 // ==================================== 3D ================================================================
75 /*----------------------------------------------------------------------*/
77 void OCCViewer_VService::SetWindow (const Handle(V3d_View)& aView,
78 const Standard_Integer hiwin,
79 const Standard_Integer lowin,
80 const Xw_WindowQuality aQuality)
83 Handle(WNT_Window) w = new WNT_Window(Handle(Graphic3d_WNTGraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin);
85 Handle(Xw_Window) w = new Xw_Window(Handle(Graphic3d_GraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin,aQuality);
88 // aView->SetShadingModel(V3d_GOURAUD);
91 /*----------------------------------------------------------------------*/
93 void OCCViewer_VService::SetMagnify (const Handle(V3d_View)& aView,
94 const Standard_Integer hiwin,
95 const Standard_Integer lowin,
96 const Handle(V3d_View)& aPreviousView,
97 const Standard_Integer x1,
98 const Standard_Integer y1,
99 const Standard_Integer x2,
100 const Standard_Integer y2,
101 const Xw_WindowQuality aQuality)
104 Handle(WNT_Window) w = new WNT_Window(Handle(Graphic3d_WNTGraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin);
106 Handle(Xw_Window) w = new Xw_Window(Handle(Graphic3d_GraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin,aQuality);
109 aView->SetMagnify(w,aPreviousView,x1,y1,x2,y2);
110 // aView->SetShadingModel(V3d_GOURAUD);
111 // aView->SetSurfaceDetail(V3d_TEX_NONE);
112 // aView->SetVisualization(V3d_WIREFRAME);
113 // aView->SetVisualization(V3d_ZBUFFER);
115 /*----------------------------------------------------------------------*/
117 Handle(V3d_Viewer) OCCViewer_VService::Viewer( const Standard_CString aDisplay,
118 const Standard_ExtString aName,
119 const Standard_CString aDomain,
120 const Standard_Real ViewSize,
121 const V3d_TypeOfOrientation ViewProj,
122 const Standard_Boolean ComputedMode,
123 const Standard_Boolean aDefaultComputedMode )
126 static Handle(Graphic3d_GraphicDevice) defaultdevice;
128 if(defaultdevice.IsNull()) defaultdevice = new Graphic3d_GraphicDevice(aDisplay);
129 return new V3d_Viewer(defaultdevice,aName,aDomain,ViewSize,ViewProj,
130 Quantity_NOC_GRAY30,V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT,
131 ComputedMode,aDefaultComputedMode,V3d_TEX_NONE);
133 static Handle(Graphic3d_WNTGraphicDevice) defaultdevice;
135 if(defaultdevice.IsNull()) defaultdevice = new Graphic3d_WNTGraphicDevice();
136 return new V3d_Viewer(defaultdevice,aName,aDomain,ViewSize,ViewProj,
137 Quantity_NOC_GRAY30,V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT,
138 ComputedMode,aDefaultComputedMode,V3d_TEX_NONE);
142 /*----------------------------------------------------------------------*/
143 // ==================================== 2D ================================================================
144 Handle(V2d_View) OCCViewer_VService::XView( const Handle(V2d_Viewer)& aViewer,
145 const Standard_Integer hiwin,
146 const Standard_Integer lowin,
147 const Xw_WindowQuality aQuality,
148 const Standard_Boolean Update,
149 const Quantity_NameOfColor BackColor)
152 Handle(WNT_GraphicDevice) GD = Handle(WNT_GraphicDevice)::DownCast(aViewer->Device());
153 Handle(WNT_Window) W = new WNT_Window(GD,hiwin,lowin,BackColor);
154 Handle(WNT_WDriver) D = new WNT_WDriver(W);
156 Handle(Xw_GraphicDevice) GD = Handle(Xw_GraphicDevice)::DownCast(aViewer->Device());
157 Handle(Xw_Window) W = new Xw_Window(GD,hiwin,lowin,aQuality,BackColor);
158 Handle(Xw_Driver) D = new Xw_Driver(W);
161 Handle(V2d_View) V = new V2d_View(D,aViewer);
162 if(Update) V->Update();
166 Handle(V2d_View) OCCViewer_VService::XdpsView( const Handle(V2d_Viewer)& aViewer,
167 const Standard_Integer hiwin,
168 const Standard_Integer lowin,
169 const Xw_WindowQuality aQuality,
170 const Standard_Boolean Update,
171 const Quantity_NameOfColor BackColor)
174 Handle(WNT_GraphicDevice) GD = Handle(WNT_GraphicDevice)::DownCast(aViewer->Device());
175 Handle(WNT_Window) W = new WNT_Window(GD,hiwin,lowin,BackColor);
177 W->SetBackground(BackColor);
179 Handle(WNT_WDriver) D = new WNT_WDriver(W);
181 Handle(Xw_GraphicDevice) GD = Handle(Xw_GraphicDevice)::DownCast(aViewer->Device());
182 Handle(Xw_Window) W = new Xw_Window(GD,hiwin,lowin,aQuality,BackColor);
183 Handle(Xdps_Driver) D = new Xdps_Driver(W);
185 Handle(V2d_View) V = new V2d_View(D,aViewer);
186 if(Update) V->Update();
190 Handle(V2d_Viewer) OCCViewer_VService::Viewer( const Standard_CString aDisplay,
191 const Standard_ExtString aName,
192 const Standard_CString aDomain)
195 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice();
197 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY);
199 return new V2d_Viewer(XServiceDefault2dDevice,aName,aDomain);
202 Handle(V2d_Viewer) OCCViewer_VService::Viewer( const Standard_CString aDisplay,
203 const Handle(Graphic2d_View)& aView,
204 const Standard_ExtString aName,
205 const Standard_CString aDomain)
208 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice();
210 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY);
212 return new V2d_Viewer(XServiceDefault2dDevice,aView,aName,aDomain);
215 Handle(Aspect_WindowDriver) OCCViewer_VService::WindowDriver( const Standard_CString aDisplay,
216 const Standard_Integer ahiwin,
217 const Standard_Integer alowin,
218 const Quantity_NameOfColor aColor)
221 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice();
222 Handle(WNT_Window) W = new WNT_Window(XServiceDefault2dDevice,ahiwin,alowin,aColor);
223 return new WNT_WDriver(W);
225 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY);
226 Handle(Xw_Window) W = new Xw_Window(XServiceDefault2dDevice,ahiwin,alowin,Xw_WQ_DRAWINGQUALITY,aColor);
227 return new Xw_Driver(W);
231 Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CString aDisplay,
232 const Standard_Integer ahiwin,
233 const Standard_Integer alowin,
234 const Quantity_NameOfColor aColor)
237 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice();
238 Handle(WNT_Window) W = new WNT_Window(XServiceDefault2dDevice,ahiwin,alowin,aColor);
239 return new WNT_WDriver(W);
241 if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY);
242 Handle(Xw_Window) W = new Xw_Window(XServiceDefault2dDevice,ahiwin,alowin,Xw_WQ_DRAWINGQUALITY,aColor);
243 return new Xdps_Driver(W);
247 Handle(Aspect_WindowDriver) OCCViewer_VService::ImageDriver( const Standard_CString aDisplay,
248 const Standard_Integer ahiwin,
249 const Standard_Integer alowin,
250 const Quantity_NameOfColor aColor)
253 if(XServiceImageDevice.IsNull()) XServiceImageDevice = new WNT_GraphicDevice();
254 Handle(WNT_Window) W = new WNT_Window(XServiceImageDevice,ahiwin,alowin,aColor);
255 return new WNT_WDriver(W);
257 if(XServiceImageDevice.IsNull()) XServiceImageDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY);
258 Handle(Xw_Window) W = new Xw_Window(XServiceImageDevice,ahiwin,alowin,Xw_WQ_PICTUREQUALITY,aColor);
259 return new Xw_Driver(W);