0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying...
[occt.git] / src / Poly / Poly_PolygonOnTriangulation.cxx
CommitLineData
b311480e 1// Created on: 1996-02-20
2// Created by: Laurent PAINNOT
3// Copyright (c) 1996-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 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
973c2be1 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.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
42cf5bc1 17#include <Poly_PolygonOnTriangulation.hxx>
bc73b006 18#include <Standard_Dump.hxx>
7fd59977 19
25e59720 20IMPLEMENT_STANDARD_RTTIEXT(Poly_PolygonOnTriangulation,Standard_Transient)
92efcf78 21
6b467e52 22//=======================================================================
23//function : Poly_PolygonOnTriangulation
24//purpose :
25//=======================================================================
26Poly_PolygonOnTriangulation::Poly_PolygonOnTriangulation (const Standard_Integer theNbNodes,
27 const Standard_Boolean theHasParams)
28: myDeflection (0.0),
29 myNodes (1, theNbNodes)
30{
31 if (theHasParams)
32 {
33 myParameters = new TColStd_HArray1OfReal (1, theNbNodes);
34 }
35}
36
7fd59977 37//=======================================================================
38//function : Poly_PolygonOnTriangulation
39//purpose :
40//=======================================================================
7fd59977 41Poly_PolygonOnTriangulation::Poly_PolygonOnTriangulation
42(const TColStd_Array1OfInteger& Nodes) :
43 myDeflection(0.0),
44 myNodes(1, Nodes.Length())
45{
46 myNodes = Nodes;
47}
48
49//=======================================================================
50//function : Poly_PolygonOnTriangulation
51//purpose :
52//=======================================================================
53
54Poly_PolygonOnTriangulation::Poly_PolygonOnTriangulation
55 (const TColStd_Array1OfInteger& Nodes,
56 const TColStd_Array1OfReal& Parameters):
57 myDeflection(0.0),
58 myNodes(1, Nodes.Length())
59{
60 myNodes = Nodes;
61 myParameters = new TColStd_HArray1OfReal(1, Parameters.Length());
62 myParameters->ChangeArray1() = Parameters;
63}
64
8156dddd 65//=======================================================================
66//function : Copy
67//purpose :
68//=======================================================================
69
70Handle(Poly_PolygonOnTriangulation) Poly_PolygonOnTriangulation::Copy() const
71{
72 Handle(Poly_PolygonOnTriangulation) aCopy;
73 if (myParameters.IsNull())
74 aCopy = new Poly_PolygonOnTriangulation(myNodes);
75 else
76 aCopy = new Poly_PolygonOnTriangulation(myNodes, myParameters->Array1());
77 aCopy->Deflection(myDeflection);
78 return aCopy;
79}
80
7fd59977 81//=======================================================================
6b467e52 82//function : SetParameters
83//purpose :
7fd59977 84//=======================================================================
6b467e52 85void Poly_PolygonOnTriangulation::SetParameters (const Handle(TColStd_HArray1OfReal)& theParameters)
7fd59977 86{
6b467e52 87 if (!theParameters.IsNull()
88 && (theParameters->Lower() != myNodes.Lower()
89 || theParameters->Upper() != myNodes.Upper()))
90 {
91 throw Standard_OutOfRange ("Poly_PolygonOnTriangulation::SetParameters() - invalid array size");
92 }
93 myParameters = theParameters;
7fd59977 94}
bc73b006 95
96//=======================================================================
97//function : DumpJson
98//purpose :
99//=======================================================================
100void Poly_PolygonOnTriangulation::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
101{
102 OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
103
104 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDeflection)
105 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myNodes.Size())
106 if (!myParameters.IsNull())
107 OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myParameters->Size())
108}