0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating...
[occt.git] / src / HLRBRep / HLRBRep_EdgeData.hxx
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
20 #include <HLRAlgo_WiresBlock.hxx>
21
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>
32 class TopoDS_Edge;
33
34 // resolve name collisions with X11 headers
35 #ifdef Status
36   #undef Status
37 #endif
38
39 class HLRBRep_EdgeData 
40 {
41 public:
42
43   DEFINE_STANDARD_ALLOC
44
45   HLRBRep_EdgeData() :
46     myFlags(0),
47     myHideCount(0)
48   {
49     Selected(Standard_True);
50   }
51
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   
118   void UpdateMinMax (const HLRAlgo_EdgesBlock::MinMaxIndices& theTotMinMax)
119   {
120     myMinMax = theTotMinMax;
121   }
122   
123   HLRAlgo_EdgesBlock::MinMaxIndices& MinMax()
124   {
125     return myMinMax;
126   }
127   
128     HLRAlgo_EdgeStatus& Status();
129   
130     HLRBRep_Curve& ChangeGeometry();
131   
132     const HLRBRep_Curve& Geometry() const;
133   
134     HLRBRep_Curve* Curve()
135     {
136       return &myGeometry;
137     }
138
139     Standard_ShortReal Tolerance() const;
140
141 protected:
142
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   };
159
160 private:
161
162   Standard_Integer myFlags;
163   Standard_Integer myHideCount;
164   Standard_Integer myVSta;
165   Standard_Integer myVEnd;
166   HLRAlgo_EdgesBlock::MinMaxIndices myMinMax;
167   HLRAlgo_EdgeStatus myStatus;
168   HLRBRep_Curve myGeometry;
169   Standard_ShortReal myTolerance;
170
171 };
172
173 #include <HLRBRep_EdgeData.lxx>
174
175 #endif // _HLRBRep_EdgeData_HeaderFile