0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
[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 <Prs3d_NListOfSequenceOfPnt.hxx>
23 #include <TColgp_SequenceOfPnt.hxx>
24 #include <TopoDS_Shape.hxx>
25 #include <TopTools_ListOfShape.hxx>
26
27 //! Tool for computing wireframe presentation of a TopoDS_Shape.
28 class StdPrs_WFShape : public Prs3d_Root
29 {
30 public:
31
32   //! Computes wireframe presentation of a shape.
33   //! @param thePresentation [in] the presentation.
34   //! @param theShape [in] the shape.
35   //! @param theDrawer [in] the draw settings.
36   Standard_EXPORT static void Add (const Handle (Prs3d_Presentation)& thePresentation,
37                                    const TopoDS_Shape&                theShape,
38                                    const Handle (Prs3d_Drawer)&       theDrawer);
39
40 private:
41
42   //! Compute edge presentations for a shape.
43   //! @param theEdges [in] the list of edges.
44   //! @param theDrawer [in] the drawer settings.
45   //! @param theShapeDeflection [in] the deflection for the wireframe shape.
46   static void addEdges (const TopTools_ListOfShape& theEdges,
47                         const Handle(Prs3d_Drawer)& theDrawer,
48                         const Standard_Real         theShapeDeflection,
49                         Prs3d_NListOfSequenceOfPnt& thePolylines);
50
51   //! Compute free and boundary edges on a triangulation of a face.
52   //! @param thePresentation [in] the presentation.
53   //! @param theFaces [in] the list of triangulated faces.
54   //! @param theAspect [in] the edge drawing aspect.
55   //! @param theDrawer [in] the drawer settings.
56   static void addEdgesOnTriangulation (const Handle(Prs3d_Presentation)& thePresentation,
57                                        const TopTools_ListOfShape& theFaces,
58                                        const Handle (Prs3d_LineAspect)& theAspect);
59
60   //! Compute vertex presentation for a shape.
61   //! @param thePresentation [in] the presentation.
62   //! @param theVertices [in] the list of points.
63   //! @param theAspect [in] the point drawing aspect.
64   static void addVertices (const Handle (Prs3d_Presentation)& thePresentation,
65                            const TColgp_SequenceOfPnt&        theVertices,
66                            const Handle (Prs3d_PointAspect)&  theAspect);
67 };
68
69 #endif // _StdPrs_WFShape_H__