Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / CSharp / shell / shell.h
1 #pragma once
2 #using <mscorlib.dll>
3 #include "OCCViewer.h"
4 #include "StdAfx.h"
5
6 public ref class shell
7 {
8
9 private:
10         OCCViewer* myOCCViewer;
11 public:
12
13         bool InitViewer(System::IntPtr wnd)
14         {
15                 if (myOCCViewer != NULL)
16                         return myOCCViewer->InitViewer(wnd.ToPointer());
17                 else
18                         return false;
19         }
20
21         bool ImportBrep(System::String^ filename)
22         {
23                 if (myOCCViewer == NULL)
24                         return false;
25                 int length = filename->Length;
26                 char * fname = new char[length+1];
27                 for(int i = 0; i<length; i++)
28                         fname[i] = (char)filename->ToCharArray()[i];
29
30                 fname[length] = '\0';
31                 bool res = myOCCViewer->ImportBRep(fname);
32                 delete [] fname;
33                 return res;
34         }
35
36         void RedrawView(void)
37         {
38                 if (myOCCViewer != NULL)
39                         myOCCViewer->RedrawView();
40         }
41
42         void UpdateView(void)
43         {
44                 if (myOCCViewer != NULL)
45                         myOCCViewer->UpdateView();
46         }
47
48         void SetDegenerateModeOn(void)
49         {
50                 if (myOCCViewer != NULL)
51                         myOCCViewer->SetDegenerateModeOn();
52         }
53
54         void SetDegenerateModeOff(void)
55         {
56                 if (myOCCViewer != NULL)
57                         myOCCViewer->SetDegenerateModeOff();
58         }
59
60         void WindowFitAll(int Xmin, int Ymin, int Xmax, int Ymax)
61         {
62                 if (myOCCViewer != NULL)
63                         myOCCViewer->WindowFitAll(Xmin, Ymin, Xmax, Ymax);
64         }
65
66         void Place(int x, int y, float zoomFactor)
67         {       
68                 if (myOCCViewer != NULL)
69                         myOCCViewer->Place(x, y, zoomFactor);
70         }
71
72         void Zoom(int x1, int y1, int x2, int y2)
73         {
74                 if (myOCCViewer != NULL)
75                         myOCCViewer->Zoom(x1, y1, x2, y2);
76         }
77
78         void Pan(int x, int y)
79         {
80                 if (myOCCViewer != NULL)
81                         myOCCViewer->Pan(x, y);
82         }
83
84         void Rotation(int x, int y)
85         {
86                 if (myOCCViewer != NULL)
87                         myOCCViewer->Rotation(x, y);
88         }
89
90         void StartRotation(int x, int y)
91         {
92                 if (myOCCViewer != NULL)
93                         myOCCViewer->StartRotation(x, y);
94         }
95
96         void Select(int x1, int y1, int x2, int y2)
97         {
98                 if (myOCCViewer != NULL)
99                         myOCCViewer->Select(x1, y1, x2, y2);
100         }
101
102         void Select(void)
103         {
104                 if (myOCCViewer != NULL)
105                         myOCCViewer->Select();
106         }
107
108         void MoveTo(int x, int y)
109         {
110                 if (myOCCViewer != NULL)
111                         myOCCViewer->MoveTo(x, y);
112         }
113
114         void ShiftSelect(int x1, int y1, int x2, int y2)
115         {
116                 if (myOCCViewer != NULL)
117                         myOCCViewer->ShiftSelect(x1, y1, x2, y2);
118         }
119
120         void ShiftSelect(void)
121         {
122                 if (myOCCViewer != NULL)
123                         myOCCViewer->ShiftSelect();
124         }
125
126         int GetBGColR(void)
127         {
128                 int r, b, g;
129                 if (myOCCViewer != NULL)
130                         myOCCViewer->BackgroundColor(r,g,b);
131                 return r;
132         }
133
134         int GetBGColG(void)
135         {
136                 int r, b, g;
137                 if (myOCCViewer != NULL)
138                         myOCCViewer->BackgroundColor(r,g,b);
139                 return g;
140         }
141
142         int GetBGColB(void)
143         {
144                 int r, b, g;
145                 if (myOCCViewer != NULL)
146                         myOCCViewer->BackgroundColor(r,g,b);
147                 return b;
148         }
149
150         void UpdateCurrentViewer(void)
151         {
152                 if (myOCCViewer != NULL)
153                         myOCCViewer->UpdateCurrentViewer();
154         }
155
156         void FrontView(void)
157         {
158                 if (myOCCViewer != NULL)
159                         myOCCViewer->FrontView();
160         }
161
162         void TopView(void)
163         {
164                 if (myOCCViewer != NULL)
165                         myOCCViewer->TopView();
166         }
167
168         void LeftView(void)
169         {
170                 if (myOCCViewer != NULL)
171                         myOCCViewer->LeftView();
172         }
173
174         void BackView(void)
175         {
176                 if (myOCCViewer != NULL)
177                         myOCCViewer->BackView();
178         }
179
180         void RightView(void)
181         {
182                 if (myOCCViewer != NULL)
183                         myOCCViewer->RightView();
184         }
185
186         void BottomView(void)
187         {
188                 if (myOCCViewer != NULL)
189                         myOCCViewer->BottomView();
190         }
191
192         void AxoView(void)
193         {
194                 if (myOCCViewer != NULL)
195                         myOCCViewer->AxoView();
196         }
197
198         float Scale(void)
199         {
200                 if (myOCCViewer != NULL)
201                         return myOCCViewer->Scale();
202                 else
203                         return -1;
204         }
205
206         void ZoomAllView(void)
207         {
208                 if (myOCCViewer != NULL)
209                         myOCCViewer->ZoomAllView();
210         }
211
212         void Reset(void)
213         {
214                 if (myOCCViewer != NULL)
215                         myOCCViewer->ResetView();
216         }
217
218         void SetDisplayMode(int aMode)
219         {
220                 if (myOCCViewer != NULL)
221                         myOCCViewer->SetDisplayMode(aMode);
222         }
223
224         void SetColor(int r, int g, int b)
225         {
226                 if (myOCCViewer != NULL)
227                         myOCCViewer->SetColor(r, g, b);
228         }
229
230         int GetObjColR(void)
231         {
232                 int r, g, b;
233                 if (myOCCViewer != NULL)
234                         myOCCViewer->ObjectColor(r, g, b);
235                 return r;
236         }
237
238         int GetObjColG(void)
239         {
240                 int r, g, b;
241                 if (myOCCViewer != NULL)
242                         myOCCViewer->ObjectColor(r, g, b);
243                 return g;
244         }
245
246         int GetObjColB(void)
247         {
248                 int r, g, b;
249                 if (myOCCViewer != NULL)
250                         myOCCViewer->ObjectColor(r, g, b);
251                 return b;
252         }
253
254         void SetBackgroundColor(int r, int g, int b)
255         {
256                 if (myOCCViewer != NULL)
257                         myOCCViewer->SetBackgroundColor(r, g, b);
258         }
259
260         void EraseObjects(void)
261         {
262                 if (myOCCViewer != NULL)
263                         myOCCViewer->EraseObjects();
264         }
265
266         float GetOCCVersion(void)
267         {
268                 if (myOCCViewer == NULL)
269                         return 0.0;
270                 else
271                         return myOCCViewer->GetVersion();
272         }
273
274         void SetMaterial(int theMaterial)
275         {
276                 if (myOCCViewer != NULL)
277                         myOCCViewer->SetMaterial(theMaterial);
278         }
279
280         void SetTransparency(int TheTrans)
281         {
282                 if (myOCCViewer != NULL)
283                         myOCCViewer->SetTransparency(TheTrans);
284         }
285
286         bool TranslateModel(System::String^ filename, int format, bool IsImport)
287         {
288                 if (myOCCViewer == NULL)
289                         return false;
290                 int length = filename->Length;
291                 char * fname = new char[length+1];
292                 for(int i = 0; i<length; i++)
293       fname[i] = (char)filename->ToCharArray()[i];
294
295                 fname[length] = '\0';
296                 bool res;
297                 if (IsImport)
298                 {
299                         switch(format)
300                         {
301                                 case 0:
302                                         res=myOCCViewer->ImportBRep(fname);
303                                         break;
304                                 case 1:
305                                         res=myOCCViewer->ImportCsfdb(fname);
306                                         break;
307                                 case 2:
308                                         res=myOCCViewer->ImportStep(fname);
309                                         break;
310                                 case 3:
311                                         res=myOCCViewer->ImportIges(fname);
312                                         break;
313                                 default:
314                                         res=false;
315                         }
316                 } else 
317                 {
318                         switch(format)
319                         {
320                                 case 0:
321                                         res=myOCCViewer->ExportBRep(fname);
322                                         break;
323                                 case 2:
324                                         res=myOCCViewer->ExpotStep(fname);
325                                         break;
326                                 case 3:
327                                         res=myOCCViewer->ExportIges(fname);
328                                         break;
329                                 case 4:
330                                         res=myOCCViewer->ExportVrml(fname);
331                                         break;
332                                 case 5:
333                                         res=myOCCViewer->ExportStl(fname);
334                                         break;
335                                 case 6:
336                                         res=myOCCViewer->Dump(fname);
337                                 default:
338                                         res=false;
339                         }
340                 }
341                 delete [] fname;
342                 return res;
343         }
344
345         bool IsObjectSelected(void)
346         {
347                 if (myOCCViewer != NULL)
348                         return myOCCViewer->IsObjectSelected();
349                 else
350                         return false;
351         }
352
353         int DisplayMode(void)
354         {
355                 if (myOCCViewer != NULL)
356                         return myOCCViewer->DisplayMode();
357                 else return -1;
358         }
359
360         void CreateNewView(System::IntPtr wnd)
361         {
362                 if (myOCCViewer != NULL)
363                         myOCCViewer->CreateNewView(wnd.ToPointer());
364         }
365
366         bool SetAISContext(shell^ v)
367         {
368                 if (myOCCViewer != NULL)
369                         return this->myOCCViewer->SetAISContext(v->GetOCCViewer());
370                 else
371                         return false;
372         }
373
374         OCCViewer* GetOCCViewer(void)
375         {
376                 return myOCCViewer;
377         }
378
379         void InitOCCViewer(void)
380         {
381                 myOCCViewer = new OCCViewer();
382         }
383
384         int CharToInt(System::String^ symbol)
385         {
386                 if (myOCCViewer == NULL)
387                         return -1;
388     char s = (char)symbol->ToCharArray()[0];
389                 return myOCCViewer->CharToInt(s);
390         }
391 };