0db67cfb8f3374a0642d651ca0d960f3bd896dfb
[occt.git] / src / StdPrs / StdPrs_WFShape.hxx
1 // Copyright (c) 2013-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #ifndef _StdPrs_WFShape_H__
15 #define _StdPrs_WFShape_H__
16
17 #include <Prs3d_Root.hxx>
18 #include <Prs3d_Drawer.hxx>
19 #include <Prs3d_Presentation.hxx>
20 #include <Prs3d_PointAspect.hxx>
21 #include <Prs3d_LineAspect.hxx>
22 #include <TColgp_SequenceOfPnt.hxx>
23 #include <TopoDS_Shape.hxx>
24 #include <TopTools_ListOfShape.hxx>
25
26 //! Tool for computing wireframe presentation of a TopoDS_Shape.
27 class StdPrs_WFShape : public Prs3d_Root
28 {
29 public:
30
31   //! Computes wireframe presentation of a shape.
32   //! @param thePresentation [in] the presentation.
33   //! @param theShape [in] the shape.
34   //! @param theDrawer [in] the draw settings.
35   Standard_EXPORT static void Add (const Handle (Prs3d_Presentation)& thePresentation,
36                                    const TopoDS_Shape&                theShape,
37                                    const Handle (Prs3d_Drawer)&       theDrawer);
38
39 private:
40
41   //! Compute edge presentations for a shape.
42   //! @param thePresentation [in] the presentation.
43   //! @param theEdges [in] the list of edges.
44   //! @param theAspect [in] the edge drawing aspect.
45   //! @param theDrawer [in] the drawer settings.
46   //! @param theShapeDeflection [in] the deflection for the wireframe shape.
47   static void addEdges (const Handle (Prs3d_Presentation)& thePresentation,
48                         const TopTools_ListOfShape&        theEdges,
49                         const Handle (Prs3d_LineAspect)&   theAspect,
50                         const Handle (Prs3d_Drawer)&       theDrawer,
51                         const Standard_Real                theShapeDeflection);
52
53   //! Compute free and boundary edges on a triangulation of a face.
54   //! @param thePresentation [in] the presentation.
55   //! @param theFaces [in] the list of triangulated faces.
56   //! @param theAspect [in] the edge drawing aspect.
57   //! @param theDrawer [in] the drawer settings.
58   static void addEdgesOnTriangulation (const Handle(Prs3d_Presentation)& thePresentation,
59                                        const TopTools_ListOfShape& theFaces,
60                                        const Handle (Prs3d_LineAspect)& theAspect);
61
62   //! Compute vertex presentation for a shape.
63   //! @param thePresentation [in] the presentation.
64   //! @param theVertices [in] the list of points.
65   //! @param theAspect [in] the point drawing aspect.
66   static void addVertices (const Handle (Prs3d_Presentation)& thePresentation,
67                            const TColgp_SequenceOfPnt&        theVertices,
68                            const Handle (Prs3d_PointAspect)&  theAspect);
69 };
70
71 #endif // _StdPrs_WFShape_H__