8cf2742d50e59e5881446f2e056651f07dbe1593
[occt.git] / src / IGESDraw / IGESDraw_GeneralModule.cxx
1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14
15 #include <IGESData_DirChecker.hxx>
16 #include <IGESData_IGESEntity.hxx>
17 #include <IGESDraw_CircArraySubfigure.hxx>
18 #include <IGESDraw_ConnectPoint.hxx>
19 #include <IGESDraw_Drawing.hxx>
20 #include <IGESDraw_DrawingWithRotation.hxx>
21 #include <IGESDraw_GeneralModule.hxx>
22 #include <IGESDraw_LabelDisplay.hxx>
23 #include <IGESDraw_NetworkSubfigure.hxx>
24 #include <IGESDraw_NetworkSubfigureDef.hxx>
25 #include <IGESDraw_PerspectiveView.hxx>
26 #include <IGESDraw_Planar.hxx>
27 #include <IGESDraw_RectArraySubfigure.hxx>
28 #include <IGESDraw_SegmentedViewsVisible.hxx>
29 #include <IGESDraw_ToolCircArraySubfigure.hxx>
30 #include <IGESDraw_ToolConnectPoint.hxx>
31 #include <IGESDraw_ToolDrawing.hxx>
32 #include <IGESDraw_ToolDrawingWithRotation.hxx>
33 #include <IGESDraw_ToolLabelDisplay.hxx>
34 #include <IGESDraw_ToolNetworkSubfigure.hxx>
35 #include <IGESDraw_ToolNetworkSubfigureDef.hxx>
36 #include <IGESDraw_ToolPerspectiveView.hxx>
37 #include <IGESDraw_ToolPlanar.hxx>
38 #include <IGESDraw_ToolRectArraySubfigure.hxx>
39 #include <IGESDraw_ToolSegmentedViewsVisible.hxx>
40 #include <IGESDraw_ToolView.hxx>
41 #include <IGESDraw_ToolViewsVisible.hxx>
42 #include <IGESDraw_ToolViewsVisibleWithAttr.hxx>
43 #include <IGESDraw_View.hxx>
44 #include <IGESDraw_ViewsVisible.hxx>
45 #include <IGESDraw_ViewsVisibleWithAttr.hxx>
46 #include <Interface_Category.hxx>
47 #include <Interface_Check.hxx>
48 #include <Interface_CopyTool.hxx>
49 #include <Interface_EntityIterator.hxx>
50 #include <Interface_Macros.hxx>
51 #include <Interface_ShareTool.hxx>
52 #include <Standard_Transient.hxx>
53 #include <Standard_Type.hxx>
54
55 IMPLEMENT_STANDARD_RTTIEXT(IGESDraw_GeneralModule,IGESData_GeneralModule)
56
57 //  Each Module is attached to a Protocol : it must interprete Case Numbers
58 //  (arguments <CN> of various methods) in accordance to values returned by
59 //  the method TypeNumber from this Protocol
60 IGESDraw_GeneralModule::IGESDraw_GeneralModule ()    {  }
61
62
63     void  IGESDraw_GeneralModule::OwnSharedCase
64   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
65    Interface_EntityIterator& iter) const 
66 {
67   switch (CN) {
68     case  1 : {
69       DeclareAndCast(IGESDraw_CircArraySubfigure,anent,ent);
70       if (anent.IsNull()) return;
71       IGESDraw_ToolCircArraySubfigure tool;
72       tool.OwnShared(anent,iter);
73     }
74       break;
75     case  2 : {
76       DeclareAndCast(IGESDraw_ConnectPoint,anent,ent);
77       if (anent.IsNull()) return;
78       IGESDraw_ToolConnectPoint tool;
79       tool.OwnShared(anent,iter);
80     }
81       break;
82     case  3 : {
83       DeclareAndCast(IGESDraw_Drawing,anent,ent);
84       if (anent.IsNull()) return;
85       IGESDraw_ToolDrawing tool;
86       tool.OwnShared(anent,iter);
87     }
88       break;
89     case  4 : {
90       DeclareAndCast(IGESDraw_DrawingWithRotation,anent,ent);
91       if (anent.IsNull()) return;
92       IGESDraw_ToolDrawingWithRotation tool;
93       tool.OwnShared(anent,iter);
94     }
95       break;
96     case  5 : {
97       DeclareAndCast(IGESDraw_LabelDisplay,anent,ent);
98       if (anent.IsNull()) return;
99       IGESDraw_ToolLabelDisplay tool;
100       tool.OwnShared(anent,iter);
101     }
102       break;
103     case  6 : {
104       DeclareAndCast(IGESDraw_NetworkSubfigure,anent,ent);
105       if (anent.IsNull()) return;
106       IGESDraw_ToolNetworkSubfigure tool;
107       tool.OwnShared(anent,iter);
108     }
109       break;
110     case  7 : {
111       DeclareAndCast(IGESDraw_NetworkSubfigureDef,anent,ent);
112       if (anent.IsNull()) return;
113       IGESDraw_ToolNetworkSubfigureDef tool;
114       tool.OwnShared(anent,iter);
115     }
116       break;
117     case  8 : {
118       DeclareAndCast(IGESDraw_PerspectiveView,anent,ent);
119       if (anent.IsNull()) return;
120       IGESDraw_ToolPerspectiveView tool;
121       tool.OwnShared(anent,iter);
122     }
123       break;
124     case  9 : {
125       DeclareAndCast(IGESDraw_Planar,anent,ent);
126       if (anent.IsNull()) return;
127       IGESDraw_ToolPlanar tool;
128       tool.OwnShared(anent,iter);
129     }
130       break;
131     case 10 : {
132       DeclareAndCast(IGESDraw_RectArraySubfigure,anent,ent);
133       if (anent.IsNull()) return;
134       IGESDraw_ToolRectArraySubfigure tool;
135       tool.OwnShared(anent,iter);
136     }
137       break;
138     case 11 : {
139       DeclareAndCast(IGESDraw_SegmentedViewsVisible,anent,ent);
140       if (anent.IsNull()) return;
141       IGESDraw_ToolSegmentedViewsVisible tool;
142       tool.OwnShared(anent,iter);
143     }
144       break;
145     case 12 : {
146       DeclareAndCast(IGESDraw_View,anent,ent);
147       if (anent.IsNull()) return;
148       IGESDraw_ToolView tool;
149       tool.OwnShared(anent,iter);
150     }
151       break;
152     case 13 : {
153       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
154       if (anent.IsNull()) return;
155       IGESDraw_ToolViewsVisible tool;
156       tool.OwnShared(anent,iter);
157     }
158       break;
159     case 14 : {
160       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
161       if (anent.IsNull()) return;
162       IGESDraw_ToolViewsVisibleWithAttr tool;
163       tool.OwnShared(anent,iter);
164     }
165       break;
166     default : break;
167   }
168 }
169
170     void  IGESDraw_GeneralModule::OwnImpliedCase
171   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
172    Interface_EntityIterator& iter) const 
173 {
174   switch (CN ) {
175     case 13 : {
176       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
177       if (anent.IsNull()) break;
178       IGESDraw_ToolViewsVisible tool;
179       tool.OwnImplied(anent,iter);
180     }
181     case 14 : {
182       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
183       if (anent.IsNull()) break;
184       IGESDraw_ToolViewsVisibleWithAttr tool;
185       tool.OwnImplied(anent,iter);
186     }
187     default : break;
188   }
189 }
190
191
192
193     IGESData_DirChecker  IGESDraw_GeneralModule::DirChecker
194   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const 
195 {
196   switch (CN) {
197     case  1 : {
198       DeclareAndCast(IGESDraw_CircArraySubfigure,anent,ent);
199       if (anent.IsNull()) break;
200       IGESDraw_ToolCircArraySubfigure tool;
201       return tool.DirChecker(anent);
202     }
203     case  2 : {
204       DeclareAndCast(IGESDraw_ConnectPoint,anent,ent);
205       if (anent.IsNull()) break;
206       IGESDraw_ToolConnectPoint tool;
207       return tool.DirChecker(anent);
208     }
209     case  3 : {
210       DeclareAndCast(IGESDraw_Drawing,anent,ent);
211       if (anent.IsNull()) break;
212       IGESDraw_ToolDrawing tool;
213       return tool.DirChecker(anent);
214     }
215     case  4 : {
216       DeclareAndCast(IGESDraw_DrawingWithRotation,anent,ent);
217       if (anent.IsNull()) break;
218       IGESDraw_ToolDrawingWithRotation tool;
219       return tool.DirChecker(anent);
220     }
221     case  5 : {
222       DeclareAndCast(IGESDraw_LabelDisplay,anent,ent);
223       if (anent.IsNull()) break;
224       IGESDraw_ToolLabelDisplay tool;
225       return tool.DirChecker(anent);
226     }
227     case  6 : {
228       DeclareAndCast(IGESDraw_NetworkSubfigure,anent,ent);
229       if (anent.IsNull()) break;
230       IGESDraw_ToolNetworkSubfigure tool;
231       return tool.DirChecker(anent);
232     }
233     case  7 : {
234       DeclareAndCast(IGESDraw_NetworkSubfigureDef,anent,ent);
235       if (anent.IsNull()) break;
236       IGESDraw_ToolNetworkSubfigureDef tool;
237       return tool.DirChecker(anent);
238     }
239     case  8 : {
240       DeclareAndCast(IGESDraw_PerspectiveView,anent,ent);
241       if (anent.IsNull()) break;
242       IGESDraw_ToolPerspectiveView tool;
243       return tool.DirChecker(anent);
244     }
245     case  9 : {
246       DeclareAndCast(IGESDraw_Planar,anent,ent);
247       if (anent.IsNull()) break;
248       IGESDraw_ToolPlanar tool;
249       return tool.DirChecker(anent);
250     }
251     case 10 : {
252       DeclareAndCast(IGESDraw_RectArraySubfigure,anent,ent);
253       if (anent.IsNull()) break;
254       IGESDraw_ToolRectArraySubfigure tool;
255       return tool.DirChecker(anent);
256     }
257     case 11 : {
258       DeclareAndCast(IGESDraw_SegmentedViewsVisible,anent,ent);
259       if (anent.IsNull()) break;
260       IGESDraw_ToolSegmentedViewsVisible tool;
261       return tool.DirChecker(anent);
262     }
263     case 12 : {
264       DeclareAndCast(IGESDraw_View,anent,ent);
265       if (anent.IsNull()) break;
266       IGESDraw_ToolView tool;
267       return tool.DirChecker(anent);
268     }
269     case 13 : {
270       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
271       if (anent.IsNull()) break;
272       IGESDraw_ToolViewsVisible tool;
273       return tool.DirChecker(anent);
274     }
275     case 14 : {
276       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
277       if (anent.IsNull()) break;
278       IGESDraw_ToolViewsVisibleWithAttr tool;
279       return tool.DirChecker(anent);
280     }
281     default : break;
282   }
283   return IGESData_DirChecker();    // by default, no specific criterium
284 }
285
286
287     void  IGESDraw_GeneralModule::OwnCheckCase
288   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent,
289    const Interface_ShareTool& shares, Handle(Interface_Check)& ach) const 
290 {
291   switch (CN) {
292     case  1 : {
293       DeclareAndCast(IGESDraw_CircArraySubfigure,anent,ent);
294       if (anent.IsNull()) return;
295       IGESDraw_ToolCircArraySubfigure tool;
296       tool.OwnCheck(anent,shares,ach);
297     }
298       break;
299     case  2 : {
300       DeclareAndCast(IGESDraw_ConnectPoint,anent,ent);
301       if (anent.IsNull()) return;
302       IGESDraw_ToolConnectPoint tool;
303       tool.OwnCheck(anent,shares,ach);
304     }
305       break;
306     case  3 : {
307       DeclareAndCast(IGESDraw_Drawing,anent,ent);
308       if (anent.IsNull()) return;
309       IGESDraw_ToolDrawing tool;
310       tool.OwnCheck(anent,shares,ach);
311     }
312       break;
313     case  4 : {
314       DeclareAndCast(IGESDraw_DrawingWithRotation,anent,ent);
315       if (anent.IsNull()) return;
316       IGESDraw_ToolDrawingWithRotation tool;
317       tool.OwnCheck(anent,shares,ach);
318     }
319       break;
320     case  5 : {
321       DeclareAndCast(IGESDraw_LabelDisplay,anent,ent);
322       if (anent.IsNull()) return;
323       IGESDraw_ToolLabelDisplay tool;
324       tool.OwnCheck(anent,shares,ach);
325     }
326       break;
327     case  6 : {
328       DeclareAndCast(IGESDraw_NetworkSubfigure,anent,ent);
329       if (anent.IsNull()) return;
330       IGESDraw_ToolNetworkSubfigure tool;
331       tool.OwnCheck(anent,shares,ach);
332     }
333       break;
334     case  7 : {
335       DeclareAndCast(IGESDraw_NetworkSubfigureDef,anent,ent);
336       if (anent.IsNull()) return;
337       IGESDraw_ToolNetworkSubfigureDef tool;
338       tool.OwnCheck(anent,shares,ach);
339     }
340       break;
341     case  8 : {
342       DeclareAndCast(IGESDraw_PerspectiveView,anent,ent);
343       if (anent.IsNull()) return;
344       IGESDraw_ToolPerspectiveView tool;
345       tool.OwnCheck(anent,shares,ach);
346     }
347       break;
348     case  9 : {
349       DeclareAndCast(IGESDraw_Planar,anent,ent);
350       if (anent.IsNull()) return;
351       IGESDraw_ToolPlanar tool;
352       tool.OwnCheck(anent,shares,ach);
353     }
354       break;
355     case 10 : {
356       DeclareAndCast(IGESDraw_RectArraySubfigure,anent,ent);
357       if (anent.IsNull()) return;
358       IGESDraw_ToolRectArraySubfigure tool;
359       tool.OwnCheck(anent,shares,ach);
360     }
361       break;
362     case 11 : {
363       DeclareAndCast(IGESDraw_SegmentedViewsVisible,anent,ent);
364       if (anent.IsNull()) return;
365       IGESDraw_ToolSegmentedViewsVisible tool;
366       tool.OwnCheck(anent,shares,ach);
367     }
368       break;
369     case 12 : {
370       DeclareAndCast(IGESDraw_View,anent,ent);
371       if (anent.IsNull()) return;
372       IGESDraw_ToolView tool;
373       tool.OwnCheck(anent,shares,ach);
374     }
375       break;
376     case 13 : {
377       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
378       if (anent.IsNull()) return;
379       IGESDraw_ToolViewsVisible tool;
380       tool.OwnCheck(anent,shares,ach);
381     }
382       break;
383     case 14 : {
384       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
385       if (anent.IsNull()) return;
386       IGESDraw_ToolViewsVisibleWithAttr tool;
387       tool.OwnCheck(anent,shares,ach);
388     }
389       break;
390     default : break;
391   }
392 }
393
394
395     Standard_Boolean  IGESDraw_GeneralModule::NewVoid
396   (const Standard_Integer CN, Handle(Standard_Transient)& ent) const 
397 {
398   switch (CN) {
399     case  1 : ent = new IGESDraw_CircArraySubfigure;    break;
400     case  2 : ent = new IGESDraw_ConnectPoint;          break;
401     case  3 : ent = new IGESDraw_Drawing;               break;
402     case  4 : ent = new IGESDraw_DrawingWithRotation;   break;
403     case  5 : ent = new IGESDraw_LabelDisplay;          break;
404     case  6 : ent = new IGESDraw_NetworkSubfigure;      break;
405     case  7 : ent = new IGESDraw_NetworkSubfigureDef;   break;
406     case  8 : ent = new IGESDraw_PerspectiveView;       break;
407     case  9 : ent = new IGESDraw_Planar;                break;
408     case 10 : ent = new IGESDraw_RectArraySubfigure;    break;
409     case 11 : ent = new IGESDraw_SegmentedViewsVisible; break;
410     case 12 : ent = new IGESDraw_View;                  break;
411     case 13 : ent = new IGESDraw_ViewsVisible;          break;
412     case 14 : ent = new IGESDraw_ViewsVisibleWithAttr;  break;
413     default : return Standard_False;    // by default, Failure on Recognize
414   }
415   return Standard_True;
416 }
417
418
419     void  IGESDraw_GeneralModule::OwnCopyCase
420   (const Standard_Integer CN,
421    const Handle(IGESData_IGESEntity)& entfrom,
422    const Handle(IGESData_IGESEntity)& entto,
423    Interface_CopyTool& TC) const 
424 {
425   switch (CN) {
426     case  1 : {
427       DeclareAndCast(IGESDraw_CircArraySubfigure,enfr,entfrom);
428       DeclareAndCast(IGESDraw_CircArraySubfigure,ento,entto);
429       IGESDraw_ToolCircArraySubfigure tool;
430       tool.OwnCopy(enfr,ento,TC);
431     }
432       break;
433     case  2 : {
434       DeclareAndCast(IGESDraw_ConnectPoint,enfr,entfrom);
435       DeclareAndCast(IGESDraw_ConnectPoint,ento,entto);
436       IGESDraw_ToolConnectPoint tool;
437       tool.OwnCopy(enfr,ento,TC);
438     }
439       break;
440     case  3 : {
441       DeclareAndCast(IGESDraw_Drawing,enfr,entfrom);
442       DeclareAndCast(IGESDraw_Drawing,ento,entto);
443       IGESDraw_ToolDrawing tool;
444       tool.OwnCopy(enfr,ento,TC);
445     }
446       break;
447     case  4 : {
448       DeclareAndCast(IGESDraw_DrawingWithRotation,enfr,entfrom);
449       DeclareAndCast(IGESDraw_DrawingWithRotation,ento,entto);
450       IGESDraw_ToolDrawingWithRotation tool;
451       tool.OwnCopy(enfr,ento,TC);
452     }
453       break;
454     case  5 : {
455       DeclareAndCast(IGESDraw_LabelDisplay,enfr,entfrom);
456       DeclareAndCast(IGESDraw_LabelDisplay,ento,entto);
457       IGESDraw_ToolLabelDisplay tool;
458       tool.OwnCopy(enfr,ento,TC);
459     }
460       break;
461     case  6 : {
462       DeclareAndCast(IGESDraw_NetworkSubfigure,enfr,entfrom);
463       DeclareAndCast(IGESDraw_NetworkSubfigure,ento,entto);
464       IGESDraw_ToolNetworkSubfigure tool;
465       tool.OwnCopy(enfr,ento,TC);
466     }
467       break;
468     case  7 : {
469       DeclareAndCast(IGESDraw_NetworkSubfigureDef,enfr,entfrom);
470       DeclareAndCast(IGESDraw_NetworkSubfigureDef,ento,entto);
471       IGESDraw_ToolNetworkSubfigureDef tool;
472       tool.OwnCopy(enfr,ento,TC);
473     }
474       break;
475     case  8 : {
476       DeclareAndCast(IGESDraw_PerspectiveView,enfr,entfrom);
477       DeclareAndCast(IGESDraw_PerspectiveView,ento,entto);
478       IGESDraw_ToolPerspectiveView tool;
479       tool.OwnCopy(enfr,ento,TC);
480     }
481       break;
482     case  9 : {
483       DeclareAndCast(IGESDraw_Planar,enfr,entfrom);
484       DeclareAndCast(IGESDraw_Planar,ento,entto);
485       IGESDraw_ToolPlanar tool;
486       tool.OwnCopy(enfr,ento,TC);
487     }
488       break;
489     case 10 : {
490       DeclareAndCast(IGESDraw_RectArraySubfigure,enfr,entfrom);
491       DeclareAndCast(IGESDraw_RectArraySubfigure,ento,entto);
492       IGESDraw_ToolRectArraySubfigure tool;
493       tool.OwnCopy(enfr,ento,TC);
494     }
495       break;
496     case 11 : {
497       DeclareAndCast(IGESDraw_SegmentedViewsVisible,enfr,entfrom);
498       DeclareAndCast(IGESDraw_SegmentedViewsVisible,ento,entto);
499       IGESDraw_ToolSegmentedViewsVisible tool;
500       tool.OwnCopy(enfr,ento,TC);
501     }
502       break;
503     case 12 : {
504       DeclareAndCast(IGESDraw_View,enfr,entfrom);
505       DeclareAndCast(IGESDraw_View,ento,entto);
506       IGESDraw_ToolView tool;
507       tool.OwnCopy(enfr,ento,TC);
508     }
509       break;
510     case 13 : {
511       DeclareAndCast(IGESDraw_ViewsVisible,enfr,entfrom);
512       DeclareAndCast(IGESDraw_ViewsVisible,ento,entto);
513       IGESDraw_ToolViewsVisible tool;
514       tool.OwnCopy(enfr,ento,TC);
515     }
516       break;
517     case 14 : {
518       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,enfr,entfrom);
519       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,ento,entto);
520       IGESDraw_ToolViewsVisibleWithAttr tool;
521       tool.OwnCopy(enfr,ento,TC);
522     }
523       break;
524     default : break;
525   }
526 }
527
528
529     void  IGESDraw_GeneralModule::OwnRenewCase
530   (const Standard_Integer CN,
531    const Handle(IGESData_IGESEntity)& entfrom,
532    const Handle(IGESData_IGESEntity)& entto,
533    const Interface_CopyTool& TC) const 
534 {
535   switch (CN) {
536     case 13 : {
537       DeclareAndCast(IGESDraw_ViewsVisible,enfr,entfrom);
538       DeclareAndCast(IGESDraw_ViewsVisible,ento,entto);
539       IGESDraw_ToolViewsVisible tool;
540       tool.OwnRenew(enfr,ento,TC);
541     }
542       break;
543     case 14 : {
544       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,enfr,entfrom);
545       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,ento,entto);
546       IGESDraw_ToolViewsVisibleWithAttr tool;
547       tool.OwnRenew(enfr,ento,TC);
548     }
549       break;
550     default : break;
551   }
552 }
553
554
555     void  IGESDraw_GeneralModule::OwnDeleteCase
556   (const Standard_Integer CN, const Handle(IGESData_IGESEntity)& ent) const
557 {
558   switch (CN) {
559     case 13 : {
560       DeclareAndCast(IGESDraw_ViewsVisible,anent,ent);
561       IGESDraw_ToolViewsVisible tool;
562       tool.OwnWhenDelete(anent);
563     }
564       break;
565     case 14 : {
566       DeclareAndCast(IGESDraw_ViewsVisibleWithAttr,anent,ent);
567       IGESDraw_ToolViewsVisibleWithAttr tool;
568       tool.OwnWhenDelete(anent);
569     }
570       break;
571     default : break;
572   }
573 }
574
575
576     Standard_Integer  IGESDraw_GeneralModule::CategoryNumber
577   (const Standard_Integer CN, const Handle(Standard_Transient)& ,
578    const Interface_ShareTool& ) const
579 {
580   if (CN == 9) return Interface_Category::Number("Auxiliary");
581   if (CN == 1 || CN == 2 || CN == 10) return Interface_Category::Number("Structure");
582   return Interface_Category::Number("Drawing");
583 }