1 // Created on: 1996-09-09
2 // Created by: Jean Yves LEBEY
3 // Copyright (c) 1996-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #include <TestTopOpeDraw_Displayer.hxx>
19 #include <TestTopOpeDraw_DrawableSHA.hxx>
20 #include <TestTopOpeDraw_DrawableP3D.hxx>
21 #include <TestTopOpeDraw_DrawableP2D.hxx>
22 #include <TestTopOpeDraw_DrawableC3D.hxx>
23 #include <TestTopOpeDraw_DrawableC2D.hxx>
24 #include <TestTopOpeDraw_DrawableSUR.hxx>
25 #include <TestTopOpeDraw_TTOT.hxx>
27 #include <Precision.hxx>
30 #include <Draw_Appli.hxx>
32 #include <DBRep_DrawableShape.hxx>
35 Standard_IMPORT Draw_Viewer dout;
38 //=======================================================================
39 //function : TestTopOpeDraw_Displayer
41 //=======================================================================
43 TestTopOpeDraw_Displayer::TestTopOpeDraw_Displayer()
48 //=======================================================================
49 //function : TestTopOpeDraw_Displayer
51 //=======================================================================
53 TestTopOpeDraw_Displayer::TestTopOpeDraw_Displayer(const TCollection_AsciiString& namedbrep,const TopoDS_Shape& S)
56 DisplayShape(namedbrep,S);
59 //=======================================================================
60 //function : TestTopOpeDraw_Displayer
62 //=======================================================================
64 TestTopOpeDraw_Displayer::TestTopOpeDraw_Displayer
65 (const TCollection_AsciiString& namedbrep,const TCollection_AsciiString& namedisp,const TopoDS_Shape& S)
68 DisplayShape(namedbrep,namedisp,S);
71 //=======================================================================
72 //function : DisplayShape
74 //=======================================================================
76 void TestTopOpeDraw_Displayer::DisplayShape(const TCollection_AsciiString& namedbrep, const TopoDS_Shape& S)
78 if (S.IsNull()) return;
79 SetShape(namedbrep,S);
80 DisplayShapePrivate();
83 //=======================================================================
84 //function : DisplayShape
86 //=======================================================================
88 void TestTopOpeDraw_Displayer::DisplayShape
89 (const TCollection_AsciiString& namedbrep,const TCollection_AsciiString& namedisp,const TopoDS_Shape& S)
91 if (S.IsNull()) return;
92 SetShape(namedbrep,S);
93 myNameDisplay = namedisp;
94 DisplayShapePrivate();
97 //=======================================================================
98 //function : DisplayShapePrivate
100 //=======================================================================
102 void TestTopOpeDraw_Displayer::DisplayShapePrivate()
104 if (myShape.IsNull()) return;
105 TopAbs_ShapeEnum t = myShape.ShapeType();
107 myNameDisplay.Prepend(" ");
108 if ( ! myNameColorIs ) myNameColor = TestTopOpeDraw_TTOT::ShapeColor(myShape);
110 if (myDisplayNameWithOrientation) TestTopOpeDraw_TTOT::CatOrientation(myShape,myNameDisplay);
111 if (myDisplayNameWithGeometry) TestTopOpeDraw_TTOT::CatGeometry(myShape,myNameDisplay);
112 Draw_Color ConnCol = Draw_jaune;
113 if (t == TopAbs_VERTEX) ConnCol = myNameColor;
114 Draw_Color EdgeCol = Draw_rouge;
116 ConnCol = EdgeCol = myCol;
118 Handle(TestTopOpeDraw_DrawableSHA) D;
119 Standard_Integer nbisos = mySnbisos;
120 Standard_Boolean nbisosdef = mySnbisosdef;
121 Standard_Integer discret = mySdiscret;
122 Standard_Boolean discretdef = mySdiscretdef;
123 Standard_CString csn = myNameDBRep.ToCString();
124 Handle(DBRep_DrawableShape) DBS = Handle(DBRep_DrawableShape)::DownCast(Draw::Get(csn));
125 if (!DBS.IsNull() && !nbisosdef) {
126 nbisos = DBS->NbIsos();
128 if (!DBS.IsNull() && !discretdef) {
129 discret = DBS->Discret();
131 D = new TestTopOpeDraw_DrawableSHA
133 Draw_vert,ConnCol,EdgeCol,Draw_bleu,//free,shared,other,isos
134 mySsize,nbisos,discret,
135 myNameDisplay.ToCString(),myNameColor,
138 if (myTol != 0.0 ) D->SetTol(myTol);
139 if (myPar != -1.0 ) D->SetPar(myPar);
141 char* pname = (char *)myNameDBRep.ToCString();
142 Draw::Set(pname,Handle(DBRep_DrawableShape)::DownCast(D));
145 //=======================================================================
146 //function : InitDisplayer
148 //=======================================================================
150 void TestTopOpeDraw_Displayer::InitDisplayer()
152 myDisplayGeometry = Standard_False;
153 myDisplayNameWithGeometry = Standard_False;
154 myDisplayNameWithOrientation = Standard_False;
157 NameDBRep().Copy("");
158 NameDisplay().Copy("");
161 mySnbisos = DBRep::NbIsos();
162 mySnbisosdef = Standard_False;
163 mySdiscret = DBRep::Discretisation();
164 mySdiscretdef = Standard_False;
166 myTolIs = Standard_False;
168 myParIs = Standard_False;
170 myColIs = Standard_False;
171 myNameColor = Draw_blanc;
172 myNameColorIs = Standard_False;
175 //=======================================================================
176 //function : SetShape
178 //=======================================================================
180 void TestTopOpeDraw_Displayer::SetShape(const TCollection_AsciiString& namedbrep,const TopoDS_Shape& S)
183 myNameDBRep = namedbrep;
184 myNameDisplay = namedbrep;
185 if (myDisplayNameWithOrientation) TestTopOpeDraw_TTOT::CatOrientation(myShape,myNameDisplay);
186 if (myDisplayNameWithGeometry) TestTopOpeDraw_TTOT::CatGeometry(myShape,myNameDisplay);
189 //=======================================================================
190 //function : TestTopOpeDraw_P3DDisplayer
192 //=======================================================================
194 TestTopOpeDraw_P3DDisplayer::TestTopOpeDraw_P3DDisplayer()
197 //=======================================================================
198 //function : TestTopOpeDraw_P3DDisplayer
200 //=======================================================================
202 TestTopOpeDraw_P3DDisplayer::TestTopOpeDraw_P3DDisplayer(const TCollection_AsciiString& namedbrep, const gp_Pnt& P)
204 DisplayP3D(namedbrep,P);
207 //=======================================================================
208 //function : TestTopOpeDraw_P3DDisplayer
210 //=======================================================================
212 TestTopOpeDraw_P3DDisplayer::TestTopOpeDraw_P3DDisplayer
213 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y, const Standard_Real z)
215 DisplayP3D(namedbrep,x,y,z);
218 //=======================================================================
219 //function : DisplayP3D
221 //=======================================================================
223 void TestTopOpeDraw_P3DDisplayer::DisplayP3D
224 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y, const Standard_Real z)
227 DisplayP3D(namedbrep,P);
230 //=======================================================================
231 //function : DisplayP3D
233 //=======================================================================
235 void TestTopOpeDraw_P3DDisplayer::DisplayP3D
236 (const TCollection_AsciiString& namedbrep,const gp_Pnt& P)
238 TCollection_AsciiString namedisp(" "); namedisp += namedbrep;
239 Handle(TestTopOpeDraw_DrawableP3D) D =
240 new TestTopOpeDraw_DrawableP3D(P,Draw_Square,
241 Draw_Color(Draw_rouge),
242 namedisp.ToCString(),
243 Draw_Color(Draw_cyan),1);
244 char* pname = (char *)namedbrep.ToCString();
249 //=======================================================================
250 //function : TestTopOpeDraw_P2DDisplayer
252 //=======================================================================
254 TestTopOpeDraw_P2DDisplayer::TestTopOpeDraw_P2DDisplayer()
256 SetColor(Draw_Color(Draw_rouge));
257 SetNameColor(Draw_Color(Draw_cyan));
260 //=======================================================================
261 //function : TestTopOpeDraw_P2DDisplayer
263 //=======================================================================
265 TestTopOpeDraw_P2DDisplayer::TestTopOpeDraw_P2DDisplayer
266 (const TCollection_AsciiString& namedbrep, const gp_Pnt2d& P)
268 DisplayP2D(namedbrep,P);
271 //=======================================================================
272 //function : TestTopOpeDraw_P2DDisplayer
274 //=======================================================================
276 TestTopOpeDraw_P2DDisplayer::TestTopOpeDraw_P2DDisplayer
277 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y)
279 DisplayP2D(namedbrep,x,y);
282 //=======================================================================
283 //function : DisplayP2D
285 //=======================================================================
287 void TestTopOpeDraw_P2DDisplayer::DisplayP2D
288 (const TCollection_AsciiString& namedbrep,const Standard_Real x, const Standard_Real y)
291 DisplayP2D(namedbrep,P);
294 //=======================================================================
295 //function : DisplayP2D
297 //=======================================================================
299 void TestTopOpeDraw_P2DDisplayer::DisplayP2D
300 (const TCollection_AsciiString& namedbrep,const gp_Pnt2d& P)
302 TCollection_AsciiString namedisp(" "); namedisp += namedbrep;
303 Handle(TestTopOpeDraw_DrawableP2D) D;
304 D = new TestTopOpeDraw_DrawableP2D(P,
306 namedisp.ToCString(),myNameColor,
308 char* pname = (char *)namedbrep.ToCString();
313 //=======================================================================
314 //function : TestTopOpeDraw_C3DDisplayer
316 //=======================================================================
318 TestTopOpeDraw_C3DDisplayer::TestTopOpeDraw_C3DDisplayer()
323 //=======================================================================
324 //function : TestTopOpeDraw_C3DDisplayer
326 //=======================================================================
328 TestTopOpeDraw_C3DDisplayer::TestTopOpeDraw_C3DDisplayer(const Handle(Geom_Curve& C))
334 //=======================================================================
335 //function : InitC3DDisplayer
337 //=======================================================================
339 void TestTopOpeDraw_C3DDisplayer::InitC3DDisplayer()
344 myCDdisplayorigin = Standard_True;
347 //=======================================================================
348 //function : DisplayC3D
350 //=======================================================================
352 void TestTopOpeDraw_C3DDisplayer::DisplayC3D(const Handle(Geom_Curve& C))
354 if (C.IsNull()) return;
355 Draw_ColorKind col = TestTopOpeDraw_TTOT::GeometryColor(TopOpeBRepDS_CURVE);
356 Handle(TestTopOpeDraw_DrawableC3D) D;
357 D = new TestTopOpeDraw_DrawableC3D
360 myCDdiscret,myCDdeflect,myCDdrawmod,myCDdisplayorigin);
364 //=======================================================================
365 //function : TestTopOpeDraw_C2DDisplayer
367 //=======================================================================
369 TestTopOpeDraw_C2DDisplayer::TestTopOpeDraw_C2DDisplayer()
374 //=======================================================================
375 //function : TestTopOpeDraw_C2DDisplayer
377 //=======================================================================
379 TestTopOpeDraw_C2DDisplayer::TestTopOpeDraw_C2DDisplayer
380 (const Handle(Geom2d_Curve& C))
386 //=======================================================================
387 //function : InitC2DDisplayer
389 //=======================================================================
391 void TestTopOpeDraw_C2DDisplayer::InitC2DDisplayer()
394 myC2Ddisplayorigin = Standard_True;
395 myC2Ddisplaycurvradius = Standard_False;
396 myC2Dradiusmax = 1.e3;
397 myC2Dradiusratio = 0.1;
398 Draw_ColorKind col = TestTopOpeDraw_TTOT::GeometryColor(TopOpeBRepDS_CURVE);
399 SetColor(Draw_Color(col));
400 SetNameColor(Draw_Color(col));
403 //=======================================================================
404 //function : DisplayC2D
406 //=======================================================================
408 void TestTopOpeDraw_C2DDisplayer::DisplayC2D(const Handle(Geom2d_Curve& C))
410 if (C.IsNull()) return;
411 Handle(TestTopOpeDraw_DrawableC2D) D = new TestTopOpeDraw_DrawableC2D
412 (C,myCol,"",myNameColor,
413 myC2Ddiscret,myC2Ddisplayorigin,
414 myC2Ddisplaycurvradius,myC2Dradiusmax,myC2Dradiusratio);
418 //=======================================================================
419 //function : DisplayC2D
421 //=======================================================================
423 void TestTopOpeDraw_C2DDisplayer::DisplayC2D
424 (const TCollection_AsciiString& namedbrep,const TCollection_AsciiString& namedisp,const Handle(Geom2d_Curve& C))
426 Handle(TestTopOpeDraw_DrawableC2D) D = new TestTopOpeDraw_DrawableC2D
427 (C,myCol,namedisp.ToCString(),myNameColor,
428 myC2Ddiscret,myC2Ddisplayorigin,
429 myC2Ddisplaycurvradius,myC2Dradiusmax,myC2Dradiusratio);
430 char* pname = (char *)namedbrep.ToCString();
434 //=======================================================================
435 //function : TestTopOpeDraw_SurfaceDisplayer
437 //=======================================================================
439 TestTopOpeDraw_SurfaceDisplayer::TestTopOpeDraw_SurfaceDisplayer()
441 InitSurfaceDisplayer();
444 //=======================================================================
445 //function : TestTopOpeDraw_SurfaceDisplayer
447 //=======================================================================
449 TestTopOpeDraw_SurfaceDisplayer::TestTopOpeDraw_SurfaceDisplayer
450 (const Handle(Geom_Surface& S))
452 InitSurfaceDisplayer();
456 //=======================================================================
457 //function : InitDisplayer
459 //=======================================================================
461 void TestTopOpeDraw_SurfaceDisplayer::InitSurfaceDisplayer()
463 mySDBoundColor = Draw_vert;
464 mySDIsoColor = Draw_bleu;
465 mySDNormalColor = Draw_blanc;
471 mySDdisplayorigin = Standard_True;
474 //=======================================================================
475 //function : DisplaySurface
477 //=======================================================================
479 void TestTopOpeDraw_SurfaceDisplayer::DisplaySurface(const Handle(Geom_Surface& S))
481 if (S.IsNull()) return;
482 Handle(TestTopOpeDraw_DrawableSUR) D;
483 D = new TestTopOpeDraw_DrawableSUR
484 (S,mySDIsoColor,mySDBoundColor,mySDNormalColor,
486 mySDnu,mySDnv,mySDdiscret,mySDdeflect,mySDdrawmod,mySDdisplayorigin);