51f2b307cf624d02ca797f28b698faa4b4ff2799
[occt.git] / src / TestTopOpeDraw / TestTopOpeDraw_Displayer.cxx
1 // File:        TestTopOpeDraw_Displayer.cxx
2 // Created:     Mon Sep  9 15:31:31 1996
3 // Author:      Jean Yves LEBEY
4 //              <jyl@bistrox.paris1.matra-dtv.fr>
5
6 #include <TestTopOpeDraw_Displayer.hxx>
7
8 #include <TestTopOpeDraw_DrawableSHA.hxx>
9 #include <TestTopOpeDraw_DrawableP3D.hxx>
10 #include <TestTopOpeDraw_DrawableP2D.hxx>
11 #include <TestTopOpeDraw_DrawableC3D.hxx>
12 #include <TestTopOpeDraw_DrawableC2D.hxx>
13 #include <TestTopOpeDraw_DrawableSUR.hxx>
14 #include <TestTopOpeDraw_TTOT.hxx>
15
16 #include <Precision.hxx>
17 #include <DBRep.hxx>
18 #include <Draw.hxx>
19 #include <Draw_Appli.hxx>
20 #include <DBRep.hxx>
21
22 #ifdef WNT
23 Standard_IMPORT Draw_Viewer dout;
24 #endif
25
26 //=======================================================================
27 //function : TestTopOpeDraw_Displayer
28 //purpose  : 
29 //=======================================================================
30
31 TestTopOpeDraw_Displayer::TestTopOpeDraw_Displayer()
32
33   InitDisplayer();
34 }
35
36 //=======================================================================
37 //function : TestTopOpeDraw_Displayer
38 //purpose  : 
39 //=======================================================================
40
41 TestTopOpeDraw_Displayer::TestTopOpeDraw_Displayer(const TCollection_AsciiString& namedbrep,const TopoDS_Shape& S)
42 {
43   InitDisplayer();
44   DisplayShape(namedbrep,S);
45 }
46
47 //=======================================================================
48 //function : TestTopOpeDraw_Displayer
49 //purpose  : 
50 //=======================================================================
51
52 TestTopOpeDraw_Displayer::TestTopOpeDraw_Displayer
53 (const TCollection_AsciiString& namedbrep,const TCollection_AsciiString& namedisp,const TopoDS_Shape& S)
54 {
55   InitDisplayer();
56   DisplayShape(namedbrep,namedisp,S);
57 }
58
59 //=======================================================================
60 //function : DisplayShape
61 //purpose  : 
62 //=======================================================================
63
64 void TestTopOpeDraw_Displayer::DisplayShape(const TCollection_AsciiString& namedbrep, const TopoDS_Shape& S)
65 {
66   if (S.IsNull()) return;
67   SetShape(namedbrep,S);
68   DisplayShapePrivate();
69 }
70
71 //=======================================================================
72 //function : DisplayShape
73 //purpose  : 
74 //=======================================================================
75
76 void TestTopOpeDraw_Displayer::DisplayShape
77 (const TCollection_AsciiString& namedbrep,const TCollection_AsciiString& namedisp,const TopoDS_Shape& S)
78 {
79   if (S.IsNull()) return;
80   SetShape(namedbrep,S);
81   myNameDisplay = namedisp;
82   DisplayShapePrivate();
83 }
84
85 //=======================================================================
86 //function : DisplayShapePrivate
87 //purpose  : 
88 //=======================================================================
89
90 void TestTopOpeDraw_Displayer::DisplayShapePrivate()
91 {
92   if (myShape.IsNull()) return; 
93   TopAbs_ShapeEnum t = myShape.ShapeType();
94
95   myNameDisplay.Prepend(" ");
96   if ( ! myNameColorIs ) myNameColor = TestTopOpeDraw_TTOT::ShapeColor(myShape);
97   
98   if (myDisplayNameWithOrientation) TestTopOpeDraw_TTOT::CatOrientation(myShape,myNameDisplay);
99   if (myDisplayNameWithGeometry) TestTopOpeDraw_TTOT::CatGeometry(myShape,myNameDisplay);
100   Draw_Color ConnCol = Draw_jaune;
101   if (t == TopAbs_VERTEX) ConnCol = myNameColor;
102   Draw_Color EdgeCol = Draw_rouge;
103   if (myColIs) {
104     ConnCol = EdgeCol = myCol;
105   }
106   Handle(TestTopOpeDraw_DrawableSHA) D;
107   Standard_Integer nbisos = mySnbisos;
108   Standard_Boolean nbisosdef = mySnbisosdef;
109   Standard_Integer discret = mySdiscret;
110   Standard_Boolean discretdef = mySdiscretdef;
111   Standard_CString csn = myNameDBRep.ToCString(); 
112   Handle(DBRep_DrawableShape) DBS = Handle(DBRep_DrawableShape)::DownCast(Draw::Get(csn));
113   if (!DBS.IsNull() && !nbisosdef) {
114     nbisos = DBS->NbIsos();
115   }
116   if (!DBS.IsNull() && !discretdef) {
117     discret = DBS->Discret();
118   }
119   D = new TestTopOpeDraw_DrawableSHA
120     (myShape,
121      Draw_vert,ConnCol,EdgeCol,Draw_bleu,//free,shared,other,isos
122      mySsize,nbisos,discret,
123      myNameDisplay.ToCString(),myNameColor,
124      myDisplayGeometry);
125   
126   if (myTol != 0.0 ) D->SetTol(myTol);
127   if (myPar != -1.0 ) D->SetPar(myPar);
128   
129   char* pname = (char *)myNameDBRep.ToCString();
130   Draw::Set(pname,Handle(DBRep_DrawableShape)::DownCast(D));
131 }
132
133 //=======================================================================
134 //function : InitDisplayer
135 //purpose  : 
136 //=======================================================================
137
138 void TestTopOpeDraw_Displayer::InitDisplayer()
139 {
140   myDisplayGeometry = Standard_False;
141   myDisplayNameWithGeometry = Standard_False;
142   myDisplayNameWithOrientation = Standard_False;
143
144   myShape.Nullify();
145   NameDBRep().Copy(""); 
146   NameDisplay().Copy("");
147
148   mySsize    = 100.;
149   mySnbisos  = DBRep::NbIsos();
150   mySnbisosdef = Standard_False;
151   mySdiscret = DBRep::Discretisation();
152   mySdiscretdef = Standard_False;
153   myTol = 0.0;
154   myTolIs = Standard_False;
155   myPar = -1.0;
156   myParIs = Standard_False;
157   myCol = Draw_blanc;
158   myColIs = Standard_False;
159   myNameColor = Draw_blanc;
160   myNameColorIs = Standard_False;
161 }
162
163 //=======================================================================
164 //function : SetShape
165 //purpose  : 
166 //=======================================================================
167
168 void TestTopOpeDraw_Displayer::SetShape(const TCollection_AsciiString& namedbrep,const TopoDS_Shape& S)
169 {
170   myShape = S;
171   myNameDBRep = namedbrep;
172   myNameDisplay = namedbrep;
173   if (myDisplayNameWithOrientation) TestTopOpeDraw_TTOT::CatOrientation(myShape,myNameDisplay);
174   if (myDisplayNameWithGeometry) TestTopOpeDraw_TTOT::CatGeometry(myShape,myNameDisplay);
175 }
176
177 //=======================================================================
178 //function : TestTopOpeDraw_P3DDisplayer
179 //purpose  : 
180 //=======================================================================
181
182 TestTopOpeDraw_P3DDisplayer::TestTopOpeDraw_P3DDisplayer()
183 {}
184
185 //=======================================================================
186 //function : TestTopOpeDraw_P3DDisplayer
187 //purpose  : 
188 //=======================================================================
189
190 TestTopOpeDraw_P3DDisplayer::TestTopOpeDraw_P3DDisplayer(const TCollection_AsciiString& namedbrep, const gp_Pnt& P)
191 {
192   DisplayP3D(namedbrep,P);
193 }
194
195 //=======================================================================
196 //function : TestTopOpeDraw_P3DDisplayer
197 //purpose  : 
198 //=======================================================================
199
200 TestTopOpeDraw_P3DDisplayer::TestTopOpeDraw_P3DDisplayer
201 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y, const Standard_Real z)
202 {
203   DisplayP3D(namedbrep,x,y,z);
204 }
205
206 //=======================================================================
207 //function : DisplayP3D
208 //purpose  : 
209 //=======================================================================
210
211 void TestTopOpeDraw_P3DDisplayer::DisplayP3D
212 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y, const Standard_Real z)
213 {
214   gp_Pnt P(x,y,z);
215   DisplayP3D(namedbrep,P);
216 }
217
218 //=======================================================================
219 //function : DisplayP3D
220 //purpose  : 
221 //=======================================================================
222
223 void TestTopOpeDraw_P3DDisplayer::DisplayP3D
224 (const TCollection_AsciiString& namedbrep,const gp_Pnt& P)
225 {
226   TCollection_AsciiString namedisp(" "); namedisp += namedbrep;
227   Handle(TestTopOpeDraw_DrawableP3D) D = 
228     new TestTopOpeDraw_DrawableP3D(P,Draw_Square,
229                                    Draw_Color(Draw_rouge),
230                                    namedisp.ToCString(),
231                                    Draw_Color(Draw_cyan),1);
232   char* pname = (char *)namedbrep.ToCString();
233   Draw::Set(pname,D);
234   dout<<D;
235 }
236
237 //=======================================================================
238 //function : TestTopOpeDraw_P2DDisplayer
239 //purpose  : 
240 //=======================================================================
241
242 TestTopOpeDraw_P2DDisplayer::TestTopOpeDraw_P2DDisplayer()
243 {
244   SetColor(Draw_Color(Draw_rouge));
245   SetNameColor(Draw_Color(Draw_cyan));
246 }
247
248 //=======================================================================
249 //function : TestTopOpeDraw_P2DDisplayer
250 //purpose  : 
251 //=======================================================================
252
253 TestTopOpeDraw_P2DDisplayer::TestTopOpeDraw_P2DDisplayer
254 (const TCollection_AsciiString& namedbrep, const gp_Pnt2d& P)
255 {
256   DisplayP2D(namedbrep,P);
257 }
258
259 //=======================================================================
260 //function : TestTopOpeDraw_P2DDisplayer
261 //purpose  : 
262 //=======================================================================
263
264 TestTopOpeDraw_P2DDisplayer::TestTopOpeDraw_P2DDisplayer
265 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y)
266 {
267   DisplayP2D(namedbrep,x,y);
268 }
269
270 //=======================================================================
271 //function : DisplayP2D
272 //purpose  : 
273 //=======================================================================
274
275 void TestTopOpeDraw_P2DDisplayer::DisplayP2D
276 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y)
277 {
278   gp_Pnt2d P(x,y);
279   DisplayP2D(namedbrep,P);
280 }
281
282 //=======================================================================
283 //function : DisplayP2D
284 //purpose  : 
285 //=======================================================================
286
287 void TestTopOpeDraw_P2DDisplayer::DisplayP2D
288 (const TCollection_AsciiString& namedbrep,const gp_Pnt2d& P)
289 {
290   TCollection_AsciiString namedisp(" "); namedisp += namedbrep;
291   Handle(TestTopOpeDraw_DrawableP2D) D;
292   D = new TestTopOpeDraw_DrawableP2D(P,
293                                      Draw_Square,myCol,
294                                      namedisp.ToCString(),myNameColor,
295                                      1);
296   char* pname = (char *)namedbrep.ToCString();
297   Draw::Set(pname,D);
298   dout<<D;
299 }
300
301 //=======================================================================
302 //function : TestTopOpeDraw_C3DDisplayer
303 //purpose  : 
304 //=======================================================================
305
306 TestTopOpeDraw_C3DDisplayer::TestTopOpeDraw_C3DDisplayer()
307 {
308   InitC3DDisplayer();
309 }
310
311 //=======================================================================
312 //function : TestTopOpeDraw_C3DDisplayer
313 //purpose  : 
314 //=======================================================================
315
316 TestTopOpeDraw_C3DDisplayer::TestTopOpeDraw_C3DDisplayer(const Handle(Geom_Curve& C))
317 {
318   InitC3DDisplayer();
319   DisplayC3D(C);
320 }
321
322 //=======================================================================
323 //function : InitC3DDisplayer
324 //purpose  : 
325 //=======================================================================
326
327 void TestTopOpeDraw_C3DDisplayer::InitC3DDisplayer()
328 {
329   myCDdiscret = 16;
330   myCDdeflect = 0.01;
331   myCDdrawmod = 1;
332   myCDdisplayorigin = Standard_True;
333 }
334
335 //=======================================================================
336 //function : DisplayC3D
337 //purpose  : 
338 //=======================================================================
339
340 void TestTopOpeDraw_C3DDisplayer::DisplayC3D(const Handle(Geom_Curve& C))
341 {
342   if (C.IsNull()) return;
343   Draw_ColorKind col = TestTopOpeDraw_TTOT::GeometryColor(TopOpeBRepDS_CURVE);
344   Handle(TestTopOpeDraw_DrawableC3D) D;
345   D = new TestTopOpeDraw_DrawableC3D
346     (C,col,
347      "",col,
348      myCDdiscret,myCDdeflect,myCDdrawmod,myCDdisplayorigin);
349   dout<<D;
350 }
351
352 //=======================================================================
353 //function : TestTopOpeDraw_C2DDisplayer
354 //purpose  : 
355 //=======================================================================
356
357 TestTopOpeDraw_C2DDisplayer::TestTopOpeDraw_C2DDisplayer()
358 {
359   InitC2DDisplayer();
360 }
361
362 //=======================================================================
363 //function : TestTopOpeDraw_C2DDisplayer
364 //purpose  : 
365 //=======================================================================
366
367 TestTopOpeDraw_C2DDisplayer::TestTopOpeDraw_C2DDisplayer
368 (const Handle(Geom2d_Curve& C))
369 {
370   InitC2DDisplayer();
371   DisplayC2D(C);
372 }
373
374 //=======================================================================
375 //function : InitC2DDisplayer
376 //purpose  : 
377 //=======================================================================
378
379 void TestTopOpeDraw_C2DDisplayer::InitC2DDisplayer()
380 {
381   myC2Ddiscret = 16;
382   myC2Ddisplayorigin = Standard_True;
383   myC2Ddisplaycurvradius = Standard_False;
384   myC2Dradiusmax = 1.e3;
385   myC2Dradiusratio = 0.1;
386   Draw_ColorKind col = TestTopOpeDraw_TTOT::GeometryColor(TopOpeBRepDS_CURVE);
387   SetColor(Draw_Color(col));
388   SetNameColor(Draw_Color(col));
389 }
390
391 //=======================================================================
392 //function : DisplayC2D
393 //purpose  : 
394 //=======================================================================
395
396 void TestTopOpeDraw_C2DDisplayer::DisplayC2D(const Handle(Geom2d_Curve& C))
397 {
398   if (C.IsNull()) return;
399   Handle(TestTopOpeDraw_DrawableC2D) D = new TestTopOpeDraw_DrawableC2D
400     (C,myCol,"",myNameColor,
401      myC2Ddiscret,myC2Ddisplayorigin,
402      myC2Ddisplaycurvradius,myC2Dradiusmax,myC2Dradiusratio);
403   dout<<D;
404 }
405
406 //=======================================================================
407 //function : DisplayC2D
408 //purpose  : 
409 //=======================================================================
410
411 void TestTopOpeDraw_C2DDisplayer::DisplayC2D
412 (const TCollection_AsciiString& namedbrep,const TCollection_AsciiString& namedisp,const Handle(Geom2d_Curve& C))
413 {
414   Handle(TestTopOpeDraw_DrawableC2D) D = new TestTopOpeDraw_DrawableC2D
415     (C,myCol,namedisp.ToCString(),myNameColor,
416      myC2Ddiscret,myC2Ddisplayorigin,
417      myC2Ddisplaycurvradius,myC2Dradiusmax,myC2Dradiusratio);
418   char* pname = (char *)namedbrep.ToCString();
419   Draw::Set(pname,D);
420 }
421
422 //=======================================================================
423 //function : TestTopOpeDraw_SurfaceDisplayer
424 //purpose  : 
425 //=======================================================================
426
427 TestTopOpeDraw_SurfaceDisplayer::TestTopOpeDraw_SurfaceDisplayer()
428 {
429   InitSurfaceDisplayer();
430 }
431
432 //=======================================================================
433 //function : TestTopOpeDraw_SurfaceDisplayer
434 //purpose  : 
435 //=======================================================================
436
437 TestTopOpeDraw_SurfaceDisplayer::TestTopOpeDraw_SurfaceDisplayer
438 (const Handle(Geom_Surface& S))
439 {
440   InitSurfaceDisplayer();
441   DisplaySurface(S);
442 }
443
444 //=======================================================================
445 //function : InitDisplayer
446 //purpose  : 
447 //=======================================================================
448
449 void TestTopOpeDraw_SurfaceDisplayer::InitSurfaceDisplayer()
450 {
451   mySDBoundColor = Draw_vert;
452   mySDIsoColor = Draw_bleu;
453   mySDNormalColor = Draw_blanc;
454   mySDnu = 0;
455   mySDnv = 0;
456   mySDdiscret = 16;
457   mySDdeflect = 0.01;
458   mySDdrawmod = 1;
459   mySDdisplayorigin = Standard_True;
460 }
461
462 //=======================================================================
463 //function : DisplaySurface
464 //purpose  : 
465 //=======================================================================
466
467 void TestTopOpeDraw_SurfaceDisplayer::DisplaySurface(const Handle(Geom_Surface& S))
468 {
469   if (S.IsNull()) return;
470 #ifdef DEB
471   Draw_ColorKind isocol =
472 #endif
473                           TestTopOpeDraw_TTOT::GeometryColor(TopOpeBRepDS_SURFACE);
474   Handle(TestTopOpeDraw_DrawableSUR) D;
475   D = new TestTopOpeDraw_DrawableSUR
476     (S,mySDIsoColor,mySDBoundColor,mySDNormalColor,
477      "",myNameColor,
478      mySDnu,mySDnv,mySDdiscret,mySDdeflect,mySDdrawmod,mySDdisplayorigin);
479   dout<<D;
480 }