Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
                }
            }
        }