Integration of OCCT 6.5.0 from SVN
[occt.git] / src / TopOpeBRepDS / TopOpeBRepDS.cxx
1 // File:        TopOpeBRepDS.cxx
2 // Created:     Fri Mar 18 18:20:30 1994
3 // Author:      Jean Yves LEBEY
4 //              <jyl@phobox>
5
6 #include <TopOpeBRepDS.ixx>
7 #include <TopOpeBRepDS_define.hxx>
8 #include <Standard_ProgramError.hxx>
9
10 //=======================================================================
11 //function : Print the name of a State
12 //=======================================================================
13 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_State S)
14 {
15   TCollection_AsciiString s;
16   switch (S) {
17   case TopAbs_IN      : s = s + "IN"; break;
18   case TopAbs_OUT     : s = s + "OU"; break;
19   case TopAbs_ON      : s = s + "ON"; break;
20   case TopAbs_UNKNOWN : s = s + "UN"; break;
21   }
22   return s;
23 }
24
25 Standard_OStream& TopOpeBRepDS::Print(const TopAbs_State S,Standard_OStream& OS)
26 { OS<<TopOpeBRepDS::SPrint(S); return OS; }
27
28 //=======================================================================
29 //purpose  : print the name of a Kind
30 //=======================================================================
31 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k)
32 {
33   TCollection_AsciiString s;
34   switch(k) {
35   case TopOpeBRepDS_POINT   : s = s + "PO"; break;
36   case TopOpeBRepDS_CURVE   : s = s + "CU"; break;
37   case TopOpeBRepDS_SURFACE : s = s + "SU"; break;
38   case TopOpeBRepDS_VERTEX  : s = s + "VE"; break;
39   case TopOpeBRepDS_EDGE    : s = s + "ED"; break;
40   case TopOpeBRepDS_WIRE    : s = s + "WI"; break;
41   case TopOpeBRepDS_FACE    : s = s + "FA"; break;
42   case TopOpeBRepDS_SHELL   : s = s + "SH"; break;
43   case TopOpeBRepDS_SOLID   : s = s + "SO"; break;
44   case TopOpeBRepDS_COMPSOLID : s = s + "CS"; break;
45   case TopOpeBRepDS_COMPOUND : s = s + "CO"; break;
46   default:
47     break ;
48   }
49   return s;
50 }
51 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k,const Standard_Integer i,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
52 {
53   TCollection_AsciiString si = ""; if (i >= 0 && i <= 9) si = " ";
54   TCollection_AsciiString s = S1 + "(" + TopOpeBRepDS::SPrint(k) + "," + si + TCollection_AsciiString(i) + ")" + S2;
55   return s;
56 }
57
58 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Kind k,Standard_OStream& OS)
59 { OS<<TopOpeBRepDS::SPrint(k); return OS; }
60 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Kind k,const Standard_Integer i,Standard_OStream& OS,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
61 { OS<<TopOpeBRepDS::SPrint(k,i,S1,S2); OS.flush();return OS; }
62
63 //=======================================================================
64 //purpose  : print the name of a ShapeEnum
65 //=======================================================================
66 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_ShapeEnum t)
67 { return TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t)); }
68 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_ShapeEnum t,const Standard_Integer i)
69 { return TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t),i); }
70
71 Standard_OStream& TopOpeBRepDS::Print(const TopAbs_ShapeEnum t,const Standard_Integer i,Standard_OStream& s)
72 { s<<TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t),i); return s; }
73
74 //=======================================================================
75 //purpose  : print the name of a Orientation
76 //=======================================================================
77 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_Orientation o) 
78 {
79   TCollection_AsciiString SS;
80   switch (o) {
81   case TopAbs_FORWARD  : SS = "FORWARD" ; break;
82   case TopAbs_REVERSED : SS = "REVERSED"; break;
83   case TopAbs_INTERNAL : SS = "INTERNAL"; break;
84   case TopAbs_EXTERNAL : SS = "EXTERNAL"; break;
85   }
86   return SS;
87 }
88
89 //=======================================================================
90 //purpose  : print the name of a Config
91 //=======================================================================
92 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Config C)
93 {
94   TCollection_AsciiString SS;
95   switch (C) {
96   case TopOpeBRepDS_UNSHGEOMETRY : SS = "UNSH"; break;
97   case TopOpeBRepDS_SAMEORIENTED : SS = "SAME"; break;
98   case TopOpeBRepDS_DIFFORIENTED : SS = "DIFF"; break;
99   }
100   return SS;
101 }
102
103 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Config C,Standard_OStream& OS)
104 { OS<<TopOpeBRepDS::SPrint(C); return OS; }
105
106 //=======================================================================
107 //function : IsTopology
108 //purpose  : 
109 //=======================================================================
110
111 Standard_Boolean TopOpeBRepDS::IsTopology(const TopOpeBRepDS_Kind k)
112 {
113   switch (k) {
114   case TopOpeBRepDS_COMPOUND : return Standard_True; break;
115   case TopOpeBRepDS_COMPSOLID : return Standard_True; break;
116   case TopOpeBRepDS_SOLID   : return Standard_True; break;
117   case TopOpeBRepDS_SHELL   : return Standard_True; break;
118   case TopOpeBRepDS_FACE    : return Standard_True; break;
119   case TopOpeBRepDS_WIRE    : return Standard_True; break;
120   case TopOpeBRepDS_EDGE    : return Standard_True; break;
121   case TopOpeBRepDS_VERTEX  : return Standard_True; break;
122   default : return Standard_False;
123   }
124   return Standard_False;
125 }
126
127 //=======================================================================
128 //function : IsGeometry
129 //purpose  : 
130 //=======================================================================
131
132 Standard_Boolean TopOpeBRepDS::IsGeometry(const TopOpeBRepDS_Kind k)
133 {
134   switch (k) {
135   case TopOpeBRepDS_SURFACE : return Standard_True; break;
136   case TopOpeBRepDS_CURVE   : return Standard_True; break;
137   case TopOpeBRepDS_POINT   : return Standard_True; break;
138   default:
139     break ;
140   }
141   return Standard_False;
142 }
143
144 //=======================================================================
145 //function : ShapeToKind
146 //purpose  : 
147 //=======================================================================
148
149 TopOpeBRepDS_Kind TopOpeBRepDS::ShapeToKind(const TopAbs_ShapeEnum S) 
150 {
151   TopOpeBRepDS_Kind res = TopOpeBRepDS_SOLID; // bidon
152   switch (S) {
153   case TopAbs_VERTEX : res = TopOpeBRepDS_VERTEX; break;
154   case TopAbs_EDGE   : res = TopOpeBRepDS_EDGE; break;
155   case TopAbs_WIRE   : res = TopOpeBRepDS_WIRE; break;
156   case TopAbs_FACE   : res = TopOpeBRepDS_FACE; break;
157   case TopAbs_SHELL  : res = TopOpeBRepDS_SHELL; break;
158   case TopAbs_SOLID  : res = TopOpeBRepDS_SOLID; break;
159   case TopAbs_COMPSOLID : res = TopOpeBRepDS_COMPSOLID; break;
160   case TopAbs_COMPOUND : res = TopOpeBRepDS_COMPOUND; break;
161   default : Standard_ProgramError::Raise("TopOpeBRepDS::ShapeToKind");
162   }
163   return res;
164 }
165
166 //=======================================================================
167 //function : KindToShape
168 //purpose  : 
169 //=======================================================================
170
171 TopAbs_ShapeEnum TopOpeBRepDS::KindToShape(const TopOpeBRepDS_Kind K)
172 {
173   TopAbs_ShapeEnum res = TopAbs_SHAPE; // bidon
174   if ( ! TopOpeBRepDS::IsTopology(K) ) return res;
175
176   switch (K) {
177   case TopOpeBRepDS_VERTEX : res = TopAbs_VERTEX; break;
178   case TopOpeBRepDS_EDGE   : res = TopAbs_EDGE; break;
179   case TopOpeBRepDS_WIRE   : res = TopAbs_WIRE; break;
180   case TopOpeBRepDS_FACE   : res = TopAbs_FACE; break;
181   case TopOpeBRepDS_SHELL  : res = TopAbs_SHELL; break;
182   case TopOpeBRepDS_SOLID  : res = TopAbs_SOLID; break;
183   case TopOpeBRepDS_COMPSOLID  : res = TopAbs_COMPSOLID; break;
184   case TopOpeBRepDS_COMPOUND : res = TopAbs_COMPOUND; break;
185   default : Standard_ProgramError::Raise("TopOpeBRepDS::KindToShape");
186   }
187   return res;
188 }