0023634: Eliminate Polyline and Polygon usage in drawers
[occt.git] / src / Prs3d / Prs3d_HLRShape.gxx
CommitLineData
b311480e 1// Copyright (c) 1995-1999 Matra Datavision
2// Copyright (c) 1999-2012 OPEN CASCADE SAS
3//
4// The content of this file is subject to the Open CASCADE Technology Public
5// License Version 6.5 (the "License"). You may not use the content of this file
6// except in compliance with the License. Please obtain a copy of the License
7// at http://www.opencascade.org and read it completely before using this file.
8//
9// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11//
12// The Original Code and all software distributed under the License is
13// distributed on an "AS IS" basis, without warranty of any kind, and the
14// Initial Developer hereby disclaims all such warranties, including without
15// limitation, any warranties of merchantability, fitness for a particular
16// purpose or non-infringement. Please see the License for the specific terms
17// and conditions governing the rights and limitations under the License.
18
7fd59977 19#include <Graphic3d_Group.hxx>
20#include <Prs3d_LineAspect.hxx>
21#include <TColgp_SequenceOfPnt.hxx>
22
23//=======================================================================
24//function : Add
25//purpose :
26//=======================================================================
27
28void Prs3d_HLRShape::Add(const Handle (Prs3d_Presentation)& aPresentation,
29 const anyShape& aShape,
30 const Handle (Prs3d_Drawer)& aDrawer,
31 const Handle (Prs3d_Projector)& aProjector)
32{
33 HLRShapeTool Tool(aShape,aProjector->Projector());
34 Standard_Integer NbEdge = Tool.NbEdges();
35 Standard_Integer i;
36 Standard_Real U1,U2;
37 anyCurve TheCurve;
38 Standard_Real def = aDrawer->MaximalChordialDeviation();
39 Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(aPresentation);
40
41 aGroup->SetPrimitivesAspect(aDrawer->SeenLineAspect()->Aspect());
42
7fd59977 43 Standard_Real anAngle = aDrawer->DeviationAngle();
44 TColgp_SequenceOfPnt Points;
45 for (i=1;i<=NbEdge;i++){
46 for(Tool.InitVisible(i);Tool.MoreVisible();Tool.NextVisible()){
47 Tool.Visible(TheCurve,U1,U2);
48 CurvePresentation::Add(aPresentation,TheCurve,U1,U2,def, Points, anAngle);
49 }
50 }
7fd59977 51
b8ddfc2f 52 if(aDrawer->DrawHiddenLine())
53 {
7fd59977 54 aGroup->SetPrimitivesAspect(aDrawer->HiddenLineAspect()->Aspect());
55
7fd59977 56 for (i=1;i<=NbEdge;i++){
57 for(Tool.InitHidden(i);Tool.MoreHidden();Tool.NextHidden()){
58 Tool.Hidden(TheCurve,U1,U2);
59 CurvePresentation::Add(aPresentation,TheCurve,U1,U2,def, Points, anAngle);
60 }
61 }
7fd59977 62 }
63}
64