//==================================================================
-// function: DrawCurve
+// function: drawCurve
// purpose:
//==================================================================
-static void DrawCurve (Adaptor3d_Curve& aCurve,
- const Handle(Graphic3d_Group) aGroup,
+static void drawCurve (Adaptor3d_Curve& aCurve,
+ const Handle(Graphic3d_Group)& aGroup,
const Quantity_Length TheDeflection,
const Standard_Real anAngle,
const Standard_Real U1,
const Standard_Real U2,
- TColgp_SequenceOfPnt& Points,
- const Standard_Boolean drawCurve)
+ TColgp_SequenceOfPnt& Points)
{
switch (aCurve.GetType())
{
gp_Pnt p2 = aCurve.Value(U2);
Points.Append(p1);
Points.Append(p2);
- if(drawCurve)
+ if (!aGroup.IsNull())
{
Handle(Graphic3d_ArrayOfSegments) aPrims = new Graphic3d_ArrayOfSegments(2);
aPrims->AddVertex(p1);
}
Handle(Graphic3d_ArrayOfPolylines) aPrims;
- if(drawCurve)
+ if (!aGroup.IsNull())
aPrims = new Graphic3d_ArrayOfPolylines(SeqP.Length());
for (i = 1; i <= SeqP.Length(); i++) {
const gp_Pnt& p = SeqP.Value(i);
Points.Append(p);
- if(drawCurve)
+ if (!aGroup.IsNull())
+ {
aPrims->AddVertex(p);
+ }
+ }
+ if (!aGroup.IsNull())
+ {
+ aGroup->AddPrimitiveArray (aPrims);
}
- if(drawCurve)
- aGroup->AddPrimitiveArray(aPrims);
}
}
}
void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentation,
Adaptor3d_Curve& aCurve,
const Handle (Prs3d_Drawer)& aDrawer,
- const Standard_Boolean drawCurve)
+ const Standard_Boolean theToDrawCurve)
{
Prs3d_Root::CurrentGroup(aPresentation)->SetPrimitivesAspect(aDrawer->LineAspect()->Aspect());
if (FindLimits(aCurve, aDrawer->MaximalParameterValue(), V1, V2))
{
TColgp_SequenceOfPnt Points;
- DrawCurve(aCurve,
- Prs3d_Root::CurrentGroup(aPresentation),
+ Handle(Graphic3d_Group) aGroup;
+ if (theToDrawCurve)
+ {
+ aGroup = Prs3d_Root::CurrentGroup (aPresentation);
+ }
+
+ drawCurve(aCurve,
+ aGroup,
GetDeflection(aCurve, V1, V2, aDrawer),
aDrawer->DeviationAngle(),
- V1, V2, Points, drawCurve);
+ V1, V2, Points);
if (aDrawer->LineArrowDraw()) {
gp_Pnt Location;
const Standard_Real U1,
const Standard_Real U2,
const Handle (Prs3d_Drawer)& aDrawer,
- const Standard_Boolean drawCurve)
+ const Standard_Boolean theToDrawCurve)
{
- Prs3d_Root::CurrentGroup(aPresentation)->SetPrimitivesAspect(aDrawer->LineAspect()->Aspect());
+ Handle(Graphic3d_Group) aGroup;
+ if (theToDrawCurve)
+ {
+ aGroup = Prs3d_Root::CurrentGroup (aPresentation);
+ aGroup->SetPrimitivesAspect(aDrawer->LineAspect()->Aspect());
+ }
Standard_Real V1 = U1;
Standard_Real V2 = U2;
if (Precision::IsPositiveInfinite(V2)) V2 = aDrawer->MaximalParameterValue();
TColgp_SequenceOfPnt Points;
- DrawCurve(aCurve,
- Prs3d_Root::CurrentGroup(aPresentation),
+ drawCurve(aCurve,
+ aGroup,
GetDeflection(aCurve, V1, V2, aDrawer),
aDrawer->DeviationAngle(),
- V1 , V2, Points, drawCurve);
+ V1 , V2, Points);
if (aDrawer->LineArrowDraw()) {
gp_Pnt Location;
const Standard_Real aDeflection,
TColgp_SequenceOfPnt& Points,
const Standard_Real anAngle,
- const Standard_Boolean drawCurve)
+ const Standard_Boolean theToDrawCurve)
{
- DrawCurve(aCurve, Prs3d_Root::CurrentGroup(aPresentation),
- aDeflection, anAngle, U1, U2, Points, drawCurve);
+ Handle(Graphic3d_Group) aGroup;
+ if (theToDrawCurve)
+ {
+ aGroup = Prs3d_Root::CurrentGroup (aPresentation);
+ }
+
+ drawCurve (aCurve, aGroup, aDeflection, anAngle, U1, U2, Points);
}
//==================================================================
const Standard_Real aDeflection,
const Standard_Real aLimit,
const Standard_Real anAngle,
- const Standard_Boolean drawCurve)
+ const Standard_Boolean theToDrawCurve)
{
Standard_Real V1, V2;
- if (FindLimits(aCurve, aLimit, V1, V2))
+ if (!FindLimits(aCurve, aLimit, V1, V2))
{
- TColgp_SequenceOfPnt Points;
- DrawCurve(aCurve, Prs3d_Root::CurrentGroup(aPresentation),
- aDeflection, anAngle, V1, V2, Points, drawCurve);
+ return;
}
+
+ Handle(Graphic3d_Group) aGroup;
+ if (theToDrawCurve)
+ {
+ aGroup = Prs3d_Root::CurrentGroup (aPresentation);
+ }
+
+ TColgp_SequenceOfPnt Points;
+ drawCurve (aCurve, aGroup, aDeflection, anAngle, V1, V2, Points);
}
const Standard_Real aDeflection,
const Handle(Prs3d_Drawer)& aDrawer,
TColgp_SequenceOfPnt& Points,
- const Standard_Boolean drawCurve)
+ const Standard_Boolean theToDrawCurve)
{
Standard_Real V1, V2;
- if (FindLimits(aCurve, aDrawer->MaximalParameterValue(), V1, V2))
- DrawCurve(aCurve, Prs3d_Root::CurrentGroup(aPresentation),
- aDeflection, aDrawer->DeviationAngle(), V1, V2, Points, drawCurve);
+ if (!FindLimits(aCurve, aDrawer->MaximalParameterValue(), V1, V2))
+ {
+ return;
+ }
+
+ Handle(Graphic3d_Group) aGroup;
+ if (theToDrawCurve)
+ {
+ aGroup = Prs3d_Root::CurrentGroup (aPresentation);
+ }
+ drawCurve (aCurve, aGroup, aDeflection, aDrawer->DeviationAngle(), V1, V2, Points);
}