42007880ce8b15d1f51cfd46dce4477ca1f51891
[occt.git] / src / ViewerTest / ViewerTest_Tool.cxx
1 // File:        ViewerTest_Tool.cxx
2 // Created:     Thu Oct 15 10:24:56 1998
3 // Author:      Denis PASCAL
4 //              <dp@dingox.paris1.matra-dtv.fr>
5
6 #ifdef WNT
7 #include <windows.h>
8 #endif
9
10 #include <ViewerTest_Tool.ixx>
11
12 #include <V3d_View.hxx>
13 #include <AIS_InteractiveContext.hxx>
14 #include <ViewerTest.hxx>
15 #include <string.h>
16 #include <Draw_Interpretor.hxx>
17 #include <Draw.hxx>
18 #include <Draw_Appli.hxx>
19 #include <DBRep.hxx>
20 #include <Graphic3d_GraphicDevice.hxx>
21 #include <Xw_GraphicDevice.hxx>
22 #include <Xw_WindowQuality.hxx>
23 #include <Xw_Window.hxx>
24 #include <Graphic3d_GraphicDevice.hxx>
25 #include <Xw_GraphicDevice.hxx>
26 #include <Xw_WindowQuality.hxx>
27 #include <Xw_Window.hxx>
28 #include <TCollection_AsciiString.hxx>
29 #include <V3d_Viewer.hxx>
30 #include <V3d_View.hxx>
31 #include <V3d.hxx>
32 #include <AIS_DisplayMode.hxx>
33 #include <TColStd_MapOfInteger.hxx>
34 #include <AIS_MapOfInteractive.hxx>
35 #include <ViewerTest_DoubleMapOfInteractiveAndName.hxx>
36 #include <ViewerTest_DoubleMapIteratorOfDoubleMapOfInteractiveAndName.hxx>
37 #include <ViewerTest_EventManager.hxx>
38 #include <Draw_Window.hxx>
39 #include <AIS_ListIteratorOfListOfInteractive.hxx>
40 #include <AIS_ListOfInteractive.hxx>
41 #include <Aspect_Window.hxx>
42
43
44 #ifndef WNT
45 #include <X11/Xlib.h>
46 #include <X11/Xutil.h>
47 #else
48 #include <WNT_WClass.hxx>
49 #include <WNT_Window.hxx>
50 #include <Graphic3d_WNTGraphicDevice.hxx>
51 #endif
52
53
54
55
56
57 //==============================================================================
58 //  GLOBAL VARIABLES
59 //==============================================================================
60 #define ZCLIPWIDTH 1.
61
62 #ifdef WNT
63
64 static Handle(Graphic3d_WNTGraphicDevice) GetDevice() { 
65   static Handle(Graphic3d_WNTGraphicDevice) myDevice;
66   static int first = 1;
67   if ( first ) myDevice = new Graphic3d_WNTGraphicDevice();
68   first = 0;
69   return myDevice;
70 }
71
72 #else
73
74 static Handle(Graphic3d_GraphicDevice)& GetDevice() {
75   static Handle(Graphic3d_GraphicDevice) myDevice;
76   static int first = 1;
77   if ( first ) myDevice = new Graphic3d_GraphicDevice (getenv("DISPLAY"),Xw_TOM_READONLY);
78   first = 0;
79   return myDevice;
80 }
81
82 //static Display *display;
83
84 #endif
85
86
87 //=======================================================================
88 //function : MakeViewer
89 //purpose  : 
90 //=======================================================================
91
92 Handle(V3d_Viewer)  ViewerTest_Tool::MakeViewer (const Standard_CString title)
93 {
94
95   Handle(Aspect_Window) window;
96
97 #ifdef WNT
98
99   window = new WNT_Window (GetDevice(), 
100                            title, 
101                            Handle(WNT_WClass)::DownCast (ViewerTest::WClass()), 
102                            WS_OVERLAPPEDWINDOW,
103                            0.,0.,0.25,0.25,
104                            Quantity_NOC_BLACK);
105   window->Map();
106
107 #else 
108   window = new Xw_Window(GetDevice(), 
109                          title,
110                          0.,0.60,0.40,0.40,
111                          Xw_WQ_3DQUALITY,
112                          Quantity_NOC_BLACK);
113 #endif
114
115   // Viewer
116
117   Handle(Aspect_GraphicDevice) theDevice = GetDevice();
118   TCollection_ExtendedString NameOfWindow("Visu3D");
119   Handle(V3d_Viewer) a3DViewer = new V3d_Viewer(theDevice,NameOfWindow.ToExtString());
120
121
122   a3DViewer->SetDefaultBackgroundColor(Quantity_NOC_BLACK);  
123   a3DViewer->SetDefaultLights();
124   a3DViewer->SetLightOn();  
125   
126   // View 
127   Handle (V3d_View) V = a3DViewer->CreateView();
128   V->SetDegenerateModeOn();
129   V->SetWindow(window);
130   V->SetZClippingDepth(0.5);
131   V->SetZClippingWidth(ZCLIPWIDTH/2.);
132
133   return a3DViewer;
134 }
135
136 //=======================================================================
137 //function : MakeContext
138 //purpose  : 
139 //=======================================================================
140
141 Handle(AIS_InteractiveContext)  ViewerTest_Tool::MakeContext (const Standard_CString title)
142 {
143   return new AIS_InteractiveContext (MakeViewer(title));
144 }
145
146
147
148 //=======================================================================
149 //function : InitViewerTest
150 //purpose  : 
151 //=======================================================================
152
153 // ********* next method is defined in ViewerTest_ViewerCommands.hxx ****
154 extern void ViewerTest_InitViewerTest (const Handle(AIS_InteractiveContext)&);
155 // **********************************************************************
156
157 void  ViewerTest_Tool::InitViewerTest (const Handle(AIS_InteractiveContext)& context)
158 {  
159   ViewerTest_InitViewerTest (context);
160
161