public MainWindow(VoxelizationInput input) { InitializeComponent(); LinkLabel label = new LinkLabel(); label.Text = "Bug/Feature?"; label.BackColor = Color.Transparent; label.LinkColor = Color.Blue; label.ActiveLinkColor = Color.Blue; label.DisabledLinkColor = Color.Blue; label.VisitedLinkColor = Color.Blue; label.LinkClicked += (s, e) => { Process.Start("mailto:[email protected]?subject=[Oxel] Bug/Feature"); }; ToolStripControlHost host = new ToolStripControlHost(label); host.Alignment = ToolStripItemAlignment.Right; m_menu.SuspendLayout(); m_menu.Items.Add(host); m_menu.ResumeLayout(true); m_gl = new GLControl(new GraphicsMode(32, 24, 8)); m_gl.BackColor = System.Drawing.Color.Black; m_gl.Dock = System.Windows.Forms.DockStyle.Fill; m_gl.Location = new System.Drawing.Point(0, 0); m_gl.Name = "m_gl"; m_gl.Size = new System.Drawing.Size(716, 516); m_gl.TabIndex = 2; m_gl.VSync = false; m_gl.Load += new System.EventHandler(this.m_gl_Load); m_gl.Paint += new System.Windows.Forms.PaintEventHandler(this.m_gl_Paint); m_gl.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.m_gl_KeyPress); m_gl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.m_gl_MouseDown); m_gl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.m_gl_MouseMove); m_gl.MouseUp += new System.Windows.Forms.MouseEventHandler(this.m_gl_MouseUp); m_gl.MouseWheel += new MouseEventHandler(m_gl_MouseWheel); m_gl.Resize += new System.EventHandler(this.m_gl_Resize); this.splitContainer1.Panel1.Controls.Add(this.m_gl); m_operations = new Operations(); m_operations.Initialize(input); m_propertyGrid.SelectedObject = m_operations.Input; m_operations.Input.PropertyChanged += new PropertyChangedEventHandler(vp_PropertyChanged); }
public static void Run(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); ProgramOptions options = new ProgramOptions(); string settingPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Oxel.Settings.xml"); VoxelizationInput input = VoxelizationInput.Load(settingPath); if (input == null) { input = new VoxelizationInput(); } if (args.Contains("-c")) { // Make sure user can see console output AttachConsole(PARENT_PROCESS_ID); input.Clone(options); if (!CommandLineParser.Parse <ProgramOptions>(args, ref options)) { return; } options.Clone(input); } else { CommandLineParser.Parse <VoxelizationInput>(args, ref input); } if (options.UseCommandLine) { Logger.IsCommandLine = true; Operations operations = new Operations(); operations.Initialize(input); operations.Open(options.InputMesh, input.WindingOrder); WaitHandle waitHandle = operations.GenerateOccluder((VoxelizationProgress vp) => { string coverage = String.Format("Volume Coverage : {0,5:0.##}%", (100 * vp.VolumeCoverage)) + " " + String.Format("Silhouette Coverage : {0,5:0.##}%", (100 * vp.SilhouetteCoverage)); if (!String.IsNullOrEmpty(vp.Status)) { Console.WriteLine(vp.Status + "\r\n"); } Console.WriteLine(coverage); }, new Action(() => { })); waitHandle.WaitOne(); operations.Save(options.OutputMesh); } else { using (MainWindow window = new MainWindow(input)) { window.ShowDialog(); } } }