Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / CSharp / IE / Form2.cs
diff --git a/samples/CSharp/IE/Form2.cs b/samples/CSharp/IE/Form2.cs
new file mode 100755 (executable)
index 0000000..2019e8c
--- /dev/null
@@ -0,0 +1,942 @@
+using System;
+using System.Drawing;
+using System.Collections;
+using System.ComponentModel;
+using System.Windows.Forms;
+
+
+namespace IE
+{
+       public enum CurrentAction3d 
+       { 
+               CurAction3d_Nothing,
+               CurAction3d_DynamicZooming,
+               CurAction3d_WindowZooming,
+               CurAction3d_DynamicPanning,
+               CurAction3d_GlobalPanning,
+               CurAction3d_DynamicRotation
+       }
+       public enum CurrentPressedKey
+       {
+               CurPressedKey_Nothing,
+               CurPressedKey_Ctrl,
+               CurPressedKey_Shift
+       }
+       public enum ModelFormat
+       {
+               BREP,
+               CSFDB,
+               STEP,
+               IGES,
+               VRML,
+               STL,
+               IMAGE
+       }
+       /// <summary>
+       /// Summary description for Form2.
+       /// </summary>
+       public class Form2 : System.Windows.Forms.Form
+       {
+               private System.ComponentModel.IContainer components;
+
+               public Form2()
+               {
+                       //
+                       // Required for Windows Form Designer support
+                       //
+                       InitializeComponent();
+
+                       //
+                       // TODO: Add any constructor code after InitializeComponent call
+                       //
+                       myView = new shell();
+                       myCurrentMode=CurrentAction3d.CurAction3d_Nothing;
+                       myCurrentPressedKey=CurrentPressedKey.CurPressedKey_Nothing;
+                       myDegenerateModeIsOn=true;
+                       IsRectVisible=false;
+               }
+
+               /// <summary>
+               /// Clean up any resources being used.
+               /// </summary>
+               protected override void Dispose( bool disposing )
+               {
+                       if( disposing )
+                       {
+                               if(components != null)
+                               {
+                                       components.Dispose();
+                               }
+                       }
+                       base.Dispose( disposing );
+               }
+
+               #region Windows Form Designer generated code
+               /// <summary>
+               /// Required method for Designer support - do not modify
+               /// the contents of this method with the code editor.
+               /// </summary>
+               private void InitializeComponent()
+               {
+                       this.components = new System.ComponentModel.Container();
+                       System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form2));
+                       this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+                       this.myPopup = new System.Windows.Forms.ContextMenu();
+                       this.menuItem1 = new System.Windows.Forms.MenuItem();
+                       this.myPopupObject = new System.Windows.Forms.ContextMenu();
+                       this.ContextWireframe = new System.Windows.Forms.MenuItem();
+                       this.ContextShading = new System.Windows.Forms.MenuItem();
+                       this.ContextColor = new System.Windows.Forms.MenuItem();
+                       this.ContextMaterial = new System.Windows.Forms.MenuItem();
+                       this.ContMatBrass = new System.Windows.Forms.MenuItem();
+                       this.ContMenBronze = new System.Windows.Forms.MenuItem();
+                       this.ContMenCopper = new System.Windows.Forms.MenuItem();
+                       this.ContMenGold = new System.Windows.Forms.MenuItem();
+                       this.ContMenPewt = new System.Windows.Forms.MenuItem();
+                       this.ContMenPlaster = new System.Windows.Forms.MenuItem();
+                       this.ContMenPlastic = new System.Windows.Forms.MenuItem();
+                       this.ContMenSilver = new System.Windows.Forms.MenuItem();
+                       this.ContMenTranc = new System.Windows.Forms.MenuItem();
+                       this.ContMenDelete = new System.Windows.Forms.MenuItem();
+                       // 
+                       // imageList1
+                       // 
+                       this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
+                       this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+                       this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
+                       // 
+                       // myPopup
+                       // 
+                       this.myPopup.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+                                                                                                                                                                       this.menuItem1});
+                       // 
+                       // menuItem1
+                       // 
+                       this.menuItem1.Index = 0;
+                       this.menuItem1.Text = "Change &Background";
+                       this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
+                       // 
+                       // myPopupObject
+                       // 
+                       this.myPopupObject.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+                                                                                                                                                                                 this.ContextWireframe,
+                                                                                                                                                                                 this.ContextShading,
+                                                                                                                                                                                 this.ContextColor,
+                                                                                                                                                                                 this.ContextMaterial,
+                                                                                                                                                                                 this.ContMenTranc,
+                                                                                                                                                                                 this.ContMenDelete});
+                       this.myPopupObject.Popup += new System.EventHandler(this.myPopupObject_Popup);
+                       // 
+                       // ContextWireframe
+                       // 
+                       this.ContextWireframe.Index = 0;
+                       this.ContextWireframe.Text = "Wireframe";
+                       this.ContextWireframe.Click += new System.EventHandler(this.ContextWireframe_Click);
+                       // 
+                       // ContextShading
+                       // 
+                       this.ContextShading.Index = 1;
+                       this.ContextShading.Text = "Shading";
+                       this.ContextShading.Click += new System.EventHandler(this.ContextShading_Click);
+                       // 
+                       // ContextColor
+                       // 
+                       this.ContextColor.Index = 2;
+                       this.ContextColor.Text = "Color";
+                       this.ContextColor.Click += new System.EventHandler(this.ContextColor_Click);
+                       // 
+                       // ContextMaterial
+                       // 
+                       this.ContextMaterial.Index = 3;
+                       this.ContextMaterial.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+                                                                                                                                                                                       this.ContMatBrass,
+                                                                                                                                                                                       this.ContMenBronze,
+                                                                                                                                                                                       this.ContMenCopper,
+                                                                                                                                                                                       this.ContMenGold,
+                                                                                                                                                                                       this.ContMenPewt,
+                                                                                                                                                                                       this.ContMenPlaster,
+                                                                                                                                                                                       this.ContMenPlastic,
+                                                                                                                                                                                       this.ContMenSilver});
+                       this.ContextMaterial.Text = "Material";
+                       // 
+                       // ContMatBrass
+                       // 
+                       this.ContMatBrass.Index = 0;
+                       this.ContMatBrass.Text = "&Brass";
+                       this.ContMatBrass.Click += new System.EventHandler(this.ContMatBrass_Click);
+                       // 
+                       // ContMenBronze
+                       // 
+                       this.ContMenBronze.Index = 1;
+                       this.ContMenBronze.Text = "&Bronze";
+                       this.ContMenBronze.Click += new System.EventHandler(this.ContMenBronze_Click);
+                       // 
+                       // ContMenCopper
+                       // 
+                       this.ContMenCopper.Index = 2;
+                       this.ContMenCopper.Text = "&Copper";
+                       this.ContMenCopper.Click += new System.EventHandler(this.ContMenCopper_Click);
+                       // 
+                       // ContMenGold
+                       // 
+                       this.ContMenGold.Index = 3;
+                       this.ContMenGold.Text = "&Gold";
+                       this.ContMenGold.Click += new System.EventHandler(this.ContMenGold_Click);
+                       // 
+                       // ContMenPewt
+                       // 
+                       this.ContMenPewt.Index = 4;
+                       this.ContMenPewt.Text = "&Pewter";
+                       this.ContMenPewt.Click += new System.EventHandler(this.ContMenPewt_Click);
+                       // 
+                       // ContMenPlaster
+                       // 
+                       this.ContMenPlaster.Index = 5;
+                       this.ContMenPlaster.Text = "&Plaster";
+                       this.ContMenPlaster.Click += new System.EventHandler(this.ContMenPlaster_Click);
+                       // 
+                       // ContMenPlastic
+                       // 
+                       this.ContMenPlastic.Index = 6;
+                       this.ContMenPlastic.Text = "&Plastic";
+                       this.ContMenPlastic.Click += new System.EventHandler(this.ContMenPlastic_Click);
+                       // 
+                       // ContMenSilver
+                       // 
+                       this.ContMenSilver.Index = 7;
+                       this.ContMenSilver.Text = "&Silver";
+                       this.ContMenSilver.Click += new System.EventHandler(this.ContMenSilver_Click);
+                       // 
+                       // ContMenTranc
+                       // 
+                       this.ContMenTranc.Index = 4;
+                       this.ContMenTranc.Text = "&Trancparency";
+                       this.ContMenTranc.Click += new System.EventHandler(this.ContMenTranc_Click);
+                       // 
+                       // ContMenDelete
+                       // 
+                       this.ContMenDelete.Index = 5;
+                       this.ContMenDelete.Text = "&Delete";
+                       this.ContMenDelete.Click += new System.EventHandler(this.ContMenDelete_Click);
+                       // 
+                       // Form2
+                       // 
+                       this.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
+                       this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+                       this.ClientSize = new System.Drawing.Size(320, 261);
+                       this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+                       this.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+                       this.Name = "Form2";
+                       this.Text = "Document";
+                       this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
+                       this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form2_KeyDown);
+                       this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form2_MouseDown);
+                       this.SizeChanged += new System.EventHandler(this.Form2_SizeChanged);
+                       this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form2_MouseUp);
+                       this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form2_KeyUp);
+                       this.Closed += new System.EventHandler(this.Form2_Closed);
+                       this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form2_Paint);
+                       this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form2_MouseMove);
+
+               }
+               #endregion
+
+               private System.Windows.Forms.ImageList imageList1;
+               private System.Windows.Forms.ContextMenu myPopup;
+               private System.Windows.Forms.ContextMenu myPopupObject;
+               private System.Windows.Forms.MenuItem ContextWireframe;
+               private System.Windows.Forms.MenuItem ContextShading;
+               private System.Windows.Forms.MenuItem ContextColor;
+               private System.Windows.Forms.MenuItem ContextMaterial;
+               private System.Windows.Forms.MenuItem ContMatBrass;
+               private System.Windows.Forms.MenuItem ContMenBronze;
+               private System.Windows.Forms.MenuItem ContMenCopper;
+               private System.Windows.Forms.MenuItem ContMenGold;
+               private System.Windows.Forms.MenuItem ContMenPewt;
+               private System.Windows.Forms.MenuItem ContMenPlaster;
+               private System.Windows.Forms.MenuItem ContMenPlastic;
+               private System.Windows.Forms.MenuItem ContMenSilver;
+               private System.Windows.Forms.MenuItem ContMenTranc;
+               private System.Windows.Forms.MenuItem ContMenDelete;
+               private System.Windows.Forms.MenuItem menuItem1;
+
+               private shell myView;
+
+               public void InitV3D()
+               {
+
+                       if( !myView.InitViewer(this.Handle) )
+                               MessageBox.Show("Fatal Error during the graphic initialisation", "Error!", 
+                                       MessageBoxButtons.OK, MessageBoxIcon.Error);
+               }
+
+               public bool ImportBRep(System.String filename)
+               {
+                       return myView.ImportBrep(filename);
+               }
+
+               private void Form2_SizeChanged(object sender, System.EventArgs e)
+               {
+                       myView.UpdateView();
+               }
+
+               private void Form2_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
+               {
+                       myView.RedrawView();
+                       myView.UpdateView();
+               }
+
+               protected CurrentAction3d myCurrentMode;
+               protected CurrentPressedKey myCurrentPressedKey;
+               protected float myCurZoom;// ~ Quantity_Factor
+               protected bool myDegenerateModeIsOn;
+               protected int myXmin;
+               protected int myYmin;
+               protected int myXmax;
+               protected int myYmax;
+               protected int theButtonDownX;
+               protected int theButtonDownY;
+               // for erasing of rectangle
+               protected int theRectDownX;
+               protected int theRectDownY;
+               protected bool IsRectVisible;
+
+               private void Form2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
+               {
+                       switch (e.Button) 
+                       {
+                               case MouseButtons.Left:
+                                       myXmin=e.X;     myYmin=e.Y;
+                                       myXmax=e.X;     myYmax=e.Y;
+                                       if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Ctrl)
+                                               // start the dinamic zooming....
+                                               myCurrentMode=CurrentAction3d.CurAction3d_DynamicZooming;
+                                       else
+                                       {
+                                               switch(myCurrentMode)
+                                               {
+                                                       case CurrentAction3d.CurAction3d_Nothing:
+                                                               if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Shift)
+                                                                       MultiDragEvent(myXmax, myYmax, -1);
+                                                               else
+                                                                       DragEvent(myXmax, myYmax, -1);
+                                                               break;
+                                                       case CurrentAction3d.CurAction3d_DynamicRotation:
+                                                               if (!myDegenerateModeIsOn)
+                                                                       myView.SetDegenerateModeOn();
+                                                               //start the rotation
+                                                               myView.StartRotation(e.X, e.Y);
+                                                               break;
+                                                       case IE.CurrentAction3d.CurAction3d_WindowZooming:
+                                                               this.Cursor=System.Windows.Forms.Cursors.Hand;
+                                                               break;
+                                                       default:
+                                                               break;
+                                               }
+                                       }
+                                       break;
+                               case MouseButtons.Right:
+                                       //MessageBox.Show("right mouse button is down");
+                                       if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Ctrl)
+                                       {
+                                               if (!myDegenerateModeIsOn)
+                                                       myView.SetDegenerateModeOn();
+                                               myView.StartRotation(e.X, e.Y);
+                                       } 
+                                       else
+                                               Popup(e.X, e.Y);
+                                       break;
+                               default:
+                                       break;
+                       }
+
+               }
+
+               private void Form2_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
+               {
+                       if (e.Shift)
+                               myCurrentPressedKey=CurrentPressedKey.CurPressedKey_Shift;
+                       else if (e.Control)
+                               myCurrentPressedKey=CurrentPressedKey.CurPressedKey_Ctrl;
+               }
+
+               private void Form2_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
+               {
+                       myCurrentPressedKey=CurrentPressedKey.CurPressedKey_Nothing;
+               }
+
+               protected void MultiDragEvent(int x, int y, int theState)
+               {
+                       if ( theState==-1) 
+                       {
+                               theButtonDownX=x;
+                               theButtonDownY=y;
+                       } 
+                       else if (theState==1)
+                               myView.ShiftSelect(Math.Min(theButtonDownX,x), Math.Min(theButtonDownY,y),
+                                       Math.Max(theButtonDownX, x), Math.Max(theButtonDownY, y));
+               }
+
+               protected void DragEvent(int x, int y, int theState)
+               {
+                       if (theState==-1) //mouse is down
+                       {
+                               theButtonDownX=x;
+                               theButtonDownY=y;
+                       } 
+                       else if (theState==1) //mouse is up
+                       {
+                               myView.Select(Math.Min(theButtonDownX, x), Math.Min(theButtonDownY,y),
+                                       Math.Max(theButtonDownX, x), Math.Max(theButtonDownY,y));
+                       }
+               }
+
+               protected void Popup(int x, int y)
+               {
+                       System.Drawing.Point p = new Point(x,y);
+                       if (this.myView.IsObjectSelected())
+                               this.myPopupObject.Show(this, p);
+                       else
+                               this.myPopup.Show(this, p);
+               }
+
+               private void Form2_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
+               {
+                       switch(e.Button)
+                       {
+                               case MouseButtons.Left:
+                                       if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Ctrl)
+                                               return;
+                               switch(myCurrentMode)
+                               {
+                                       case CurrentAction3d.CurAction3d_Nothing:
+                                               if( e.X==myXmin && e.Y==myYmin)
+                                               {
+                                                       myXmax=e.X; myYmax=e.Y;
+                                                       if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Shift)
+                                                               MultiInputEvent(myXmax, myYmax);
+                                                       else
+                                                               InputEvent(myXmax, myYmax);
+                                               } 
+                                               else 
+                                               {
+                                                       myXmax=e.X; myYmax=e.Y;
+                                                       DrawRectangle(false);
+                                                       if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Shift)
+                                                               MultiDragEvent(myXmax, myYmax, 1);
+                                                       else
+                                                               DragEvent(myXmax, myYmax, 1);
+                                               }
+                                               break;
+                                       case CurrentAction3d.CurAction3d_DynamicZooming:
+                                               myCurrentMode=CurrentAction3d.CurAction3d_Nothing;
+                                               break;
+                                       case CurrentAction3d.CurAction3d_WindowZooming:
+                                               myXmax=e.X; myYmax=e.Y;
+                                               DrawRectangle(false);
+                                               int ValZWMin = 1;
+                                               if (Math.Abs(myXmax-myXmin)>ValZWMin && Math.Abs(myXmax-myYmax)>ValZWMin)
+                                                       myView.WindowFitAll(myXmin, myYmin, myXmax, myYmax);
+                                               this.Cursor=System.Windows.Forms.Cursors.Default;
+                                               IE.Form1 f = (IE.Form1)this.ParentForm;
+                                               f.SelectionChanged();
+                                               myCurrentMode=CurrentAction3d.CurAction3d_Nothing;
+                                               break;
+                                       case CurrentAction3d.CurAction3d_DynamicPanning:
+                                               myCurrentMode=CurrentAction3d.CurAction3d_Nothing;
+                                               break;
+                                       case CurrentAction3d.CurAction3d_GlobalPanning:
+                                               myView.Place(e.X, e.Y, myCurZoom);
+                                               myCurrentMode=CurrentAction3d.CurAction3d_Nothing;
+                                               break;
+                                       case CurrentAction3d.CurAction3d_DynamicRotation:
+                                               myCurrentMode=CurrentAction3d.CurAction3d_Nothing;
+                                               if (!myDegenerateModeIsOn) 
+                                               {
+                                                       myView.SetDegenerateModeOff();
+                                                       myDegenerateModeIsOn=false;
+                                               } 
+                                               else 
+                                               {
+                                                       myView.SetDegenerateModeOn();
+                                                       myDegenerateModeIsOn=true;
+                                               }
+                                               break;
+                                       default:
+                                               break;
+
+                               }
+                                       break;
+                               case MouseButtons.Right:
+                                       if (!myDegenerateModeIsOn) 
+                                       {
+                                               myView.SetDegenerateModeOff();
+                                               myDegenerateModeIsOn=false;
+                                       } 
+                                       else 
+                                       {
+                                               myView.SetDegenerateModeOn();
+                                               myDegenerateModeIsOn=true;
+                                       }
+                                       break;
+                               default:
+                                       break;
+                       }
+                       
+                       IE.Form1 parent = (IE.Form1)this.ParentForm;
+                       parent.SelectionChanged();
+               }
+
+               protected void MultiInputEvent(int x, int y)
+               {
+                       myView.ShiftSelect();
+               }
+
+               protected void InputEvent(int x, int y)
+               {
+                       myView.Select();
+               }
+
+               private void DrawRectangle(bool draw)
+               {
+                       Graphics gr = Graphics.FromHwnd(this.Handle);
+                       System.Drawing.Pen p = null;
+                       if (this.IsRectVisible ||(!draw))//erase the rect
+                       {
+                               int r=myView.GetBGColR();
+                               int g=myView.GetBGColG();
+                               int b=myView.GetBGColB();
+                               p = new Pen(System.Drawing.Color.FromArgb( r,g, b));
+                               this.IsRectVisible=false;
+                               this.myView.UpdateView();
+                       } 
+                       else if (draw) 
+                       {
+                               p = new Pen(System.Drawing.Color.White);
+                               this.IsRectVisible=true;
+                       }
+                       if ( p == null )
+                               return;
+                       int x=Math.Min(this.myXmin, this.myXmax);
+                       int y=Math.Min(this.myYmin, this.myYmax);
+                       gr.DrawRectangle(p, x, y, Math.Abs(myXmax-myXmin), Math.Abs(myYmax - myYmin));
+                       this.theRectDownX=Math.Max(this.myXmin, this.myXmax);
+                       this.theRectDownY=Math.Max(this.myYmin, this.myYmax);
+               }
+
+               private void Form2_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
+               {
+                       if (e.Button == MouseButtons.Left) //left button is pressed
+                       {
+                               if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Ctrl)
+                               {
+                                       myView.Zoom(myXmax, myYmax, e.X, e.Y);
+                                       myXmax=e.X; myYmax=e.Y;
+                               }
+                               else 
+                               {
+                                       switch (myCurrentMode)
+                                       {
+                                               case CurrentAction3d.CurAction3d_Nothing:
+                                                       DrawRectangle(false);
+                                                       myXmax=e.X; myYmax=e.Y;
+                                                       DrawRectangle(true);
+                                                       break;
+                                               case CurrentAction3d.CurAction3d_DynamicZooming:
+                                                       myView.Zoom(myXmax, myYmax, e.X, e.Y);
+                                                       myXmax=e.X; myYmax=e.Y;
+                                                       break;
+                                               case CurrentAction3d.CurAction3d_WindowZooming:
+                                                       DrawRectangle(false);
+                                                       myXmax=e.X; myYmax=e.Y;
+                                                       DrawRectangle(true);//add brush here
+                                                       break;
+                                               case CurrentAction3d.CurAction3d_DynamicPanning:
+                                                       myView.Pan(e.X-myXmax, myYmax - e.Y);
+                                                       myXmax=e.X; myYmax=e.Y;
+                                                       break;
+                                               case CurrentAction3d.CurAction3d_GlobalPanning:
+                                                       break;
+                                               case CurrentAction3d.CurAction3d_DynamicRotation:
+                                                       myView.Rotation(e.X, e.Y);
+                                                       myView.RedrawView();
+                                                       break;
+                                               default:
+                                                       break;
+                                       }
+                               }
+                       } // e.Button == MouseButtons.Left
+                       else if (e.Button==MouseButtons.Middle)
+                       {
+                               if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Ctrl)
+                               {
+                                       myView.Pan(e.X-myXmax, myYmax - e.Y);
+                                       myXmax=e.X; myYmax=e.Y;
+                               }
+                       }//e.Button=MouseButtons.Middle
+                       else if (e.Button==MouseButtons.Right) //right button is pressed
+                       {
+                               if (myCurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl)
+                                       myView.Rotation(e.X, e.Y);
+                       }
+                       else // no buttons are pressed
+                       {
+                               myXmax=e.X; myYmax=e.Y;
+                               if (myCurrentPressedKey==CurrentPressedKey.CurPressedKey_Shift)
+                                       MultiMoveEvent(e.X, e.Y);
+                               else
+                                       MoveEvent(e.X, e.Y);
+                       }
+                       
+                                                                       
+               }
+
+               protected void MultiMoveEvent(int x, int y)
+               {
+                       myView.MoveTo(x, y);
+               }
+
+               protected void MoveEvent(int x, int y)
+               {
+                       myView.MoveTo(x, y);
+               }
+
+               public void SetDisplayMode(int aMode)
+               {
+                       myView.SetDisplayMode(aMode);
+               }
+
+               public void ChangeColor(bool IsObjectColor)
+               {
+                       int r, g, b;
+                       if (IsObjectColor) 
+                       {
+                               r=myView.GetObjColR();
+                               g=myView.GetObjColG();
+                               b=myView.GetObjColB();
+                       }
+                       else 
+                       {
+                               r=myView.GetBGColR();
+                               g=myView.GetBGColG();
+                               b=myView.GetBGColB();
+                       }
+                       System.Windows.Forms.ColorDialog ColDlg = new ColorDialog();
+                       ColDlg.Color=System.Drawing.Color.FromArgb(r, g, b);
+                       if (ColDlg.ShowDialog() == DialogResult.OK)
+                       {
+                               Color c = ColDlg.Color;
+                               r=c.R;
+                               g=c.G;
+                               b=c.B;
+                               if (IsObjectColor)
+                                       myView.SetColor(r, g, b);
+                               else
+                                       myView.SetBackgroundColor(r, g, b);
+                       }
+                       this.myView.UpdateCurrentViewer();
+
+               }
+
+               public void DeleteObjects()
+               {
+                       myView.EraseObjects();
+               }
+               public void ImportModel(IE.ModelFormat format)
+               {
+                       int theformat=10;
+                       System.Windows.Forms.OpenFileDialog openDialog = new OpenFileDialog();
+   
+                       string DataDir=((Environment.GetEnvironmentVariable("CASROOT")) + "\\..\\data");                                                                        
+
+                       string filter="";
+
+                       switch (format)
+                       {
+                               case ModelFormat.BREP:
+                                       openDialog.InitialDirectory = (DataDir + "\\occ");
+                                       theformat=0;
+                                       filter= "BREP Files (*.brep *.rle)|*.brep; *.rle";
+                                       break;
+                               case ModelFormat.CSFDB:
+                                       theformat=1;
+                                       filter= "CSFDB Files (*.csfdb)|*.csfdb";
+                                       break;
+                               case IE.ModelFormat.STEP:
+                                       openDialog.InitialDirectory = (DataDir + "\\step");
+                                       theformat=2;
+                                       filter="STEP Files (*.stp *.step)|*.stp; *.step";
+                                       break;
+                               case IE.ModelFormat.IGES:
+                                       openDialog.InitialDirectory = (DataDir + "\\iges");
+                                       theformat=3;
+                                       filter="IGES Files (*.igs *.iges)|*.igs; *.iges";
+                                       break;
+                               default:
+                                       break;
+                       }
+                       openDialog.Filter = filter+"|All files (*.*)|*.*" ;
+                       if(openDialog.ShowDialog() == DialogResult.OK)
+                       {
+                               string filename = openDialog.FileName;
+                               if ( filename=="")
+                                       return;
+                               this.Cursor=System.Windows.Forms.Cursors.WaitCursor;
+                               if (!myView.TranslateModel(filename, theformat, true))
+                               MessageBox.Show("Cann't read this file", "Error!", 
+                                       MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                               this.Cursor=System.Windows.Forms.Cursors.Default;
+                       }
+                       this.myView.ZoomAllView();
+               }
+
+               public void ExportModel(ModelFormat format)
+               {
+                       int theformat=10;
+                       System.Windows.Forms.SaveFileDialog  saveDialog = new SaveFileDialog();
+                       string DataDir=((Environment.GetEnvironmentVariable("CASROOT")) + "\\..\\data");        
+                       string filter="";
+                       switch (format)
+                       {
+                               case IE.ModelFormat.BREP:
+                                       saveDialog.InitialDirectory = (DataDir + "\\occ");
+                                       theformat=0;
+                                       filter= "BREP Files (*.brep *.rle)|*.brep; *.rle";
+                                       break;
+                               case IE.ModelFormat.CSFDB:
+                                       theformat=1;
+                                       filter= "CSFDB Files (*.csfdb)|*.csfdb";
+                                       break;
+                               case IE.ModelFormat.STEP:
+                                       saveDialog.InitialDirectory = (DataDir + "\\step");
+                                       theformat=2;
+                                       filter="STEP Files (*.stp *.step)|*.step; *.stp";
+                                       break;
+                               case IE.ModelFormat.IGES:
+                                       saveDialog.InitialDirectory = (DataDir + "\\iges");
+                                       theformat=3;
+                                       filter="IGES Files (*.igs *.iges)| *.iges; *.igs";
+                                       break;
+                               case IE.ModelFormat.VRML:
+                                       saveDialog.InitialDirectory = (DataDir + "\\vrml");
+                                       theformat=4;
+                                       filter="VRML Files (*.vrml)|*.vrml";
+                                       break;
+                               case IE.ModelFormat.STL:
+                                       saveDialog.InitialDirectory = (DataDir + "\\stl");
+                                       theformat=5;
+                                       filter="STL Files (*.stl)|*.stl";
+                                       break;
+                               case IE.ModelFormat.IMAGE:
+                                       saveDialog.InitialDirectory = (DataDir + "\\images");
+                                       theformat=6;
+                                       filter="Images Files (*.bmp *.gif *.xwd)| *.bmp; *.gif; *.xwd";
+                                       break;
+                               default:
+                                       break;
+                       }
+                       saveDialog.Filter = filter;
+                       if(saveDialog.ShowDialog() == DialogResult.OK)
+                       {
+                               string filename = saveDialog.FileName;
+                               if ( filename=="")
+                                       return;
+                               this.Cursor=System.Windows.Forms.Cursors.WaitCursor;
+                               if (!myView.TranslateModel(filename, theformat, false))
+                                       MessageBox.Show("Cann't write this file", "Error!", 
+                                               MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                               this.Cursor=System.Windows.Forms.Cursors.Default;
+                       }
+               }
+
+               private void ContextColor_Click(object sender, System.EventArgs e)
+               {
+                       this.ChangeColor(true);
+               }
+
+               private void menuItem1_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.ChangeColor(false);
+               }
+
+               private void ContextWireframe_Click(object sender, System.EventArgs e)
+               {
+                       this.SetDisplayMode(0);
+                       this.myView.UpdateCurrentViewer();
+                       IE.Form1 parent=(IE.Form1)this.ParentForm;
+                       parent.SelectionChanged();
+               }
+
+               private void ContextShading_Click(object sender, System.EventArgs e)
+               {
+                       this.SetDisplayMode(1);
+                       this.myView.UpdateCurrentViewer();
+                       IE.Form1 parent=(IE.Form1)this.ParentForm;
+                       parent.SelectionChanged();
+               }
+
+               private void ContMenTranc_Click(object sender, System.EventArgs e)
+               {
+                       IE.TransparencyDialog dlg = new TransparencyDialog();
+                       dlg.View=this.myView;
+                       dlg.ShowDialog(this);
+               }
+
+               private void ContMenDelete_Click(object sender, System.EventArgs e)
+               {
+                       this.DeleteObjects();
+               }
+
+               private void ContMatBrass_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(0);
+               }
+
+               private void ContMenBronze_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(1);
+               }
+
+               private void ContMenCopper_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(2);
+               }
+
+               private void ContMenGold_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(3);
+               }
+
+               private void ContMenPewt_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(4);
+               }
+
+               private void ContMenPlaster_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(5);
+               }
+
+               private void ContMenPlastic_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(6);
+               }
+
+               private void ContMenSilver_Click(object sender, System.EventArgs e)
+               {
+                       this.myView.UpdateCurrentViewer();
+                       this.myView.SetMaterial(7);
+               }
+
+               private void toolBar1_MouseHover(object sender, System.EventArgs e)
+               {
+                       IE.Form1 parent=(IE.Form1)this.ParentForm;
+                       parent.StatusBar.Text="View toolbar";
+
+               }
+
+               private void toolBar1_MouseLeave(object sender, System.EventArgs e)
+               {
+                       IE.Form1 parent=(IE.Form1)this.ParentForm;
+                       parent.StatusBar.Text="";
+               }
+
+               private void myPopupObject_Popup(object sender, System.EventArgs e)
+               {
+                       int mode=this.myView.DisplayMode();
+                       switch (mode)
+                       {
+                               case -1:
+                                        break;
+                               case 0:
+                                       this.ContextWireframe.Enabled=false;
+                                       this.ContextShading.Enabled=true;
+                                       this.ContMenTranc.Enabled=false;
+                                       break;
+                               case 1:
+                                       this.ContextShading.Enabled=false;
+                                       this.ContextWireframe.Enabled=true;
+                                       this.ContMenTranc.Enabled=true;
+                                       break;
+                               case 10:
+                                       this.ContextShading.Enabled=true;;
+                                       this.ContextWireframe.Enabled=true;
+                                       this.ContMenTranc.Enabled=true;
+                                       break;
+                               default:
+                                       break;
+
+                       }
+               }
+
+               public shell View
+               {
+                       get
+                       {
+                               return this.myView;
+                       }
+                       set
+                       {
+                               this.myView=value;
+                       }
+               }
+
+               public void InitView()
+               {
+                       this.myView.InitOCCViewer();
+               }
+
+               public void SetContext(shell View)
+               {
+                       this.myView.SetAISContext(View);
+               }
+
+               private void Form2_Closed(object sender, System.EventArgs e)
+               {
+                       IE.Form1 parent = (IE.Form1) this.ParentForm;
+                       parent.OnFileClose();
+               }
+
+               public CurrentAction3d Mode
+               {
+                       get
+                       {
+                               return this.myCurrentMode;
+                       }
+                       set
+                       {
+                               this.myCurrentMode=value;
+                       }
+               }
+
+               public float Zoom
+               {
+                       set
+                       {
+                               this.myCurZoom=value;
+                       }
+               }
+
+               public bool DegenerateMode
+               {
+                       get
+                       {
+                               return this.myDegenerateModeIsOn;
+                       }
+                       set
+                       {
+                               this.myDegenerateModeIsOn=value;
+                       }
+               }
+
+       }
+
+}
\ No newline at end of file