1 // Created on: 1994-03-18
2 // Created by: Jean Yves LEBEY
3 // Copyright (c) 1994-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
18 #include <Standard_ProgramError.hxx>
19 #include <TCollection_AsciiString.hxx>
20 #include <TopOpeBRepDS.hxx>
21 #include <TopOpeBRepDS_define.hxx>
23 //=======================================================================
24 //function : Print the name of a State
25 //=======================================================================
26 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_State S)
28 TCollection_AsciiString s;
30 case TopAbs_IN : s = s + "IN"; break;
31 case TopAbs_OUT : s = s + "OU"; break;
32 case TopAbs_ON : s = s + "ON"; break;
33 case TopAbs_UNKNOWN : s = s + "UN"; break;
38 Standard_OStream& TopOpeBRepDS::Print(const TopAbs_State S,Standard_OStream& OS)
39 { OS<<TopOpeBRepDS::SPrint(S); return OS; }
41 //=======================================================================
42 //purpose : print the name of a Kind
43 //=======================================================================
44 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k)
46 TCollection_AsciiString s;
48 case TopOpeBRepDS_POINT : s = s + "PO"; break;
49 case TopOpeBRepDS_CURVE : s = s + "CU"; break;
50 case TopOpeBRepDS_SURFACE : s = s + "SU"; break;
51 case TopOpeBRepDS_VERTEX : s = s + "VE"; break;
52 case TopOpeBRepDS_EDGE : s = s + "ED"; break;
53 case TopOpeBRepDS_WIRE : s = s + "WI"; break;
54 case TopOpeBRepDS_FACE : s = s + "FA"; break;
55 case TopOpeBRepDS_SHELL : s = s + "SH"; break;
56 case TopOpeBRepDS_SOLID : s = s + "SO"; break;
57 case TopOpeBRepDS_COMPSOLID : s = s + "CS"; break;
58 case TopOpeBRepDS_COMPOUND : s = s + "CO"; break;
64 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k,const Standard_Integer i,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
66 TCollection_AsciiString si = ""; if (i >= 0 && i <= 9) si = " ";
67 TCollection_AsciiString s = S1 + "(" + TopOpeBRepDS::SPrint(k) + "," + si + TCollection_AsciiString(i) + ")" + S2;
71 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Kind k,Standard_OStream& OS)
72 { OS<<TopOpeBRepDS::SPrint(k); return OS; }
73 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Kind k,const Standard_Integer i,Standard_OStream& OS,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
74 { OS<<TopOpeBRepDS::SPrint(k,i,S1,S2); OS.flush();return OS; }
76 //=======================================================================
77 //purpose : print the name of a ShapeEnum
78 //=======================================================================
79 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_ShapeEnum t)
80 { return TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t)); }
81 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_ShapeEnum t,const Standard_Integer i)
82 { return TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t),i); }
84 Standard_OStream& TopOpeBRepDS::Print(const TopAbs_ShapeEnum t,const Standard_Integer i,Standard_OStream& s)
85 { s<<TopOpeBRepDS::SPrint(TopOpeBRepDS::ShapeToKind(t),i); return s; }
87 //=======================================================================
88 //purpose : print the name of a Orientation
89 //=======================================================================
90 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_Orientation o)
92 return TopAbs::ShapeOrientationToString (o);
95 //=======================================================================
96 //purpose : print the name of a Config
97 //=======================================================================
98 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Config C)
100 TCollection_AsciiString SS;
102 case TopOpeBRepDS_UNSHGEOMETRY : SS = "UNSH"; break;
103 case TopOpeBRepDS_SAMEORIENTED : SS = "SAME"; break;
104 case TopOpeBRepDS_DIFFORIENTED : SS = "DIFF"; break;
109 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Config C,Standard_OStream& OS)
110 { OS<<TopOpeBRepDS::SPrint(C); return OS; }
112 //=======================================================================
113 //function : IsTopology
115 //=======================================================================
117 Standard_Boolean TopOpeBRepDS::IsTopology(const TopOpeBRepDS_Kind k)
120 case TopOpeBRepDS_COMPOUND : return Standard_True; break;
121 case TopOpeBRepDS_COMPSOLID : return Standard_True; break;
122 case TopOpeBRepDS_SOLID : return Standard_True; break;
123 case TopOpeBRepDS_SHELL : return Standard_True; break;
124 case TopOpeBRepDS_FACE : return Standard_True; break;
125 case TopOpeBRepDS_WIRE : return Standard_True; break;
126 case TopOpeBRepDS_EDGE : return Standard_True; break;
127 case TopOpeBRepDS_VERTEX : return Standard_True; break;
128 default : return Standard_False;
132 //=======================================================================
133 //function : IsGeometry
135 //=======================================================================
137 Standard_Boolean TopOpeBRepDS::IsGeometry(const TopOpeBRepDS_Kind k)
140 case TopOpeBRepDS_SURFACE : return Standard_True; break;
141 case TopOpeBRepDS_CURVE : return Standard_True; break;
142 case TopOpeBRepDS_POINT : return Standard_True; break;
146 return Standard_False;
149 //=======================================================================
150 //function : ShapeToKind
152 //=======================================================================
154 TopOpeBRepDS_Kind TopOpeBRepDS::ShapeToKind(const TopAbs_ShapeEnum S)
156 TopOpeBRepDS_Kind res = TopOpeBRepDS_SOLID; // bidon
158 case TopAbs_VERTEX : res = TopOpeBRepDS_VERTEX; break;
159 case TopAbs_EDGE : res = TopOpeBRepDS_EDGE; break;
160 case TopAbs_WIRE : res = TopOpeBRepDS_WIRE; break;
161 case TopAbs_FACE : res = TopOpeBRepDS_FACE; break;
162 case TopAbs_SHELL : res = TopOpeBRepDS_SHELL; break;
163 case TopAbs_SOLID : res = TopOpeBRepDS_SOLID; break;
164 case TopAbs_COMPSOLID : res = TopOpeBRepDS_COMPSOLID; break;
165 case TopAbs_COMPOUND : res = TopOpeBRepDS_COMPOUND; break;
166 default : throw Standard_ProgramError("TopOpeBRepDS::ShapeToKind");
171 //=======================================================================
172 //function : KindToShape
174 //=======================================================================
176 TopAbs_ShapeEnum TopOpeBRepDS::KindToShape(const TopOpeBRepDS_Kind K)
178 TopAbs_ShapeEnum res = TopAbs_SHAPE; // bidon
179 if ( ! TopOpeBRepDS::IsTopology(K) ) return res;
182 case TopOpeBRepDS_VERTEX : res = TopAbs_VERTEX; break;
183 case TopOpeBRepDS_EDGE : res = TopAbs_EDGE; break;
184 case TopOpeBRepDS_WIRE : res = TopAbs_WIRE; break;
185 case TopOpeBRepDS_FACE : res = TopAbs_FACE; break;
186 case TopOpeBRepDS_SHELL : res = TopAbs_SHELL; break;
187 case TopOpeBRepDS_SOLID : res = TopAbs_SOLID; break;
188 case TopOpeBRepDS_COMPSOLID : res = TopAbs_COMPSOLID; break;
189 case TopOpeBRepDS_COMPOUND : res = TopAbs_COMPOUND; break;
190 default : throw Standard_ProgramError("TopOpeBRepDS::KindToShape");