Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IGESSelect / IGESSelect_Dumper.cxx
1 #include <IGESSelect_Dumper.ixx>
2
3 #include <IGESSelect_DispPerSingleView.hxx>
4 #include <IGESSelect_DispPerDrawing.hxx>
5 //#include <IGESSelect_SelectIGESTypeForm.hxx>
6 #include <IGESSelect_SelectVisibleStatus.hxx>
7 #include <IGESSelect_SelectLevelNumber.hxx>
8 #include <IGESSelect_SelectName.hxx>
9 #include <IGESSelect_SelectFromSingleView.hxx>
10 #include <IGESSelect_SelectFromDrawing.hxx>
11 #include <IGESSelect_SelectSingleViewFrom.hxx>
12 #include <IGESSelect_SelectDrawingFrom.hxx>
13 #include <IGESSelect_SelectBypassGroup.hxx>
14 #include <IGESSelect_FloatFormat.hxx>
15 #include <IGESSelect_UpdateCreationDate.hxx>
16 #include <IGESSelect_UpdateLastChange.hxx>
17 #include <IGESSelect_SetVersion5.hxx>
18 #include <IGESSelect_SetGlobalParameter.hxx>
19 #include <IGESSelect_AutoCorrect.hxx>
20 #include <IGESSelect_ComputeStatus.hxx>
21 #include <IGESSelect_RebuildDrawings.hxx>
22 #include <IGESSelect_RebuildGroups.hxx>
23 #include <IGESSelect_ChangeLevelList.hxx>
24 #include <IGESSelect_ChangeLevelNumber.hxx>
25 #include <IGESSelect_SplineToBSpline.hxx>
26
27 #include <TCollection_AsciiString.hxx>
28 #include <TCollection_HAsciiString.hxx>
29 #include <IFSelect_IntParam.hxx>
30
31 #include <Interface_Macros.hxx>
32 #include <stdio.h>
33
34
35
36     IGESSelect_Dumper::IGESSelect_Dumper ()    {  }
37
38
39    Standard_Boolean  IGESSelect_Dumper::WriteOwn
40   (IFSelect_SessionFile& file, const Handle(Standard_Transient)& item) const
41 {
42   if (item.IsNull()) return Standard_False;
43   Handle(Standard_Type) type = item->DynamicType();
44   if (type == STANDARD_TYPE(IGESSelect_DispPerSingleView))    return Standard_True;
45   if (type == STANDARD_TYPE(IGESSelect_DispPerDrawing))       return Standard_True;
46 /*  if (type == STANDARD_TYPE(IGESSelect_SelectIGESTypeForm)) {
47     DeclareAndCast(IGESSelect_SelectIGESTypeForm,sf,item);
48     Standard_Boolean exact = sf->IsExact();
49     TCollection_AsciiString text = sf->SignatureText();  // attention, 1-2 term
50     if (exact) file.SendText("exact");
51     else       file.SendText("contains");
52     file.SendText(text.ToCString());
53     return Standard_True;
54   } */
55   if (type == STANDARD_TYPE(IGESSelect_SelectVisibleStatus))  return Standard_True;
56   if (type == STANDARD_TYPE(IGESSelect_SelectLevelNumber)) {
57     DeclareAndCast(IGESSelect_SelectLevelNumber,sl,item);
58     Handle(IFSelect_IntParam) lev = sl->LevelNumber();
59     file.SendItem(lev);
60     return Standard_True;
61   }
62   if (type == STANDARD_TYPE(IGESSelect_SelectName)) {
63     DeclareAndCast(IGESSelect_SelectName,sn,item);
64     Handle(TCollection_HAsciiString) name = sn->Name();
65     file.SendItem(name);
66     return Standard_True;
67   }
68   if (type == STANDARD_TYPE(IGESSelect_SelectFromSingleView)) return Standard_True;
69   if (type == STANDARD_TYPE(IGESSelect_SelectFromDrawing))    return Standard_True;
70   if (type == STANDARD_TYPE(IGESSelect_SelectSingleViewFrom)) return Standard_True;
71   if (type == STANDARD_TYPE(IGESSelect_SelectDrawingFrom))    return Standard_True;
72   if (type == STANDARD_TYPE(IGESSelect_SelectBypassGroup))    return Standard_True;
73
74   if (type == STANDARD_TYPE(IGESSelect_FloatFormat)) {
75     DeclareAndCast(IGESSelect_FloatFormat,ff,item);
76     Standard_Boolean zerosup,  hasrange;
77     Standard_Real    rangemin, rangemax;
78     TCollection_AsciiString mainform,forminrange;
79     ff->Format (zerosup,mainform,hasrange,forminrange,rangemin,rangemax);
80     file.SendText((char*)(zerosup ? "zerosup" : "nozerosup"));
81     file.SendText(mainform.ToCString());
82     if (hasrange) {
83       char flotrange[20];
84       file.SendText(forminrange.ToCString());
85       sprintf(flotrange,"%f",rangemin);
86       file.SendText(flotrange);
87       sprintf(flotrange,"%f",rangemax);
88       file.SendText(flotrange);
89     }
90     return Standard_True;
91   }
92
93   if (type == STANDARD_TYPE(IGESSelect_UpdateCreationDate))   return Standard_True;
94   if (type == STANDARD_TYPE(IGESSelect_UpdateLastChange))     return Standard_True;
95   if (type == STANDARD_TYPE(IGESSelect_SetVersion5))          return Standard_True;
96   if (type == STANDARD_TYPE(IGESSelect_SetGlobalParameter)) {
97     DeclareAndCast(IGESSelect_SetGlobalParameter,sp,item);
98     Standard_Integer np = sp->GlobalNumber();
99     Handle(TCollection_HAsciiString) val = sp->Value();
100     char intext[10];
101     sprintf(intext,"%d",np);
102     file.SendText(intext);
103     file.SendItem(val);
104     return Standard_True;
105   }
106   if (type == STANDARD_TYPE(IGESSelect_AutoCorrect))          return Standard_True;
107   if (type == STANDARD_TYPE(IGESSelect_ComputeStatus))        return Standard_True;
108   if (type == STANDARD_TYPE(IGESSelect_RebuildDrawings))      return Standard_True;
109   if (type == STANDARD_TYPE(IGESSelect_RebuildGroups))        return Standard_True;
110   if (type == STANDARD_TYPE(IGESSelect_ChangeLevelList)) {
111     DeclareAndCast(IGESSelect_ChangeLevelList,cl,item);
112     file.SendItem(cl->OldNumber());
113     file.SendItem(cl->NewNumber());
114     return Standard_True;
115   }
116   if (type == STANDARD_TYPE(IGESSelect_ChangeLevelNumber)) {
117     DeclareAndCast(IGESSelect_ChangeLevelNumber,cl,item);
118     file.SendItem(cl->OldNumber());
119     file.SendItem(cl->NewNumber());
120     return Standard_True;
121   }
122
123   if (type == STANDARD_TYPE(IGESSelect_SplineToBSpline)) {
124     Standard_Boolean tryc2 =
125       GetCasted(IGESSelect_SplineToBSpline,item)->OptionTryC2();
126     file.SendText((char*)(tryc2 ? "TryC2" : "Normal"));
127     return Standard_True;
128   }
129   return Standard_False;
130 }
131
132
133     Standard_Boolean  IGESSelect_Dumper::ReadOwn
134   (IFSelect_SessionFile& file, const TCollection_AsciiString& type,
135    Handle(Standard_Transient)& item) const
136 {
137   if (type.IsEqual("IGESSelect_DispPerSingleView"))
138     {  item = new IGESSelect_DispPerSingleView;      return Standard_True;  }
139   if (type.IsEqual("IGESSelect_DispPerDrawing"))
140     {  item = new IGESSelect_DispPerDrawing;         return Standard_True;  }
141
142   if (type.IsEqual("IGESSelect_SelectIGESTypeForm")) {
143     if (file.NbParams() < 2) return Standard_False;
144     //Standard_Boolean exact; //szv#4:S4163:12Mar99 not needed
145     const TCollection_AsciiString exname = file.ParamValue(1);
146     if (exname.Length() < 1) return Standard_False;
147     if      (exname.Value(1) == 'e') {} //szv#4:S4163:12Mar99 `exact = Standard_True` not needed
148     else if (exname.Value(1) == 'c') {} //szv#4:S4163:12Mar99 `exact = Standard_False` not needed
149     else  return Standard_False;
150     // Attention, 2 termes possibles pour la signature
151     char sig[40];
152     if (file.NbParams() == 2) sprintf(sig,"%s",file.ParamValue(2).ToCString());
153     else sprintf(sig,"%s %s",file.ParamValue(2).ToCString(),file.ParamValue(3).ToCString());
154 //    item = new IGESSelect_SelectIGESTypeForm(sig,exact);
155 //    return Standard_True;
156   }
157   if (type.IsEqual("IGESSelect_SelectVisibleStatus"))
158     {  item = new IGESSelect_SelectVisibleStatus;    return Standard_True;  }
159
160   if (type.IsEqual("IGESSelect_SelectLevelNumber")) {
161     if (file.NbParams() < 1) return Standard_False;
162     Handle(IGESSelect_SelectLevelNumber) sl = new IGESSelect_SelectLevelNumber;
163     DeclareAndCast(IFSelect_IntParam,lev,file.ItemValue(1));
164     sl->SetLevelNumber(lev);
165     item = sl;
166     return Standard_True;
167   }
168   if (type.IsEqual("IGESSelect_SelectName")) {
169     if (file.NbParams() < 1) return Standard_False;
170     Handle(IGESSelect_SelectName) sn = new IGESSelect_SelectName;
171     Handle(TCollection_HAsciiString) name = sn->Name();
172     item = sn;
173     return Standard_True;
174   }
175   if (type.IsEqual("IGESSelect_SelectFromSingleView"))
176     {  item = new IGESSelect_SelectFromSingleView;   return Standard_True;  }
177   if (type.IsEqual("IGESSelect_SelectFromDrawing"))
178     {  item = new IGESSelect_SelectFromDrawing;      return Standard_True;  }
179   if (type.IsEqual("IGESSelect_SelectSingleViewFrom"))
180     {  item = new IGESSelect_SelectSingleViewFrom;   return Standard_True;  }
181   if (type.IsEqual("IGESSelect_SelectDrawingFrom"))
182     {  item = new IGESSelect_SelectDrawingFrom;      return Standard_True;  }
183   if (type.IsEqual("IGESSelect_SelectBypassGroup"))
184     {  item = new IGESSelect_SelectBypassGroup;      return Standard_True;  }
185
186   if (type.IsEqual("IGESSelect_FloatFormat")) {
187     if (file.NbParams() < 2) return Standard_False;
188     Handle(IGESSelect_FloatFormat) ff = new IGESSelect_FloatFormat;
189     Standard_Boolean zerosup;
190     const TCollection_AsciiString zsup = file.ParamValue(1);
191     if (zsup.Length() < 1) return Standard_False;
192     if      (zsup.Value(1) == 'z') zerosup = Standard_True;
193     else if (zsup.Value(1) == 'n') zerosup = Standard_False;
194     else  return Standard_False;
195     ff->SetFormat(file.ParamValue(2).ToCString());
196     ff->SetZeroSuppress(zerosup);
197     if (file.NbParams() >= 5) {
198       //char flotrange[20]; //szv#4:S4163:12Mar99 unused
199       Standard_Real    rangemin, rangemax;
200       rangemin = atof (file.ParamValue(4).ToCString());
201       rangemax = atof (file.ParamValue(5).ToCString());
202       ff->SetFormatForRange (file.ParamValue(3).ToCString(),rangemin,rangemax);
203     }
204     item = ff;
205     return Standard_True;
206   }
207
208   if (type.IsEqual("IGESSelect_UpdateCreationDate"))
209     {  item = new IGESSelect_UpdateCreationDate;     return Standard_True;  }
210   if (type.IsEqual("IGESSelect_UpdateLastChange"))
211     {  item = new IGESSelect_UpdateLastChange;       return Standard_True;  }
212   if (type.IsEqual("IGESSelect_SetVersion5"))
213     {  item = new IGESSelect_SetVersion5;            return Standard_True;  }
214   if (type.IsEqual("IGESSelect_SetGlobalParameter")) {
215     if (file.NbParams() < 2) return Standard_False;
216     Standard_Integer np = atoi(file.ParamValue(1).ToCString());
217     DeclareAndCast(TCollection_HAsciiString,val,file.ItemValue(2));
218     Handle(IGESSelect_SetGlobalParameter) sp =
219       new IGESSelect_SetGlobalParameter(np);
220     sp->SetValue(val);
221     item = sp;
222     return Standard_True;
223   }
224
225   if (type.IsEqual("IGESSelect_AutoCorrect"))
226     {  item = new IGESSelect_AutoCorrect;            return Standard_True;  }
227   if (type.IsEqual("IGESSelect_ComputeStatus"))
228     {  item = new IGESSelect_ComputeStatus;          return Standard_True;  }
229   if (type.IsEqual("IGESSelect_RebuildDrawings"))
230     {  item = new IGESSelect_RebuildDrawings;        return Standard_True;  }
231   if (type.IsEqual("IGESSelect_RebuildGroups"))
232     {  item = new IGESSelect_RebuildGroups;          return Standard_True;  }
233
234   if (type.IsEqual("IGESSelect_ChangeLevelList")) {
235     if (file.NbParams() < 2) return Standard_False;
236     Handle(IGESSelect_ChangeLevelList) cl = new IGESSelect_ChangeLevelList;
237     DeclareAndCast(IFSelect_IntParam,oldpar,file.ItemValue(1));
238     DeclareAndCast(IFSelect_IntParam,newpar,file.ItemValue(2));
239     cl->SetOldNumber(oldpar);
240     cl->SetNewNumber(newpar);
241     item = cl;
242     return Standard_True;
243   }
244   if (type.IsEqual("IGESSelect_ChangeLevelNumber")) {
245     if (file.NbParams() < 2) return Standard_False;
246     Handle(IGESSelect_ChangeLevelNumber) cl = new IGESSelect_ChangeLevelNumber;
247     DeclareAndCast(IFSelect_IntParam,oldpar,file.ItemValue(1));
248     DeclareAndCast(IFSelect_IntParam,newpar,file.ItemValue(2));
249     cl->SetOldNumber(oldpar);
250     cl->SetNewNumber(newpar);
251     item = cl;
252     return Standard_True;
253   }
254
255   if (type.IsEqual("IGESSelect_SplineToBSpline")) {
256     if (file.NbParams() < 1) return Standard_False;
257     Standard_Boolean tryc2;
258     const TCollection_AsciiString tc2 = file.ParamValue(1);
259     if (tc2.Length() < 1) return Standard_False;
260     if      (tc2.Value(1) == 'T') tryc2 = Standard_True;
261     else if (tc2.Value(1) == 'N') tryc2 = Standard_False;
262     else  return Standard_False;
263     item = new IGESSelect_SplineToBSpline(tryc2);
264     return Standard_True;
265   }
266   return Standard_False;
267 }