0028449: Data Exchange - Wrong orientation of Annotation Plane in GD&T
[occt.git] / src / TestTopOpeTools / TestTopOpeTools_TraceCommands.cxx
1 // Created on: 1994-10-24
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 #include <TestTopOpeTools.hxx>
18 #include <TestTopOpeTools_Trace.hxx>
19 #include <Draw_Interpretor.hxx>
20 #include <Draw_Appli.hxx>
21 #include <TopOpeBRepTool_define.hxx>
22
23 #ifdef OCCT_DEBUG
24 TestTopOpeTools_Trace theTrace(100,"trace");
25 TestTopOpeTools_Trace theContext(100,"context");
26
27 Standard_IMPORT void TopClass_SettraceFC(const Standard_Boolean);
28 Standard_IMPORT void TopOpeBRepTool_SettraceEND(const Standard_Boolean);
29 Standard_IMPORT void TopOpeBRepTool_SettraceKRO(const Standard_Boolean);
30 Standard_IMPORT void TopOpeBRepTool_SetcontextNOSEW(const Standard_Boolean);
31 Standard_IMPORT void TopOpeBRep_SettraceFITOL(const Standard_Boolean);
32 Standard_IMPORT void TopOpeBRep_SettraceBIPS(const Standard_Boolean);
33 Standard_IMPORT void TopOpeBRep_SettraceSI(const Standard_Boolean);
34 Standard_IMPORT void TopOpeBRep_SettraceSIFF(const Standard_Boolean, Standard_Integer, char**);
35 Standard_IMPORT void TopOpeBRep_SettraceSAVFF(const Standard_Boolean);
36 Standard_IMPORT Standard_Integer TopOpeBRep_SettraceNVP(const Standard_Boolean, Standard_Integer, char**);
37 Standard_IMPORT Standard_Integer TopOpeBRep_SettraceEEFF(const Standard_Boolean, Standard_Integer, char**);
38 Standard_IMPORT Standard_Integer TopOpeBRep_SettraceSHA(const Standard_Boolean, Standard_Integer, char**);
39 Standard_IMPORT void TopOpeBRep_SetcontextREST1(const Standard_Boolean);
40 Standard_IMPORT void TopOpeBRep_SetcontextREST2(const Standard_Boolean);
41 Standard_IMPORT void TopOpeBRep_SetcontextINL(const Standard_Boolean);
42 Standard_IMPORT void TopOpeBRep_SetcontextNEWKP(const Standard_Boolean);
43 Standard_IMPORT void TopOpeBRep_SetcontextTOL0(const Standard_Boolean);
44 Standard_IMPORT void TopOpeBRep_SetcontextNONOG(const Standard_Boolean);
45 Standard_IMPORT void TopOpeBRepBuild_SettraceCHK(const Standard_Boolean);
46 Standard_IMPORT void TopOpeBRepBuild_SettraceCHKOK(const Standard_Boolean);
47 Standard_IMPORT void TopOpeBRepBuild_SettraceCHKNOK(const Standard_Boolean);
48 Standard_IMPORT void TopOpeBRepBuild_SettraceCU(const Standard_Boolean);
49 Standard_IMPORT void TopOpeBRepBuild_SettraceCUV(const Standard_Boolean);
50 Standard_IMPORT void TopOpeBRepBuild_SettraceSPF(const Standard_Boolean);
51 Standard_IMPORT void TopOpeBRepBuild_SettraceSPS(const Standard_Boolean);
52 Standard_IMPORT void TopOpeBRepBuild_SettraceSHEX(const Standard_Boolean);
53 Standard_IMPORT void TopOpeBRepBuild_SettraceSS(const Standard_Boolean);
54 Standard_IMPORT void TopOpeBRepBuild_SettraceAREA(const Standard_Boolean);
55 Standard_IMPORT void TopOpeBRepBuild_SettraceKPB(const Standard_Boolean);
56 Standard_IMPORT void TopOpeBRepBuild_SettracePURGE(const Standard_Boolean);
57 Standard_IMPORT void TopOpeBRepBuild_SettraceSAVFREGU(const Standard_Boolean);
58 Standard_IMPORT void TopOpeBRepBuild_SettraceSAVSREGU(const Standard_Boolean);
59 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOSG(const Standard_Boolean);
60 Standard_IMPORT void TopOpeBRepBuild_SettraceFE(const Standard_Boolean);
61 Standard_IMPORT void TopOpeBRepBuild_SetcontextSSCONNEX(const Standard_Boolean);
62 Standard_IMPORT void TopOpeBRepBuild_SetcontextSF2(const Standard_Boolean);
63 Standard_IMPORT void TopOpeBRepBuild_SetcontextSPEON(const Standard_Boolean);
64 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOPURGE(const Standard_Boolean);
65 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOREGUFA(const Standard_Boolean);
66 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOREGUSO(const Standard_Boolean);
67 Standard_IMPORT void TopOpeBRepBuild_SetcontextREGUXPU(const Standard_Boolean);
68 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOCORRISO(const Standard_Boolean);
69 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOFUFA(const Standard_Boolean);
70 Standard_IMPORT void TopOpeBRepBuild_SetcontextNOFE(const Standard_Boolean);
71 Standard_IMPORT void TopOpeBRepBuild_SetcontextEINTERNAL(const Standard_Boolean);
72 Standard_IMPORT void TopOpeBRepBuild_SetcontextEEXTERNAL(const Standard_Boolean);
73 Standard_IMPORT void TopOpeBRepTool_SettraceNYI(const Standard_Boolean);
74 Standard_IMPORT void TopOpeBRepTool_SettraceVC(const Standard_Boolean);
75 Standard_IMPORT void TopOpeBRepTool_SettracePCURV(const Standard_Boolean);
76 Standard_IMPORT void TopOpeBRepTool_SettraceBOXPERSO(const Standard_Boolean);
77 Standard_IMPORT void TopOpeBRepTool_SettraceBOX(const Standard_Boolean);
78 Standard_IMPORT void TopOpeBRepTool_SettraceCLOV(const Standard_Boolean);
79 Standard_IMPORT void TopOpeBRepTool_SettraceCHKBSPL(const Standard_Boolean);
80 Standard_IMPORT void TopOpeBRepTool_SettraceREGUFA(const Standard_Boolean);
81 Standard_IMPORT void TopOpeBRepTool_SettraceREGUSO(const Standard_Boolean);
82 Standard_IMPORT void TopOpeBRepTool_SettraceC2D(const Standard_Boolean);
83 Standard_IMPORT void TopOpeBRepTool_SettraceCORRISO(const Standard_Boolean);
84 Standard_IMPORT void TopOpeBRep_SettraceCONIC(const Standard_Boolean);
85 Standard_IMPORT void TopOpeBRep_SettracePROEDG(const Standard_Boolean);
86 Standard_IMPORT void TopOpeBRep_SetcontextNOPROEDG(const Standard_Boolean);
87 Standard_IMPORT void TopOpeBRep_SetcontextFFOR(const Standard_Boolean);
88 Standard_IMPORT void TopOpeBRep_SetcontextNOPUNK(const Standard_Boolean);
89 Standard_IMPORT void TopOpeBRep_SetcontextNOFEI(const Standard_Boolean);
90 Standard_IMPORT void TopOpeBRepTool_SettraceCL2DDR(const Standard_Boolean, Standard_Integer, char**);
91 Standard_IMPORT void TopOpeBRepTool_SettraceCL2DPR(const Standard_Boolean, Standard_Integer, char**);
92 Standard_IMPORT void TopOpeBRepTool_SettraceCL3DDR(const Standard_Boolean, Standard_Integer, char**);
93 Standard_IMPORT void TopOpeBRepTool_SettraceCL3DPR(const Standard_Boolean, Standard_Integer, char**);
94 #endif
95
96 #ifdef OCCT_DEBUG
97 //----------------------------------------------------------------------------
98 static Standard_Integer InitTraceTopOpeKernel (TestTopOpeTools_Trace& T)
99 //----------------------------------------------------------------------------
100 {
101   if (T.Add("tfc",(tf_value)TopClass_SettraceFC)) return 1;
102   if (T.Add("tend",(tf_value)TopOpeBRepTool_SettraceEND)) return 1;
103   if (T.Add("tkro",(tf_value)TopOpeBRepTool_SettraceKRO)) return 1;
104   if (T.Add("tfitol",(tf_value)TopOpeBRep_SettraceFITOL)) return 1;
105   if (T.Add("tbips",(tf_value)TopOpeBRep_SettraceBIPS)) return 1;
106   if (T.Add("tsi",(tf_value)TopOpeBRep_SettraceSI)) return 1;
107   if (T.Add("tsiff",(tf_intarg)TopOpeBRep_SettraceSIFF)) return 1; // tsiff 0|[1 s1 s2 name]
108   if (T.Add("tsavff",(tf_value)TopOpeBRep_SettraceSAVFF)) return 1;
109   if (T.Add("tnvp",(tf_int_intarg)TopOpeBRep_SettraceNVP)) return 1; // tnvp 0|1 if1 if2 ili ivp isi
110   if (T.Add("teeff",(tf_int_intarg)TopOpeBRep_SettraceEEFF)) return 1; // teeff 0|1 ie1 ie2 if1 if2
111   if (T.Add("tsha",(tf_int_intarg)TopOpeBRep_SettraceSHA)) return 1; // tsha 0|1 isha
112   if (T.Add("tchk",(tf_value)TopOpeBRepBuild_SettraceCHK)) return 1;  
113   if (T.Add("tok",(tf_value)TopOpeBRepBuild_SettraceCHKOK)) return 1;
114   if (T.Add("tnok",(tf_value)TopOpeBRepBuild_SettraceCHKNOK)) return 1;
115   if (T.Add("tcu",(tf_value)TopOpeBRepBuild_SettraceCU)) return 1;
116   if (T.Add("tcuv",(tf_value)TopOpeBRepBuild_SettraceCUV)) return 1;
117   if (T.Add("tspf",(tf_value)TopOpeBRepBuild_SettraceSPF)) return 1; // splitface
118   if (T.Add("tsps",(tf_value)TopOpeBRepBuild_SettraceSPS)) return 1; // splitsolid
119   if (T.Add("tshex",(tf_value)TopOpeBRepBuild_SettraceSHEX)) return 1;
120   if (T.Add("tss",(tf_value)TopOpeBRepBuild_SettraceSS)) return 1;
121   if (T.Add("tarea",(tf_value)TopOpeBRepBuild_SettraceAREA)) return 1;
122   if (T.Add("tkpb",(tf_value)TopOpeBRepBuild_SettraceKPB)) return 1;
123   if (T.Add("tpurge",(tf_value)TopOpeBRepBuild_SettracePURGE)) return 1;
124   if (T.Add("tsavfregu",(tf_value)TopOpeBRepBuild_SettraceSAVFREGU)) return 1;
125   if (T.Add("tsavsregu",(tf_value)TopOpeBRepBuild_SettraceSAVSREGU)) return 1;
126   if (T.Add("tfe",(tf_value)TopOpeBRepBuild_SettraceFE)) return 1;
127   if (T.Add("tnyi",(tf_value)TopOpeBRepTool_SettraceNYI)) return 1;
128   if (T.Add("tvc",(tf_value)TopOpeBRepTool_SettraceVC)) return 1;
129   if (T.Add("tpcurv",(tf_value)TopOpeBRepTool_SettracePCURV)) return 1;
130   if (T.Add("tbp",(tf_value)TopOpeBRepTool_SettraceBOXPERSO)) return 1;
131   if (T.Add("tbox",(tf_value)TopOpeBRepTool_SettraceBOX)) return 1;
132   if (T.Add("tclov",(tf_value)TopOpeBRepTool_SettraceCLOV)) return 1;
133   if (T.Add("tchkbspl",(tf_value)TopOpeBRepTool_SettraceCHKBSPL)) return 1;
134   if (T.Add("tregufa",(tf_value)TopOpeBRepTool_SettraceREGUFA)) return 1;
135   if (T.Add("treguso",(tf_value)TopOpeBRepTool_SettraceREGUSO)) return 1;
136   if (T.Add("tc2d",(tf_value)TopOpeBRepTool_SettraceC2D)) return 1;
137   if (T.Add("tcorriso",(tf_value)TopOpeBRepTool_SettraceCORRISO)) return 1;
138   if (T.Add("tcl2ddr",(tf_intarg)TopOpeBRepTool_SettraceCL2DDR)) return 1;
139   if (T.Add("tcl2dpr",(tf_intarg)TopOpeBRepTool_SettraceCL2DPR)) return 1;
140   if (T.Add("tcl3ddr",(tf_intarg)TopOpeBRepTool_SettraceCL3DDR)) return 1;
141   if (T.Add("tcl3dpr",(tf_intarg)TopOpeBRepTool_SettraceCL3DPR)) return 1;
142   if (T.Add("tproedg",(tf_value)TopOpeBRep_SettracePROEDG)) return 1;
143   if (T.Add("tconic",(tf_value)TopOpeBRep_SettraceCONIC)) return 1;
144   return 0;
145 }
146 #endif
147 #ifdef OCCT_DEBUG
148 //----------------------------------------------------------------------------
149 Standard_Integer InitContextTopOpeKernel (TestTopOpeTools_Trace& T)
150 //----------------------------------------------------------------------------
151 {
152   if (T.Add("nosew",(tf_value)TopOpeBRepTool_SetcontextNOSEW)) return 1;
153   if (T.Add("nosg",(tf_value)TopOpeBRepBuild_SetcontextNOSG)) return 1;
154   if (T.Add("ssconnex",(tf_value)TopOpeBRepBuild_SetcontextSSCONNEX)) return 1;
155   if (T.Add("sf2",(tf_value)TopOpeBRepBuild_SetcontextSF2)) return 1;
156   if (T.Add("speon",(tf_value)TopOpeBRepBuild_SetcontextSPEON)) return 1;
157   if (T.Add("nopurge",(tf_value)TopOpeBRepBuild_SetcontextNOPURGE)) return 1;
158   if (T.Add("noregufa",(tf_value)TopOpeBRepBuild_SetcontextNOREGUFA)) return 1;
159   if (T.Add("noreguso",(tf_value)TopOpeBRepBuild_SetcontextNOREGUSO)) return 1;
160   if (T.Add("reguxpu",(tf_value)TopOpeBRepBuild_SetcontextREGUXPU)) return 1;
161   if (T.Add("nocorriso",(tf_value)TopOpeBRepBuild_SetcontextNOCORRISO)) return 1;
162   if (T.Add("nofe",(tf_value)TopOpeBRepBuild_SetcontextNOFE)) return 1;
163   if (T.Add("nofufa",(tf_value)TopOpeBRepBuild_SetcontextNOFUFA)) return 1;
164   if (T.Add("einternal",(tf_value)TopOpeBRepBuild_SetcontextEINTERNAL)) return 1;
165   if (T.Add("eexternal",(tf_value)TopOpeBRepBuild_SetcontextEEXTERNAL)) return 1;
166   if (T.Add("noproedg",(tf_value)TopOpeBRep_SetcontextNOPROEDG)) return 1;
167   if (T.Add("rest1",(tf_value)TopOpeBRep_SetcontextREST1)) return 1;
168   if (T.Add("rest2",(tf_value)TopOpeBRep_SetcontextREST2)) return 1;
169   if (T.Add("inl",(tf_value)TopOpeBRep_SetcontextINL)) return 1;
170   if (T.Add("newkp",(tf_value)TopOpeBRep_SetcontextNEWKP)) return 1;
171   if (T.Add("tol0",(tf_value)TopOpeBRep_SetcontextTOL0)) return 1;
172   if (T.Add("nonog",(tf_value)TopOpeBRep_SetcontextNONOG)) return 1;
173   if (T.Add("ffor",(tf_value)TopOpeBRep_SetcontextFFOR)) return 1;
174   if (T.Add("nopunk",(tf_value)TopOpeBRep_SetcontextNOPUNK)) return 1;
175   if (T.Add("nofei",(tf_value)TopOpeBRep_SetcontextNOFEI)) return 1;
176
177   return 0;
178 }
179 #else 
180 Standard_Integer InitContextTopOpeKernel (TestTopOpeTools_Trace&) { return 0;}
181 #endif
182
183 Standard_EXPORT Standard_Integer TestTopOpeTools_SetFlags
184 (TestTopOpeTools_Trace& theFlags, Standard_Integer mute, Standard_Integer n , const char** a) 
185 {
186   if (n == 1) { 
187     theFlags.Dump();
188     return 0;
189   }
190   if (n < 2) {
191     return 1;
192   }
193   const char* flag = a[1];
194   t_value value; // new value of flag
195   if (n == 2) value = Standard_True;
196   else value = (Draw::Atoi(a[2]) ? Standard_True : Standard_False);
197
198   if (mute == 0) {
199     if ( n == 2 ) {
200       if      (!strcasecmp(a[1],"0")) {
201         theFlags.Reset(Standard_False);
202         cout<<theFlags.Genre()<<"s desactivated"<<endl;
203         return 0;
204       }
205       else if (!strcasecmp(a[1],"1")) {
206         theFlags.Reset(Standard_True);
207         cout<<theFlags.Genre()<<"s activated"<<endl;
208         return 0;
209       }
210     }
211   }
212
213   Standard_Integer res = 1;
214   if (res) res=theFlags.Set(mute,flag,value,(n>3)?(n-3):0,(n>3)?&a[3]:NULL);
215   if (res) res=theFlags.Set(mute,flag,value);
216   return res;
217 }
218
219 //=========================================================================
220 // a1 = flag (for example tbs) <a2> = value, if omitted flag becomes True
221 //=========================================================================
222
223  
224 #ifdef OCCT_DEBUG
225 Standard_Integer TestTopOpeTools_SetTrace(Draw_Interpretor&, Standard_Integer n ,const char** a)
226 #else
227 Standard_Integer TestTopOpeTools_SetTrace(Draw_Interpretor&, Standard_Integer,const char**)
228 #endif
229 {
230   Standard_Integer ok = Standard_True;
231 #ifdef OCCT_DEBUG
232   InitTraceTopOpeKernel(theTrace);
233   Standard_Integer mute = 0; if (!strcasecmp(a[0],"trcmute")) mute = 1;
234   ok = TestTopOpeTools_SetFlags(theTrace,mute,n,a);
235 #endif
236   return ok;
237 }
238
239 //=========================================================================
240 // a1 = flag (for example tbs) <a2> = value, if omitted flag becomes True
241 //=========================================================================
242
243 #ifdef OCCT_DEBUG
244 Standard_Integer TestTopOpeTools_SetContext(Draw_Interpretor&, Standard_Integer n ,const char** a)
245 {
246   Standard_Integer ok = Standard_True;
247   InitContextTopOpeKernel(theContext);
248   Standard_Integer mute = 0; if (!strcasecmp(a[0],"ctxmute")) mute = 1;
249   ok = TestTopOpeTools_SetFlags(theContext,mute,n,a);
250   return ok;
251 }
252 #else
253 Standard_Integer TestTopOpeTools_SetContext(Draw_Interpretor&, Standard_Integer,const char**) 
254 { return Standard_True;}
255 #endif
256
257 Standard_Integer dstrace(Draw_Interpretor& di, Standard_Integer n , const char** a) {
258   const char ** pa = NULL; TCollection_AsciiString a1;
259   if      (!strcasecmp(a[0],"tsx")) a1 = "tspsx";
260   else if (!strcasecmp(a[0],"tcx")) a1 = "tcx";
261   else return 0;
262   TCollection_AsciiString a0("trc");
263   Standard_Integer npa = n+1;pa = (const char**) malloc((size_t)((npa)*sizeof(char*)));
264   pa[0] = (char *)a0.ToCString();
265   pa[1] = (char *)a1.ToCString();
266   for (Standard_Integer i=1;i<n;i++) pa[i+1] = a[i];
267   TestTopOpeTools_SetTrace(di,npa,pa);
268   if (pa) free(pa);
269   return 0;
270 }
271
272 //=======================================================================
273 //function : TraceCommands
274 //purpose  : 
275 //=======================================================================
276
277 void  TestTopOpeTools::TraceCommands(Draw_Interpretor& theCommands)
278 {
279   static Standard_Boolean done = Standard_False;
280   if (done) return;
281   done = Standard_True;
282
283   const char* g = "trace commands";
284   
285   theCommands.Add("tsx","tsx 0|1 [{shape index}]",__FILE__,dstrace,g);
286   theCommands.Add("tsxx","tsxx 0|1 is1 is2",__FILE__,dstrace,g);
287   theCommands.Add("tcx","tcx 0|1 [{curve index}]",__FILE__,dstrace,g);
288
289   theCommands.Add("trc","Trace <flag> <value>",__FILE__,TestTopOpeTools_SetTrace,g);
290   theCommands.Add("trcmute","Trace <flag> <value>",__FILE__,TestTopOpeTools_SetTrace,g);
291   theCommands.Add("ctx","Context <flag> <value>",__FILE__,TestTopOpeTools_SetContext,g);
292   theCommands.Add("ctxmute","Context <flag> <value>",__FILE__,TestTopOpeTools_SetContext,g);
293 }