0030686: Visualization, SelectMgr_ViewerSelector - sorting issues of transformation...
[occt.git] / src / TopOpeBRepDS / TopOpeBRepDS.cxx
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
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
18 #include <Standard_ProgramError.hxx>
19 #include <TCollection_AsciiString.hxx>
20 #include <TopOpeBRepDS.hxx>
21 #include <TopOpeBRepDS_define.hxx>
22
23 //=======================================================================
24 //function : Print the name of a State
25 //=======================================================================
26 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_State S)
27 {
28   TCollection_AsciiString s;
29   switch (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;
34   }
35   return s;
36 }
37
38 Standard_OStream& TopOpeBRepDS::Print(const TopAbs_State S,Standard_OStream& OS)
39 { OS<<TopOpeBRepDS::SPrint(S); return OS; }
40
41 //=======================================================================
42 //purpose  : print the name of a Kind
43 //=======================================================================
44 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k)
45 {
46   TCollection_AsciiString s;
47   switch(k) {
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;
59   default:
60     break ;
61   }
62   return s;
63 }
64 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Kind k,const Standard_Integer i,const TCollection_AsciiString& S1,const TCollection_AsciiString& S2)
65 {
66   TCollection_AsciiString si = ""; if (i >= 0 && i <= 9) si = " ";
67   TCollection_AsciiString s = S1 + "(" + TopOpeBRepDS::SPrint(k) + "," + si + TCollection_AsciiString(i) + ")" + S2;
68   return s;
69 }
70
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; }
75
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); }
83
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; }
86
87 //=======================================================================
88 //purpose  : print the name of a Orientation
89 //=======================================================================
90 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopAbs_Orientation o) 
91 {
92   return TopAbs::ShapeOrientationToString (o);
93 }
94
95 //=======================================================================
96 //purpose  : print the name of a Config
97 //=======================================================================
98 TCollection_AsciiString TopOpeBRepDS::SPrint(const TopOpeBRepDS_Config C)
99 {
100   TCollection_AsciiString SS;
101   switch (C) {
102   case TopOpeBRepDS_UNSHGEOMETRY : SS = "UNSH"; break;
103   case TopOpeBRepDS_SAMEORIENTED : SS = "SAME"; break;
104   case TopOpeBRepDS_DIFFORIENTED : SS = "DIFF"; break;
105   }
106   return SS;
107 }
108
109 Standard_OStream& TopOpeBRepDS::Print(const TopOpeBRepDS_Config C,Standard_OStream& OS)
110 { OS<<TopOpeBRepDS::SPrint(C); return OS; }
111
112 //=======================================================================
113 //function : IsTopology
114 //purpose  : 
115 //=======================================================================
116
117 Standard_Boolean TopOpeBRepDS::IsTopology(const TopOpeBRepDS_Kind k)
118 {
119   switch (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;
129   }
130 }
131
132 //=======================================================================
133 //function : IsGeometry
134 //purpose  : 
135 //=======================================================================
136
137 Standard_Boolean TopOpeBRepDS::IsGeometry(const TopOpeBRepDS_Kind k)
138 {
139   switch (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;
143   default:
144     break ;
145   }
146   return Standard_False;
147 }
148
149 //=======================================================================
150 //function : ShapeToKind
151 //purpose  : 
152 //=======================================================================
153
154 TopOpeBRepDS_Kind TopOpeBRepDS::ShapeToKind(const TopAbs_ShapeEnum S) 
155 {
156   TopOpeBRepDS_Kind res = TopOpeBRepDS_SOLID; // bidon
157   switch (S) {
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");
167   }
168   return res;
169 }
170
171 //=======================================================================
172 //function : KindToShape
173 //purpose  : 
174 //=======================================================================
175
176 TopAbs_ShapeEnum TopOpeBRepDS::KindToShape(const TopOpeBRepDS_Kind K)
177 {
178   TopAbs_ShapeEnum res = TopAbs_SHAPE; // bidon
179   if ( ! TopOpeBRepDS::IsTopology(K) ) return res;
180
181   switch (K) {
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");
191   }
192   return res;
193 }