0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying...
[occt.git] / src / HLRBRep / HLRBRep_EdgeData.hxx
CommitLineData
42cf5bc1 1// Created on: 1997-04-17
2// Created by: Christophe MARION
3// Copyright (c) 1997-1999 Matra Datavision
4// Copyright (c) 1999-2014 OPEN CASCADE SAS
5//
6// This file is part of Open CASCADE Technology software library.
7//
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
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.
13//
14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
16
17#ifndef _HLRBRep_EdgeData_HeaderFile
18#define _HLRBRep_EdgeData_HeaderFile
19
681f3919 20#include <HLRAlgo_WiresBlock.hxx>
21
42cf5bc1 22#include <Standard.hxx>
23#include <Standard_DefineAlloc.hxx>
24#include <Standard_Handle.hxx>
25
26#include <Standard_Boolean.hxx>
27#include <Standard_Integer.hxx>
28#include <HLRAlgo_EdgeStatus.hxx>
29#include <HLRBRep_Curve.hxx>
30#include <Standard_ShortReal.hxx>
31#include <Standard_Real.hxx>
42cf5bc1 32class TopoDS_Edge;
42cf5bc1 33
9fd2d2c3 34// resolve name collisions with X11 headers
35#ifdef Status
36 #undef Status
37#endif
42cf5bc1 38
39class HLRBRep_EdgeData
40{
41public:
42
43 DEFINE_STANDARD_ALLOC
44
681f3919 45 HLRBRep_EdgeData() :
46 myFlags(0),
47 myHideCount(0)
48 {
49 Selected(Standard_True);
50 }
51
42cf5bc1 52 Standard_EXPORT void Set (const Standard_Boolean Reg1, const Standard_Boolean RegN, const TopoDS_Edge& EG, const Standard_Integer V1, const Standard_Integer V2, const Standard_Boolean Out1, const Standard_Boolean Out2, const Standard_Boolean Cut1, const Standard_Boolean Cut2, const Standard_Real Start, const Standard_ShortReal TolStart, const Standard_Real End, const Standard_ShortReal TolEnd);
53
54 Standard_Boolean Selected() const;
55
56 void Selected (const Standard_Boolean B);
57
58 Standard_Boolean Rg1Line() const;
59
60 void Rg1Line (const Standard_Boolean B);
61
62 Standard_Boolean RgNLine() const;
63
64 void RgNLine (const Standard_Boolean B);
65
66 Standard_Boolean Vertical() const;
67
68 void Vertical (const Standard_Boolean B);
69
70 Standard_Boolean Simple() const;
71
72 void Simple (const Standard_Boolean B);
73
74 Standard_Boolean OutLVSta() const;
75
76 void OutLVSta (const Standard_Boolean B);
77
78 Standard_Boolean OutLVEnd() const;
79
80 void OutLVEnd (const Standard_Boolean B);
81
82 Standard_Boolean CutAtSta() const;
83
84 void CutAtSta (const Standard_Boolean B);
85
86 Standard_Boolean CutAtEnd() const;
87
88 void CutAtEnd (const Standard_Boolean B);
89
90 Standard_Boolean VerAtSta() const;
91
92 void VerAtSta (const Standard_Boolean B);
93
94 Standard_Boolean VerAtEnd() const;
95
96 void VerAtEnd (const Standard_Boolean B);
97
98 Standard_Boolean AutoIntersectionDone() const;
99
100 void AutoIntersectionDone (const Standard_Boolean B);
101
102 Standard_Boolean Used() const;
103
104 void Used (const Standard_Boolean B);
105
106 Standard_Integer HideCount() const;
107
108 void HideCount (const Standard_Integer I);
109
110 Standard_Integer VSta() const;
111
112 void VSta (const Standard_Integer I);
113
114 Standard_Integer VEnd() const;
115
116 void VEnd (const Standard_Integer I);
117
681f3919 118 void UpdateMinMax (const HLRAlgo_EdgesBlock::MinMaxIndices& theTotMinMax)
119 {
120 myMinMax = theTotMinMax;
121 }
42cf5bc1 122
681f3919 123 HLRAlgo_EdgesBlock::MinMaxIndices& MinMax()
124 {
125 return myMinMax;
126 }
42cf5bc1 127
128 HLRAlgo_EdgeStatus& Status();
129
130 HLRBRep_Curve& ChangeGeometry();
131
132 const HLRBRep_Curve& Geometry() const;
133
681f3919 134 HLRBRep_Curve* Curve()
135 {
136 return &myGeometry;
137 }
138
42cf5bc1 139 Standard_ShortReal Tolerance() const;
140
42cf5bc1 141protected:
142
dde68833 143 enum EMaskFlags
144 {
145 EMaskSelected = 1,
146 EMaskUsed = 2,
147 EMaskRg1Line = 4,
148 EMaskVertical = 8,
149 EMaskSimple = 16,
150 EMaskOutLVSta = 32,
151 EMaskOutLVEnd = 64,
152 EMaskIntDone = 128,
153 EMaskCutAtSta = 256,
154 EMaskCutAtEnd = 512,
155 EMaskVerAtSta = 1024,
156 EMaskVerAtEnd = 2048,
157 EMaskRgNLine = 4096
158 };
42cf5bc1 159
160private:
161
dde68833 162 Standard_Integer myFlags;
42cf5bc1 163 Standard_Integer myHideCount;
164 Standard_Integer myVSta;
165 Standard_Integer myVEnd;
681f3919 166 HLRAlgo_EdgesBlock::MinMaxIndices myMinMax;
42cf5bc1 167 HLRAlgo_EdgeStatus myStatus;
168 HLRBRep_Curve myGeometry;
169 Standard_ShortReal myTolerance;
170
42cf5bc1 171};
172
42cf5bc1 173#include <HLRBRep_EdgeData.lxx>
174
42cf5bc1 175#endif // _HLRBRep_EdgeData_HeaderFile