diff --git a/Triangle.NET/TestApp/Controls/DarkCheckBox.cs b/Triangle.NET/TestApp/Controls/DarkCheckBox.cs index 00942b2..3dae1cd 100644 --- a/Triangle.NET/TestApp/Controls/DarkCheckBox.cs +++ b/Triangle.NET/TestApp/Controls/DarkCheckBox.cs @@ -11,6 +11,7 @@ namespace MeshExplorer.Controls using System.Text; using System.Drawing; using System.Drawing.Drawing2D; + using System.Drawing.Text; using System.Windows.Forms; /// @@ -56,7 +57,7 @@ namespace MeshExplorer.Controls enum eButtonState { Normal, MouseOver, Down } eButtonState m_State = eButtonState.Normal; - // make sure the control is invalidated(repainted) when the text is changed + // Make sure the control is invalidated when the text is changed. public override string Text { get { return base.Text; } @@ -72,14 +73,17 @@ namespace MeshExplorer.Controls set { isChecked = value; this.Invalidate(); } } - //-------------------------------------------------------------------------------- + /// + /// Constructor. + /// public DarkCheckBox() { this.BackColor = Color.FromArgb(76, 76, 76); InitializeComponent(); } + + #region Control overrides - //-------------------------------------------------------------------------------- protected override void OnPaint(PaintEventArgs e) { //base.OnPaint(e); @@ -146,25 +150,24 @@ namespace MeshExplorer.Controls e.Graphics.DrawRectangle(brushBorder, newRect); } - e.Graphics.SmoothingMode = SmoothingMode.HighQuality; - e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; - - if (this.isChecked) - { - e.Graphics.DrawLine(checkMark, 4, newRect.Bottom - boxSize / 2, newRect.Left + boxSize / 2.5f, newRect.Bottom - 2); - e.Graphics.DrawLine(checkMark, newRect.Left + boxSize / 2.6f, newRect.Bottom - 2, newRect.Right, newRect.Top); - } + e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; SizeF szL = e.Graphics.MeasureString(this.Text, base.Font, this.Width); e.Graphics.DrawString(this.Text, base.Font, new SolidBrush(text_color), boxSize + 4, (this.Height - szL.Height) / 2); + if (this.isChecked) + { + e.Graphics.SmoothingMode = SmoothingMode.HighQuality; + e.Graphics.DrawLine(checkMark, 4, newRect.Bottom - boxSize / 2, newRect.Left + boxSize / 2.5f, newRect.Bottom - 2); + e.Graphics.DrawLine(checkMark, newRect.Left + boxSize / 2.6f, newRect.Bottom - 2, newRect.Right, newRect.Top); + } + if (brushOuter != null) brushOuter.Dispose(); if (brushInner != null) brushInner.Dispose(); if (brushBorder != null) brushBorder.Dispose(); if (checkMark != null) checkMark.Dispose(); } - //-------------------------------------------------------------------------------- protected override void OnMouseLeave(System.EventArgs e) { m_State = eButtonState.Normal; @@ -172,7 +175,6 @@ namespace MeshExplorer.Controls base.OnMouseLeave(e); } - //-------------------------------------------------------------------------------- protected override void OnMouseEnter(System.EventArgs e) { m_State = eButtonState.MouseOver; @@ -180,7 +182,6 @@ namespace MeshExplorer.Controls base.OnMouseEnter(e); } - //-------------------------------------------------------------------------------- protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e) { m_State = eButtonState.MouseOver; @@ -188,7 +189,6 @@ namespace MeshExplorer.Controls base.OnMouseUp(e); } - //-------------------------------------------------------------------------------- protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) { m_State = eButtonState.Down; @@ -202,5 +202,7 @@ namespace MeshExplorer.Controls this.Invalidate(); base.OnClick(e); } + + #endregion } } diff --git a/Triangle.NET/TestApp/FormExport.cs b/Triangle.NET/TestApp/FormExport.cs index 37fb1cb..370ca8d 100644 --- a/Triangle.NET/TestApp/FormExport.cs +++ b/Triangle.NET/TestApp/FormExport.cs @@ -37,6 +37,7 @@ namespace MeshExplorer public string ImageName { get { return darkTextBox1.Text; } + set { darkTextBox1.Text = value; } } protected override void OnPaint(PaintEventArgs e) diff --git a/Triangle.NET/TestApp/FormGenerator.Designer.cs b/Triangle.NET/TestApp/FormGenerator.Designer.cs index afa773b..efc2b44 100644 --- a/Triangle.NET/TestApp/FormGenerator.Designer.cs +++ b/Triangle.NET/TestApp/FormGenerator.Designer.cs @@ -218,6 +218,7 @@ this.ShowInTaskbar = false; this.Text = "Input Generator"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormGenerator_FormClosing); + this.Load += new System.EventHandler(this.FormGenerator_Load); this.ResumeLayout(false); } diff --git a/Triangle.NET/TestApp/FormGenerator.cs b/Triangle.NET/TestApp/FormGenerator.cs index 6d82551..213f9e0 100644 --- a/Triangle.NET/TestApp/FormGenerator.cs +++ b/Triangle.NET/TestApp/FormGenerator.cs @@ -15,11 +15,6 @@ namespace MeshExplorer public FormGenerator() { InitializeComponent(); - - darkListBox1.Items.Add(new RandomPoints()); - darkListBox1.Items.Add(new RandomPointsCircle()); - darkListBox1.Items.Add(new StarInBox()); - darkListBox1.Items.Add(new RingPolygon()); } private void UpdateControls() @@ -132,5 +127,15 @@ namespace MeshExplorer lbParam3Val.Text = currentGenerator.ParameterDescription(3, sliderParam3.Value); } } + + private void FormGenerator_Load(object sender, EventArgs e) + { + darkListBox1.Items.Add(new RandomPoints()); + darkListBox1.Items.Add(new RandomPointsCircle()); + darkListBox1.Items.Add(new StarInBox()); + darkListBox1.Items.Add(new RingPolygon()); + + darkListBox1.SelectedIndex = 0; + } } } diff --git a/Triangle.NET/TestApp/FormMain.Designer.cs b/Triangle.NET/TestApp/FormMain.Designer.cs index a73a36f..1d865ff 100644 --- a/Triangle.NET/TestApp/FormMain.Designer.cs +++ b/Triangle.NET/TestApp/FormMain.Designer.cs @@ -29,18 +29,34 @@ private void InitializeComponent() { this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.menuFile = new System.Windows.Forms.ToolStripMenuItem(); + this.menuFileOpen = new System.Windows.Forms.ToolStripMenuItem(); + this.menuFileSave = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.menuFileExport = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.menuFileQuit = new System.Windows.Forms.ToolStripMenuItem(); + this.menuView = new System.Windows.Forms.ToolStripMenuItem(); + this.menuViewVoronoi = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.menuViewLog = new System.Windows.Forms.ToolStripMenuItem(); + this.menuTools = new System.Windows.Forms.ToolStripMenuItem(); + this.menuToolsGen = new System.Windows.Forms.ToolStripMenuItem(); + this.menuToolsCheck = new System.Windows.Forms.ToolStripMenuItem(); + this.btnSmooth = new MeshExplorer.Controls.DarkButton(); this.flatTabControl1 = new MeshExplorer.Controls.DarkTabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); - this.btnSmooth = new MeshExplorer.Controls.DarkButton(); this.lbMaxArea = new System.Windows.Forms.Label(); - this.btnMesh = new MeshExplorer.Controls.DarkButton(); this.label6 = new System.Windows.Forms.Label(); this.lbMinAngle = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); this.label8 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.slMaxArea = new MeshExplorer.Controls.DarkSlider(); this.slMinAngle = new MeshExplorer.Controls.DarkSlider(); + this.cbConformDel = new MeshExplorer.Controls.DarkCheckBox(); this.cbConvex = new MeshExplorer.Controls.DarkCheckBox(); this.cbQuality = new MeshExplorer.Controls.DarkCheckBox(); this.tabPage2 = new System.Windows.Forms.TabPage(); @@ -85,31 +101,17 @@ this.label18 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label(); this.lbShortcuts = new System.Windows.Forms.Label(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileMenu = new System.Windows.Forms.ToolStripMenuItem(); - this.fileMenuOpen = new System.Windows.Forms.ToolStripMenuItem(); - this.fileMenuSave = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.menuFileExport = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.fileMenuQuit = new System.Windows.Forms.ToolStripMenuItem(); - this.viewMenu = new System.Windows.Forms.ToolStripMenuItem(); - this.viewMenuVoronoi = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.viewMenuLog = new System.Windows.Forms.ToolStripMenuItem(); - this.toolsMenu = new System.Windows.Forms.ToolStripMenuItem(); - this.toolsMenuGen = new System.Windows.Forms.ToolStripMenuItem(); - this.toolsMenuCheck = new System.Windows.Forms.ToolStripMenuItem(); + this.btnMesh = new MeshExplorer.Controls.DarkButton(); this.renderControl1 = new MeshExplorer.Controls.RendererControl(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); + this.menuStrip1.SuspendLayout(); this.flatTabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.tabPage2.SuspendLayout(); this.tabPage3.SuspendLayout(); - this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // // splitContainer1 @@ -124,8 +126,10 @@ // splitContainer1.Panel1 // this.splitContainer1.Panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(76)))), ((int)(((byte)(76))))); + this.splitContainer1.Panel1.Controls.Add(this.btnSmooth); this.splitContainer1.Panel1.Controls.Add(this.flatTabControl1); this.splitContainer1.Panel1.Controls.Add(this.menuStrip1); + this.splitContainer1.Panel1.Controls.Add(this.btnMesh); // // splitContainer1.Panel2 // @@ -136,77 +140,193 @@ this.splitContainer1.SplitterWidth = 1; this.splitContainer1.TabIndex = 0; // + // menuStrip1 + // + this.menuStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.menuStrip1.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.menuStrip1.GripMargin = new System.Windows.Forms.Padding(0); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuFile, + this.menuView, + this.menuTools}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(0); + this.menuStrip1.Size = new System.Drawing.Size(280, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // menuFile + // + this.menuFile.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.menuFile.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.menuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuFileOpen, + this.menuFileSave, + this.toolStripSeparator3, + this.menuFileExport, + this.toolStripSeparator2, + this.menuFileQuit}); + this.menuFile.Name = "menuFile"; + this.menuFile.Size = new System.Drawing.Size(37, 24); + this.menuFile.Text = "File"; + // + // menuFileOpen + // + this.menuFileOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.menuFileOpen.Name = "menuFileOpen"; + this.menuFileOpen.Size = new System.Drawing.Size(141, 22); + this.menuFileOpen.Text = "Open"; + this.menuFileOpen.Click += new System.EventHandler(this.menuFileOpen_Click); + // + // menuFileSave + // + this.menuFileSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.menuFileSave.Enabled = false; + this.menuFileSave.Name = "menuFileSave"; + this.menuFileSave.Size = new System.Drawing.Size(141, 22); + this.menuFileSave.Text = "Save"; + this.menuFileSave.Click += new System.EventHandler(this.menuFileSave_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(138, 6); + // + // menuFileExport + // + this.menuFileExport.Enabled = false; + this.menuFileExport.Name = "menuFileExport"; + this.menuFileExport.Size = new System.Drawing.Size(141, 22); + this.menuFileExport.Text = "Export Image"; + this.menuFileExport.Click += new System.EventHandler(this.menuFileExport_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(138, 6); + // + // menuFileQuit + // + this.menuFileQuit.Name = "menuFileQuit"; + this.menuFileQuit.Size = new System.Drawing.Size(141, 22); + this.menuFileQuit.Text = "Quit"; + this.menuFileQuit.Click += new System.EventHandler(this.menuFileQuit_Click); + // + // menuView + // + this.menuView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuViewVoronoi, + this.toolStripSeparator1, + this.menuViewLog}); + this.menuView.Name = "menuView"; + this.menuView.Size = new System.Drawing.Size(44, 24); + this.menuView.Text = "View"; + // + // menuViewVoronoi + // + this.menuViewVoronoi.Enabled = false; + this.menuViewVoronoi.Name = "menuViewVoronoi"; + this.menuViewVoronoi.Size = new System.Drawing.Size(162, 22); + this.menuViewVoronoi.Text = "Voronoi Diagram"; + this.menuViewVoronoi.Click += new System.EventHandler(this.menuViewVoronoi_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(159, 6); + // + // menuViewLog + // + this.menuViewLog.Name = "menuViewLog"; + this.menuViewLog.Size = new System.Drawing.Size(162, 22); + this.menuViewLog.Text = "Show Log"; + this.menuViewLog.Click += new System.EventHandler(this.menuViewLog_Click); + // + // menuTools + // + this.menuTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuToolsGen, + this.menuToolsCheck}); + this.menuTools.Name = "menuTools"; + this.menuTools.Size = new System.Drawing.Size(46, 24); + this.menuTools.Text = "Tools"; + // + // menuToolsGen + // + this.menuToolsGen.Name = "menuToolsGen"; + this.menuToolsGen.Size = new System.Drawing.Size(157, 22); + this.menuToolsGen.Text = "Input Generator"; + this.menuToolsGen.Click += new System.EventHandler(this.menuToolsGenerator_Click); + // + // menuToolsCheck + // + this.menuToolsCheck.Enabled = false; + this.menuToolsCheck.Name = "menuToolsCheck"; + this.menuToolsCheck.Size = new System.Drawing.Size(157, 22); + this.menuToolsCheck.Text = "Check Mesh"; + this.menuToolsCheck.Click += new System.EventHandler(this.menuToolsCheck_Click); + // + // btnSmooth + // + this.btnSmooth.Enabled = false; + this.btnSmooth.Location = new System.Drawing.Point(146, 44); + this.btnSmooth.Name = "btnSmooth"; + this.btnSmooth.Size = new System.Drawing.Size(130, 23); + this.btnSmooth.TabIndex = 12; + this.btnSmooth.Text = "Smooth"; + this.btnSmooth.UseVisualStyleBackColor = true; + this.btnSmooth.Click += new System.EventHandler(this.btnSmooth_Click); + // // flatTabControl1 // this.flatTabControl1.Alignment = System.Windows.Forms.TabAlignment.Bottom; this.flatTabControl1.Controls.Add(this.tabPage1); this.flatTabControl1.Controls.Add(this.tabPage2); this.flatTabControl1.Controls.Add(this.tabPage3); - this.flatTabControl1.Location = new System.Drawing.Point(0, 27); + this.flatTabControl1.Location = new System.Drawing.Point(0, 73); this.flatTabControl1.Name = "flatTabControl1"; this.flatTabControl1.SelectedIndex = 0; - this.flatTabControl1.Size = new System.Drawing.Size(280, 584); + this.flatTabControl1.Size = new System.Drawing.Size(280, 538); this.flatTabControl1.TabIndex = 1; // // tabPage1 // this.tabPage1.BackColor = System.Drawing.Color.DimGray; - this.tabPage1.Controls.Add(this.btnSmooth); this.tabPage1.Controls.Add(this.lbMaxArea); - this.tabPage1.Controls.Add(this.btnMesh); this.tabPage1.Controls.Add(this.label6); this.tabPage1.Controls.Add(this.lbMinAngle); + this.tabPage1.Controls.Add(this.label23); this.tabPage1.Controls.Add(this.label9); this.tabPage1.Controls.Add(this.label8); this.tabPage1.Controls.Add(this.label5); this.tabPage1.Controls.Add(this.slMaxArea); this.tabPage1.Controls.Add(this.slMinAngle); + this.tabPage1.Controls.Add(this.cbConformDel); this.tabPage1.Controls.Add(this.cbConvex); this.tabPage1.Controls.Add(this.cbQuality); this.tabPage1.ForeColor = System.Drawing.Color.DarkGray; this.tabPage1.Location = new System.Drawing.Point(4, 4); this.tabPage1.Name = "tabPage1"; - this.tabPage1.Size = new System.Drawing.Size(272, 555); + this.tabPage1.Size = new System.Drawing.Size(272, 509); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "Mesh Control"; // - // btnSmooth - // - this.btnSmooth.Enabled = false; - this.btnSmooth.Location = new System.Drawing.Point(144, 16); - this.btnSmooth.Name = "btnSmooth"; - this.btnSmooth.Size = new System.Drawing.Size(115, 23); - this.btnSmooth.TabIndex = 12; - this.btnSmooth.Text = "Smooth"; - this.btnSmooth.UseVisualStyleBackColor = true; - this.btnSmooth.Click += new System.EventHandler(this.btnSmooth_Click); - // // lbMaxArea // this.lbMaxArea.AutoSize = true; this.lbMaxArea.ForeColor = System.Drawing.Color.White; - this.lbMaxArea.Location = new System.Drawing.Point(227, 191); + this.lbMaxArea.Location = new System.Drawing.Point(227, 66); this.lbMaxArea.Name = "lbMaxArea"; this.lbMaxArea.Size = new System.Drawing.Size(13, 13); this.lbMaxArea.TabIndex = 14; this.lbMaxArea.Text = "0"; // - // btnMesh - // - this.btnMesh.Enabled = false; - this.btnMesh.Location = new System.Drawing.Point(11, 16); - this.btnMesh.Name = "btnMesh"; - this.btnMesh.Size = new System.Drawing.Size(115, 23); - this.btnMesh.TabIndex = 12; - this.btnMesh.Text = "Triangulate"; - this.btnMesh.UseVisualStyleBackColor = true; - this.btnMesh.Click += new System.EventHandler(this.btnMesh_Click); - // // label6 // this.label6.AutoSize = true; this.label6.ForeColor = System.Drawing.Color.White; - this.label6.Location = new System.Drawing.Point(8, 126); + this.label6.Location = new System.Drawing.Point(8, 65); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(81, 13); this.label6.TabIndex = 14; @@ -216,17 +336,28 @@ // this.lbMinAngle.AutoSize = true; this.lbMinAngle.ForeColor = System.Drawing.Color.White; - this.lbMinAngle.Location = new System.Drawing.Point(227, 169); + this.lbMinAngle.Location = new System.Drawing.Point(227, 44); this.lbMinAngle.Name = "lbMinAngle"; this.lbMinAngle.Size = new System.Drawing.Size(19, 13); this.lbMinAngle.TabIndex = 14; this.lbMinAngle.Text = "20"; + // + // label23 + // + this.label23.BackColor = System.Drawing.Color.DimGray; + this.label23.ForeColor = System.Drawing.Color.DarkGray; + this.label23.Location = new System.Drawing.Point(8, 152); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(251, 33); + this.label23.TabIndex = 14; + this.label23.Text = "Ensure that all triangles in the mesh are truly Delaunay, and not just constraine" + + "d Delaunay."; // // label9 // this.label9.BackColor = System.Drawing.Color.DimGray; this.label9.ForeColor = System.Drawing.Color.DarkGray; - this.label9.Location = new System.Drawing.Point(8, 231); + this.label9.Location = new System.Drawing.Point(8, 216); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(258, 33); this.label9.TabIndex = 14; @@ -236,7 +367,7 @@ // this.label8.BackColor = System.Drawing.Color.DimGray; this.label8.ForeColor = System.Drawing.Color.DarkGray; - this.label8.Location = new System.Drawing.Point(8, 150); + this.label8.Location = new System.Drawing.Point(8, 89); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(258, 33); this.label8.TabIndex = 14; @@ -247,7 +378,7 @@ // this.label5.AutoSize = true; this.label5.ForeColor = System.Drawing.Color.White; - this.label5.Location = new System.Drawing.Point(8, 104); + this.label5.Location = new System.Drawing.Point(8, 43); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(87, 13); this.label5.TabIndex = 14; @@ -257,7 +388,7 @@ // this.slMaxArea.BackColor = System.Drawing.Color.Transparent; this.slMaxArea.CriticalPercent = ((uint)(0u)); - this.slMaxArea.Location = new System.Drawing.Point(102, 123); + this.slMaxArea.Location = new System.Drawing.Point(102, 62); this.slMaxArea.Maximum = 100; this.slMaxArea.Minimum = 0; this.slMaxArea.Name = "slMaxArea"; @@ -271,7 +402,7 @@ // this.slMinAngle.BackColor = System.Drawing.Color.Transparent; this.slMinAngle.CriticalPercent = ((uint)(89u)); - this.slMinAngle.Location = new System.Drawing.Point(102, 101); + this.slMinAngle.Location = new System.Drawing.Point(102, 40); this.slMinAngle.Maximum = 100; this.slMinAngle.Minimum = 0; this.slMinAngle.Name = "slMinAngle"; @@ -281,11 +412,22 @@ this.slMinAngle.Value = 50; this.slMinAngle.ValueChanging += new System.EventHandler(this.slMinAngle_ValueChanging); // + // cbConformDel + // + this.cbConformDel.BackColor = System.Drawing.Color.DimGray; + this.cbConformDel.Checked = false; + this.cbConformDel.Location = new System.Drawing.Point(11, 132); + this.cbConformDel.Name = "cbConformDel"; + this.cbConformDel.Size = new System.Drawing.Size(142, 17); + this.cbConformDel.TabIndex = 0; + this.cbConformDel.Text = "Conforming Delaunay"; + this.cbConformDel.UseVisualStyleBackColor = false; + // // cbConvex // this.cbConvex.BackColor = System.Drawing.Color.DimGray; this.cbConvex.Checked = false; - this.cbConvex.Location = new System.Drawing.Point(11, 211); + this.cbConvex.Location = new System.Drawing.Point(11, 196); this.cbConvex.Name = "cbConvex"; this.cbConvex.Size = new System.Drawing.Size(115, 17); this.cbConvex.TabIndex = 0; @@ -296,7 +438,7 @@ // this.cbQuality.BackColor = System.Drawing.Color.DimGray; this.cbQuality.Checked = false; - this.cbQuality.Location = new System.Drawing.Point(11, 78); + this.cbQuality.Location = new System.Drawing.Point(11, 17); this.cbQuality.Name = "cbQuality"; this.cbQuality.Size = new System.Drawing.Size(115, 17); this.cbQuality.TabIndex = 0; @@ -343,7 +485,7 @@ this.tabPage2.Location = new System.Drawing.Point(4, 4); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(272, 555); + this.tabPage2.Size = new System.Drawing.Size(272, 509); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "Statistic"; // @@ -352,7 +494,7 @@ this.label20.AutoSize = true; this.label20.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label20.ForeColor = System.Drawing.Color.White; - this.label20.Location = new System.Drawing.Point(8, 13); + this.label20.Location = new System.Drawing.Point(8, 17); this.label20.Name = "label20"; this.label20.Size = new System.Drawing.Size(39, 13); this.label20.TabIndex = 26; @@ -362,7 +504,7 @@ // this.label4.AutoSize = true; this.label4.ForeColor = System.Drawing.Color.DarkGray; - this.label4.Location = new System.Drawing.Point(8, 53); + this.label4.Location = new System.Drawing.Point(8, 57); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(60, 13); this.label4.TabIndex = 23; @@ -372,7 +514,7 @@ // this.label3.AutoSize = true; this.label3.ForeColor = System.Drawing.Color.DarkGray; - this.label3.Location = new System.Drawing.Point(8, 72); + this.label3.Location = new System.Drawing.Point(8, 76); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(56, 13); this.label3.TabIndex = 24; @@ -382,7 +524,7 @@ // this.label2.AutoSize = true; this.label2.ForeColor = System.Drawing.Color.DarkGray; - this.label2.Location = new System.Drawing.Point(8, 34); + this.label2.Location = new System.Drawing.Point(8, 38); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(50, 13); this.label2.TabIndex = 25; @@ -391,7 +533,7 @@ // lbNumSeg // this.lbNumSeg.ForeColor = System.Drawing.Color.White; - this.lbNumSeg.Location = new System.Drawing.Point(98, 53); + this.lbNumSeg.Location = new System.Drawing.Point(98, 57); this.lbNumSeg.Name = "lbNumSeg"; this.lbNumSeg.Size = new System.Drawing.Size(70, 13); this.lbNumSeg.TabIndex = 20; @@ -401,7 +543,7 @@ // lbNumSeg2 // this.lbNumSeg2.ForeColor = System.Drawing.Color.DarkGray; - this.lbNumSeg2.Location = new System.Drawing.Point(188, 53); + this.lbNumSeg2.Location = new System.Drawing.Point(188, 57); this.lbNumSeg2.Name = "lbNumSeg2"; this.lbNumSeg2.Size = new System.Drawing.Size(70, 13); this.lbNumSeg2.TabIndex = 19; @@ -411,7 +553,7 @@ // lbNumTri // this.lbNumTri.ForeColor = System.Drawing.Color.White; - this.lbNumTri.Location = new System.Drawing.Point(98, 72); + this.lbNumTri.Location = new System.Drawing.Point(98, 76); this.lbNumTri.Name = "lbNumTri"; this.lbNumTri.Size = new System.Drawing.Size(70, 13); this.lbNumTri.TabIndex = 17; @@ -421,7 +563,7 @@ // lbNumTri2 // this.lbNumTri2.ForeColor = System.Drawing.Color.DarkGray; - this.lbNumTri2.Location = new System.Drawing.Point(188, 72); + this.lbNumTri2.Location = new System.Drawing.Point(188, 76); this.lbNumTri2.Name = "lbNumTri2"; this.lbNumTri2.Size = new System.Drawing.Size(70, 13); this.lbNumTri2.TabIndex = 18; @@ -431,7 +573,7 @@ // lbNumVert // this.lbNumVert.ForeColor = System.Drawing.Color.White; - this.lbNumVert.Location = new System.Drawing.Point(98, 34); + this.lbNumVert.Location = new System.Drawing.Point(98, 38); this.lbNumVert.Name = "lbNumVert"; this.lbNumVert.Size = new System.Drawing.Size(70, 13); this.lbNumVert.TabIndex = 21; @@ -441,7 +583,7 @@ // lbNumVert2 // this.lbNumVert2.ForeColor = System.Drawing.Color.DarkGray; - this.lbNumVert2.Location = new System.Drawing.Point(188, 34); + this.lbNumVert2.Location = new System.Drawing.Point(188, 38); this.lbNumVert2.Name = "lbNumVert2"; this.lbNumVert2.Size = new System.Drawing.Size(70, 13); this.lbNumVert2.TabIndex = 22; @@ -452,7 +594,7 @@ // this.label32.AutoSize = true; this.label32.ForeColor = System.Drawing.Color.DarkGray; - this.label32.Location = new System.Drawing.Point(210, 209); + this.label32.Location = new System.Drawing.Point(210, 213); this.label32.Name = "label32"; this.label32.Size = new System.Drawing.Size(48, 13); this.label32.TabIndex = 11; @@ -462,7 +604,7 @@ // this.label13.AutoSize = true; this.label13.ForeColor = System.Drawing.Color.DarkGray; - this.label13.Location = new System.Drawing.Point(202, 110); + this.label13.Location = new System.Drawing.Point(202, 114); this.label13.Name = "label13"; this.label13.Size = new System.Drawing.Size(56, 13); this.label13.TabIndex = 11; @@ -472,7 +614,7 @@ // this.label31.AutoSize = true; this.label31.ForeColor = System.Drawing.Color.DarkGray; - this.label31.Location = new System.Drawing.Point(112, 209); + this.label31.Location = new System.Drawing.Point(112, 213); this.label31.Name = "label31"; this.label31.Size = new System.Drawing.Size(55, 13); this.label31.TabIndex = 12; @@ -482,7 +624,7 @@ // this.label12.AutoSize = true; this.label12.ForeColor = System.Drawing.Color.DarkGray; - this.label12.Location = new System.Drawing.Point(113, 110); + this.label12.Location = new System.Drawing.Point(113, 114); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(55, 13); this.label12.TabIndex = 12; @@ -492,7 +634,7 @@ // this.label16.AutoSize = true; this.label16.ForeColor = System.Drawing.Color.DarkGray; - this.label16.Location = new System.Drawing.Point(8, 169); + this.label16.Location = new System.Drawing.Point(8, 173); this.label16.Name = "label16"; this.label16.Size = new System.Drawing.Size(40, 13); this.label16.TabIndex = 9; @@ -502,7 +644,7 @@ // this.label29.AutoSize = true; this.label29.ForeColor = System.Drawing.Color.DarkGray; - this.label29.Location = new System.Drawing.Point(8, 249); + this.label29.Location = new System.Drawing.Point(8, 253); this.label29.Name = "label29"; this.label29.Size = new System.Drawing.Size(71, 13); this.label29.TabIndex = 15; @@ -512,7 +654,7 @@ // this.label14.AutoSize = true; this.label14.ForeColor = System.Drawing.Color.DarkGray; - this.label14.Location = new System.Drawing.Point(8, 150); + this.label14.Location = new System.Drawing.Point(8, 154); this.label14.Name = "label14"; this.label14.Size = new System.Drawing.Size(73, 13); this.label14.TabIndex = 15; @@ -521,7 +663,7 @@ // lbAngleMax // this.lbAngleMax.ForeColor = System.Drawing.Color.White; - this.lbAngleMax.Location = new System.Drawing.Point(182, 169); + this.lbAngleMax.Location = new System.Drawing.Point(182, 173); this.lbAngleMax.Name = "lbAngleMax"; this.lbAngleMax.Size = new System.Drawing.Size(76, 13); this.lbAngleMax.TabIndex = 16; @@ -531,7 +673,7 @@ // lbQualAspectAve // this.lbQualAspectAve.ForeColor = System.Drawing.Color.White; - this.lbQualAspectAve.Location = new System.Drawing.Point(182, 249); + this.lbQualAspectAve.Location = new System.Drawing.Point(182, 253); this.lbQualAspectAve.Name = "lbQualAspectAve"; this.lbQualAspectAve.Size = new System.Drawing.Size(76, 13); this.lbQualAspectAve.TabIndex = 14; @@ -541,7 +683,7 @@ // lbEdgeMax // this.lbEdgeMax.ForeColor = System.Drawing.Color.White; - this.lbEdgeMax.Location = new System.Drawing.Point(182, 150); + this.lbEdgeMax.Location = new System.Drawing.Point(182, 154); this.lbEdgeMax.Name = "lbEdgeMax"; this.lbEdgeMax.Size = new System.Drawing.Size(76, 13); this.lbEdgeMax.TabIndex = 14; @@ -551,7 +693,7 @@ // lbQualAlphaAve // this.lbQualAlphaAve.ForeColor = System.Drawing.Color.White; - this.lbQualAlphaAve.Location = new System.Drawing.Point(182, 230); + this.lbQualAlphaAve.Location = new System.Drawing.Point(182, 234); this.lbQualAlphaAve.Name = "lbQualAlphaAve"; this.lbQualAlphaAve.Size = new System.Drawing.Size(76, 13); this.lbQualAlphaAve.TabIndex = 3; @@ -561,7 +703,7 @@ // lbAreaMax // this.lbAreaMax.ForeColor = System.Drawing.Color.White; - this.lbAreaMax.Location = new System.Drawing.Point(182, 131); + this.lbAreaMax.Location = new System.Drawing.Point(182, 135); this.lbAreaMax.Name = "lbAreaMax"; this.lbAreaMax.Size = new System.Drawing.Size(76, 13); this.lbAreaMax.TabIndex = 3; @@ -571,7 +713,7 @@ // lbAngleMin // this.lbAngleMin.ForeColor = System.Drawing.Color.White; - this.lbAngleMin.Location = new System.Drawing.Point(100, 169); + this.lbAngleMin.Location = new System.Drawing.Point(100, 173); this.lbAngleMin.Name = "lbAngleMin"; this.lbAngleMin.Size = new System.Drawing.Size(68, 13); this.lbAngleMin.TabIndex = 4; @@ -581,7 +723,7 @@ // lbQualAspectMin // this.lbQualAspectMin.ForeColor = System.Drawing.Color.White; - this.lbQualAspectMin.Location = new System.Drawing.Point(100, 249); + this.lbQualAspectMin.Location = new System.Drawing.Point(100, 253); this.lbQualAspectMin.Name = "lbQualAspectMin"; this.lbQualAspectMin.Size = new System.Drawing.Size(68, 13); this.lbQualAspectMin.TabIndex = 2; @@ -591,7 +733,7 @@ // lbEdgeMin // this.lbEdgeMin.ForeColor = System.Drawing.Color.White; - this.lbEdgeMin.Location = new System.Drawing.Point(100, 150); + this.lbEdgeMin.Location = new System.Drawing.Point(100, 154); this.lbEdgeMin.Name = "lbEdgeMin"; this.lbEdgeMin.Size = new System.Drawing.Size(68, 13); this.lbEdgeMin.TabIndex = 2; @@ -601,7 +743,7 @@ // lbQualAlphaMin // this.lbQualAlphaMin.ForeColor = System.Drawing.Color.White; - this.lbQualAlphaMin.Location = new System.Drawing.Point(100, 230); + this.lbQualAlphaMin.Location = new System.Drawing.Point(100, 234); this.lbQualAlphaMin.Name = "lbQualAlphaMin"; this.lbQualAlphaMin.Size = new System.Drawing.Size(68, 13); this.lbQualAlphaMin.TabIndex = 7; @@ -611,7 +753,7 @@ // lbAreaMin // this.lbAreaMin.ForeColor = System.Drawing.Color.White; - this.lbAreaMin.Location = new System.Drawing.Point(100, 131); + this.lbAreaMin.Location = new System.Drawing.Point(100, 135); this.lbAreaMin.Name = "lbAreaMin"; this.lbAreaMin.Size = new System.Drawing.Size(68, 13); this.lbAreaMin.TabIndex = 7; @@ -622,7 +764,7 @@ // this.label22.AutoSize = true; this.label22.ForeColor = System.Drawing.Color.DarkGray; - this.label22.Location = new System.Drawing.Point(8, 230); + this.label22.Location = new System.Drawing.Point(8, 234); this.label22.Name = "label22"; this.label22.Size = new System.Drawing.Size(65, 13); this.label22.TabIndex = 8; @@ -632,7 +774,7 @@ // this.label10.AutoSize = true; this.label10.ForeColor = System.Drawing.Color.DarkGray; - this.label10.Location = new System.Drawing.Point(8, 131); + this.label10.Location = new System.Drawing.Point(8, 135); this.label10.Name = "label10"; this.label10.Size = new System.Drawing.Size(76, 13); this.label10.TabIndex = 8; @@ -643,7 +785,7 @@ this.label17.AutoSize = true; this.label17.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label17.ForeColor = System.Drawing.Color.White; - this.label17.Location = new System.Drawing.Point(8, 336); + this.label17.Location = new System.Drawing.Point(8, 290); this.label17.Name = "label17"; this.label17.Size = new System.Drawing.Size(97, 13); this.label17.TabIndex = 5; @@ -654,7 +796,7 @@ this.label21.AutoSize = true; this.label21.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label21.ForeColor = System.Drawing.Color.White; - this.label21.Location = new System.Drawing.Point(8, 209); + this.label21.Location = new System.Drawing.Point(8, 213); this.label21.Name = "label21"; this.label21.Size = new System.Drawing.Size(47, 13); this.label21.TabIndex = 6; @@ -665,7 +807,7 @@ this.label11.AutoSize = true; this.label11.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label11.ForeColor = System.Drawing.Color.White; - this.label11.Location = new System.Drawing.Point(8, 110); + this.label11.Location = new System.Drawing.Point(8, 114); this.label11.Name = "label11"; this.label11.Size = new System.Drawing.Size(50, 13); this.label11.TabIndex = 6; @@ -675,7 +817,7 @@ // this.angleHistogram1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(76)))), ((int)(((byte)(76))))); this.angleHistogram1.Font = new System.Drawing.Font("Segoe UI", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.angleHistogram1.Location = new System.Drawing.Point(6, 354); + this.angleHistogram1.Location = new System.Drawing.Point(6, 308); this.angleHistogram1.Name = "angleHistogram1"; this.angleHistogram1.Size = new System.Drawing.Size(260, 195); this.angleHistogram1.TabIndex = 0; @@ -694,7 +836,7 @@ this.tabPage3.Location = new System.Drawing.Point(4, 4); this.tabPage3.Name = "tabPage3"; this.tabPage3.Padding = new System.Windows.Forms.Padding(3); - this.tabPage3.Size = new System.Drawing.Size(272, 555); + this.tabPage3.Size = new System.Drawing.Size(272, 509); this.tabPage3.TabIndex = 2; this.tabPage3.Text = "About"; // @@ -703,7 +845,7 @@ this.lbCodeplex.AutoSize = true; this.lbCodeplex.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lbCodeplex.ForeColor = System.Drawing.Color.White; - this.lbCodeplex.Location = new System.Drawing.Point(70, 80); + this.lbCodeplex.Location = new System.Drawing.Point(70, 82); this.lbCodeplex.Name = "lbCodeplex"; this.lbCodeplex.Size = new System.Drawing.Size(153, 13); this.lbCodeplex.TabIndex = 2; @@ -715,7 +857,7 @@ this.label15.AutoSize = true; this.label15.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label15.ForeColor = System.Drawing.Color.White; - this.label15.Location = new System.Drawing.Point(8, 15); + this.label15.Location = new System.Drawing.Point(8, 17); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(73, 13); this.label15.TabIndex = 1; @@ -726,7 +868,7 @@ this.label1.AutoSize = true; this.label1.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.ForeColor = System.Drawing.Color.White; - this.label1.Location = new System.Drawing.Point(8, 130); + this.label1.Location = new System.Drawing.Point(8, 132); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(108, 13); this.label1.TabIndex = 1; @@ -736,7 +878,7 @@ // this.label19.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label19.ForeColor = System.Drawing.Color.White; - this.label19.Location = new System.Drawing.Point(70, 40); + this.label19.Location = new System.Drawing.Point(70, 42); this.label19.Name = "label19"; this.label19.Size = new System.Drawing.Size(134, 40); this.label19.TabIndex = 0; @@ -745,7 +887,7 @@ // label18 // this.label18.ForeColor = System.Drawing.Color.White; - this.label18.Location = new System.Drawing.Point(13, 40); + this.label18.Location = new System.Drawing.Point(13, 42); this.label18.Name = "label18"; this.label18.Size = new System.Drawing.Size(51, 40); this.label18.TabIndex = 0; @@ -756,7 +898,7 @@ // this.label7.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label7.ForeColor = System.Drawing.Color.White; - this.label7.Location = new System.Drawing.Point(70, 153); + this.label7.Location = new System.Drawing.Point(70, 155); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(134, 108); this.label7.TabIndex = 0; @@ -765,136 +907,23 @@ // lbShortcuts // this.lbShortcuts.ForeColor = System.Drawing.Color.White; - this.lbShortcuts.Location = new System.Drawing.Point(22, 153); + this.lbShortcuts.Location = new System.Drawing.Point(22, 155); this.lbShortcuts.Name = "lbShortcuts"; this.lbShortcuts.Size = new System.Drawing.Size(36, 108); this.lbShortcuts.TabIndex = 0; this.lbShortcuts.Text = "F3\r\nF4\r\nF5\r\n\r\nF8\r\nF9\r\n\r\nF12"; this.lbShortcuts.TextAlign = System.Drawing.ContentAlignment.TopRight; // - // menuStrip1 + // btnMesh // - this.menuStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.menuStrip1.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.menuStrip1.GripMargin = new System.Windows.Forms.Padding(0); - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileMenu, - this.viewMenu, - this.toolsMenu}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Padding = new System.Windows.Forms.Padding(0); - this.menuStrip1.Size = new System.Drawing.Size(280, 24); - this.menuStrip1.TabIndex = 0; - this.menuStrip1.Text = "menuStrip1"; - // - // fileMenu - // - this.fileMenu.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.fileMenu.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.fileMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileMenuOpen, - this.fileMenuSave, - this.toolStripSeparator3, - this.menuFileExport, - this.toolStripSeparator2, - this.fileMenuQuit}); - this.fileMenu.Name = "fileMenu"; - this.fileMenu.Size = new System.Drawing.Size(37, 24); - this.fileMenu.Text = "File"; - // - // fileMenuOpen - // - this.fileMenuOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.fileMenuOpen.Name = "fileMenuOpen"; - this.fileMenuOpen.Size = new System.Drawing.Size(141, 22); - this.fileMenuOpen.Text = "Open"; - this.fileMenuOpen.Click += new System.EventHandler(this.fileMenuOpen_Click); - // - // fileMenuSave - // - this.fileMenuSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.fileMenuSave.Name = "fileMenuSave"; - this.fileMenuSave.Size = new System.Drawing.Size(141, 22); - this.fileMenuSave.Text = "Save"; - this.fileMenuSave.Click += new System.EventHandler(this.fileMenuSave_Click); - // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(138, 6); - // - // menuFileExport - // - this.menuFileExport.Name = "menuFileExport"; - this.menuFileExport.Size = new System.Drawing.Size(141, 22); - this.menuFileExport.Text = "Export Image"; - this.menuFileExport.Click += new System.EventHandler(this.menuFileExport_Click); - // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(138, 6); - // - // fileMenuQuit - // - this.fileMenuQuit.Name = "fileMenuQuit"; - this.fileMenuQuit.Size = new System.Drawing.Size(141, 22); - this.fileMenuQuit.Text = "Quit"; - this.fileMenuQuit.Click += new System.EventHandler(this.fileMenuQuit_Click); - // - // viewMenu - // - this.viewMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.viewMenuVoronoi, - this.toolStripSeparator1, - this.viewMenuLog}); - this.viewMenu.Name = "viewMenu"; - this.viewMenu.Size = new System.Drawing.Size(44, 24); - this.viewMenu.Text = "View"; - // - // viewMenuVoronoi - // - this.viewMenuVoronoi.Enabled = false; - this.viewMenuVoronoi.Name = "viewMenuVoronoi"; - this.viewMenuVoronoi.Size = new System.Drawing.Size(162, 22); - this.viewMenuVoronoi.Text = "Voronoi Diagram"; - this.viewMenuVoronoi.Click += new System.EventHandler(this.viewMenuVoronoi_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(159, 6); - // - // viewMenuLog - // - this.viewMenuLog.Name = "viewMenuLog"; - this.viewMenuLog.Size = new System.Drawing.Size(162, 22); - this.viewMenuLog.Text = "Show Log"; - this.viewMenuLog.Click += new System.EventHandler(this.viewMenuLog_Click); - // - // toolsMenu - // - this.toolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolsMenuGen, - this.toolsMenuCheck}); - this.toolsMenu.Name = "toolsMenu"; - this.toolsMenu.Size = new System.Drawing.Size(46, 24); - this.toolsMenu.Text = "Tools"; - // - // toolsMenuGen - // - this.toolsMenuGen.Name = "toolsMenuGen"; - this.toolsMenuGen.Size = new System.Drawing.Size(157, 22); - this.toolsMenuGen.Text = "Input Generator"; - this.toolsMenuGen.Click += new System.EventHandler(this.toolsMenuGenerator_Click); - // - // toolsMenuCheck - // - this.toolsMenuCheck.Name = "toolsMenuCheck"; - this.toolsMenuCheck.Size = new System.Drawing.Size(157, 22); - this.toolsMenuCheck.Text = "Check Mesh"; - this.toolsMenuCheck.Click += new System.EventHandler(this.toolsMenuCheck_Click); + this.btnMesh.Enabled = false; + this.btnMesh.Location = new System.Drawing.Point(4, 44); + this.btnMesh.Name = "btnMesh"; + this.btnMesh.Size = new System.Drawing.Size(130, 23); + this.btnMesh.TabIndex = 12; + this.btnMesh.Text = "Triangulate"; + this.btnMesh.UseVisualStyleBackColor = true; + this.btnMesh.Click += new System.EventHandler(this.btnMesh_Click); // // renderControl1 // @@ -931,6 +960,8 @@ this.splitContainer1.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); this.splitContainer1.ResumeLayout(false); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); this.flatTabControl1.ResumeLayout(false); this.tabPage1.ResumeLayout(false); this.tabPage1.PerformLayout(); @@ -938,8 +969,6 @@ this.tabPage2.PerformLayout(); this.tabPage3.ResumeLayout(false); this.tabPage3.PerformLayout(); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); this.ResumeLayout(false); } @@ -949,9 +978,9 @@ private System.Windows.Forms.SplitContainer splitContainer1; private Controls.RendererControl renderControl1; private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileMenu; - private System.Windows.Forms.ToolStripMenuItem fileMenuOpen; - private System.Windows.Forms.ToolStripMenuItem fileMenuSave; + private System.Windows.Forms.ToolStripMenuItem menuFile; + private System.Windows.Forms.ToolStripMenuItem menuFileOpen; + private System.Windows.Forms.ToolStripMenuItem menuFileSave; private Controls.DarkTabControl flatTabControl1; private System.Windows.Forms.TabPage tabPage1; private System.Windows.Forms.TabPage tabPage2; @@ -985,15 +1014,15 @@ private System.Windows.Forms.Label label10; private System.Windows.Forms.Label label17; private System.Windows.Forms.Label label11; - private System.Windows.Forms.ToolStripMenuItem viewMenu; - private System.Windows.Forms.ToolStripMenuItem viewMenuVoronoi; + private System.Windows.Forms.ToolStripMenuItem menuView; + private System.Windows.Forms.ToolStripMenuItem menuViewVoronoi; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripMenuItem viewMenuLog; - private System.Windows.Forms.ToolStripMenuItem toolsMenu; - private System.Windows.Forms.ToolStripMenuItem toolsMenuGen; - private System.Windows.Forms.ToolStripMenuItem toolsMenuCheck; + private System.Windows.Forms.ToolStripMenuItem menuViewLog; + private System.Windows.Forms.ToolStripMenuItem menuTools; + private System.Windows.Forms.ToolStripMenuItem menuToolsGen; + private System.Windows.Forms.ToolStripMenuItem menuToolsCheck; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; - private System.Windows.Forms.ToolStripMenuItem fileMenuQuit; + private System.Windows.Forms.ToolStripMenuItem menuFileQuit; private System.Windows.Forms.Label label15; private System.Windows.Forms.Label label19; private System.Windows.Forms.Label label18; @@ -1019,6 +1048,8 @@ private System.Windows.Forms.Label lbNumTri2; private System.Windows.Forms.Label lbNumVert; private System.Windows.Forms.Label lbNumVert2; + private System.Windows.Forms.Label label23; + private Controls.DarkCheckBox cbConformDel; } } diff --git a/Triangle.NET/TestApp/FormMain.cs b/Triangle.NET/TestApp/FormMain.cs index 89557e9..5308f1b 100644 --- a/Triangle.NET/TestApp/FormMain.cs +++ b/Triangle.NET/TestApp/FormMain.cs @@ -181,18 +181,21 @@ namespace MeshExplorer btnMesh.Text = "Triangulate"; btnSmooth.Enabled = false; + // Clear voronoi + menuViewVoronoi.Checked = false; + renderControl1.ShowVoronoi = false; + + // Disable menu items + menuFileSave.Enabled = false; + menuFileExport.Enabled = false; + menuViewVoronoi.Enabled = false; + menuToolsCheck.Enabled = false; + // Render input renderControl1.SetData(input); // Update window caption this.Text = "Triangle.NET - Mesh Explorer - " + settings.CurrentFile; - - // Disable menu items - viewMenuVoronoi.Enabled = false; - - // Clear voronoi - viewMenuVoronoi.Checked = false; - renderControl1.ShowVoronoi = false; } private void HandleMeshChange() @@ -221,7 +224,10 @@ namespace MeshExplorer lbAngleMax.Text = Util.AngleToString(stats.LargestAngle); // Enable menu items - viewMenuVoronoi.Enabled = true; + menuFileSave.Enabled = true; + menuFileExport.Enabled = true; + menuViewVoronoi.Enabled = true; + menuToolsCheck.Enabled = true; // Update quality if (quality == null) @@ -243,6 +249,9 @@ namespace MeshExplorer // Render mesh renderControl1.SetData(mesh, true); + // Update window caption + this.Text = "Triangle.NET - Mesh Explorer - " + settings.CurrentFile; + // Previous mesh stats lbNumVert2.Text = "-"; lbNumTri2.Text = "-"; @@ -264,7 +273,10 @@ namespace MeshExplorer lbAngleMax.Text = Util.AngleToString(stats.LargestAngle); // Enable menu items - viewMenuVoronoi.Enabled = true; + menuFileSave.Enabled = true; + menuFileExport.Enabled = true; + menuViewVoronoi.Enabled = true; + menuToolsCheck.Enabled = true; // Set refine mode btnMesh.Enabled = true; @@ -318,12 +330,13 @@ namespace MeshExplorer settings.CurrentFile = Path.GetFileName(ofd.FileName); HandleMeshImport(); + btnSmooth.Enabled = true; // TODO: Remove } // else Message // Update folder settings settings.OfdFilterIndex = ofd.FilterIndex; - settings.OfdDirectory = Path.GetFullPath(ofd.FileName); + settings.OfdDirectory = Path.GetDirectoryName(ofd.FileName); return; } @@ -342,7 +355,7 @@ namespace MeshExplorer // Update folder settings settings.OfdFilterIndex = ofd.FilterIndex; - settings.OfdDirectory = Path.GetFullPath(ofd.FileName); + settings.OfdDirectory = Path.GetDirectoryName(ofd.FileName); } } @@ -406,6 +419,11 @@ namespace MeshExplorer mesh = new Mesh(); + if (cbConformDel.Checked) + { + mesh.SetOption(Options.ConformingDelaunay, true); + } + if (cbQuality.Checked) { mesh.SetOption(Options.Quality, true); @@ -540,12 +558,12 @@ namespace MeshExplorer #region Menu Handler - private void fileMenuOpen_Click(object sender, EventArgs e) + private void menuFileOpen_Click(object sender, EventArgs e) { Open(); } - private void fileMenuSave_Click(object sender, EventArgs ev) + private void menuFileSave_Click(object sender, EventArgs ev) { if (mesh != null) { @@ -553,12 +571,12 @@ namespace MeshExplorer } } - private void viewMenuLog_Click(object sender, EventArgs e) + private void menuViewLog_Click(object sender, EventArgs e) { ShowLog(); } - private void toolsMenuGenerator_Click(object sender, EventArgs e) + private void menuToolsGenerator_Click(object sender, EventArgs e) { if (frmGenerator == null || frmGenerator.IsDisposed) { @@ -576,7 +594,7 @@ namespace MeshExplorer } } - private void toolsMenuCheck_Click(object sender, EventArgs e) + private void menuToolsCheck_Click(object sender, EventArgs e) { if (mesh != null) { @@ -591,6 +609,17 @@ namespace MeshExplorer { FormExport export = new FormExport(); + string file = settings.OfdDirectory; + + if (!file.EndsWith("\\")) + { + file += "\\"; + } + + file += settings.CurrentFile; + + export.ImageName = Path.ChangeExtension(file, ".png"); + if (export.ShowDialog() == DialogResult.OK) { int format = export.ImageFormat; @@ -616,17 +645,17 @@ namespace MeshExplorer } } - private void viewMenuVoronoi_Click(object sender, EventArgs e) + private void menuViewVoronoi_Click(object sender, EventArgs e) { - viewMenuVoronoi.Checked = !viewMenuVoronoi.Checked; - renderControl1.ShowVoronoi = viewMenuVoronoi.Checked; - } - - private void fileMenuQuit_Click(object sender, EventArgs e) - { - this.Close(); + menuViewVoronoi.Checked = !menuViewVoronoi.Checked; + renderControl1.ShowVoronoi = menuViewVoronoi.Checked; } #endregion + + private void menuFileQuit_Click(object sender, EventArgs e) + { + this.Close(); + } } } diff --git a/Triangle.NET/TestApp/Generators/RandomPoints.cs b/Triangle.NET/TestApp/Generators/RandomPoints.cs index 7a4a065..6bec853 100644 --- a/Triangle.NET/TestApp/Generators/RandomPoints.cs +++ b/Triangle.NET/TestApp/Generators/RandomPoints.cs @@ -29,7 +29,7 @@ namespace MeshExplorer.Generators public int ParameterCount { - get { return 1; } + get { return 3; } } public string ParameterDescription(int paramIndex) @@ -39,7 +39,12 @@ namespace MeshExplorer.Generators return "Number of points:"; } - return ""; + if (paramIndex == 2) + { + return "Width:"; + } + + return "Height:"; } public string ParameterDescription(int paramIndex, double paramValue) @@ -57,6 +62,13 @@ namespace MeshExplorer.Generators return numPoints.ToString(); } + if (paramIndex == 2 || paramIndex == 3) + { + int numPoints = (int)paramValue + 100; + + return numPoints.ToString(); + } + return ""; } @@ -72,8 +84,8 @@ namespace MeshExplorer.Generators InputGeometry input = new InputGeometry(numPoints); - int width = Util.Random.Next(100, 200); - int height = Util.Random.Next(100, 200); + int width = (int)param2 + 100; + int height = (int)param3 + 100; for (int i = 0; i < numPoints; i++) { diff --git a/Triangle.NET/TestApp/IO/EpsImage.cs b/Triangle.NET/TestApp/IO/EpsImage.cs index 5544742..48ba990 100644 --- a/Triangle.NET/TestApp/IO/EpsImage.cs +++ b/Triangle.NET/TestApp/IO/EpsImage.cs @@ -1,7 +1,6 @@ // ----------------------------------------------------------------------- // -// John Burkardt, Florida State University -// http://people.sc.fsu.edu/~jburkardt/m_src/fem2d_poisson/ +// Original Matlab code by John Burkardt, Florida State University // // ----------------------------------------------------------------------- diff --git a/Triangle.NET/TestApp/Rendering/RenderData.cs b/Triangle.NET/TestApp/Rendering/RenderData.cs index 8afb39e..04a9de5 100644 --- a/Triangle.NET/TestApp/Rendering/RenderData.cs +++ b/Triangle.NET/TestApp/Rendering/RenderData.cs @@ -67,6 +67,8 @@ namespace MeshExplorer.Rendering this.Triangles = mesh.Triangles; + this.Segments = null; + int n = mesh.NumberOfVertices; // Convert points to float @@ -75,16 +77,19 @@ namespace MeshExplorer.Rendering SetPoints(mesh.Vertices); // Get segments - var segs = mesh.Segments; - - List segList = new List(mesh.NumberOfSegments); - - foreach (var seg in segs) + if (mesh.IsPolygon) { - segList.Add(new Edge(seg.P0, seg.P1)); - } + var segs = mesh.Segments; - this.Segments = segList.ToArray(); + List segList = new List(mesh.NumberOfSegments); + + foreach (var seg in segs) + { + segList.Add(new Edge(seg.P0, seg.P1)); + } + + this.Segments = segList.ToArray(); + } // Get edges (more efficient than rendering triangles) EdgeEnumerator e = new EdgeEnumerator(mesh); diff --git a/Triangle.NET/Triangle/Enums.cs b/Triangle.NET/Triangle/Enums.cs index da37e44..0c6d0d1 100644 --- a/Triangle.NET/Triangle/Enums.cs +++ b/Triangle.NET/Triangle/Enums.cs @@ -91,4 +91,9 @@ namespace TriangleNet /// The type of the mesh vertex. /// public enum VertexType { InputVertex, SegmentVertex, FreeVertex, DeadVertex, UndeadVertex }; + + /// + /// Node renumbering algorithms. + /// + public enum NodeNumbering { Linear, CuthillMcKee }; } diff --git a/Triangle.NET/Triangle/Mesh.cs b/Triangle.NET/Triangle/Mesh.cs index da9d25f..ead94d0 100644 --- a/Triangle.NET/Triangle/Mesh.cs +++ b/Triangle.NET/Triangle/Mesh.cs @@ -470,12 +470,37 @@ namespace TriangleNet /// public void Renumber() { - int id = 0; - foreach (var item in this.vertices.Values) + this.Renumber(NodeNumbering.Linear); + } + + /// + /// Renumber vertex and triangle id's. + /// + public void Renumber(NodeNumbering num) + { + int id; + + if (num == NodeNumbering.Linear) { - item.id = id++; + id = 0; + foreach (var item in this.vertices.Values) + { + item.id = id++; + } + } + else + { + //CuthillMcKee rcm = new CuthillMcKee(); + //int[] perm_inv = rcm.Renumber(this); + + //// Permute the node indices. + //foreach (var node in this.vertices.Values) + //{ + // node.id = perm_inv[node.id]; + //} } + // Triangles will always be numbered from 0..n id = 0; foreach (var item in this.triangles.Values) { diff --git a/Triangle.NET/Triangle/Quality.cs b/Triangle.NET/Triangle/Quality.cs index 1ae3be1..4c5af0f 100644 --- a/Triangle.NET/Triangle/Quality.cs +++ b/Triangle.NET/Triangle/Quality.cs @@ -181,7 +181,7 @@ namespace TriangleNet // adjoining triangle whose pointer is larger (to ensure that // each pair isn't tested twice). shouldbedelaunay = (oppotri.triangle != Mesh.dummytri) && - !Otri.IsDead(oppotri.triangle) && //(triangleloop.tri < oppotri.tri) && + !Otri.IsDead(oppotri.triangle) && loop.triangle.id < oppotri.triangle.id && (triorg != mesh.infvertex1) && (triorg != mesh.infvertex2) && (triorg != mesh.infvertex3) && (tridest != mesh.infvertex1) && (tridest != mesh.infvertex2) && @@ -204,8 +204,8 @@ namespace TriangleNet { if (Primitives.NonRegular(triorg, tridest, triapex, oppoapex) > 0.0) { - logger.Warning("Non-regular pair of triangles found (ID " + loop.triangle.id + ").", - "Quality.CheckDelaunay()"); + logger.Warning(String.Format("Non-regular pair of triangles found (IDs {0}+{1}).", + loop.triangle.id, oppotri.triangle.id), "Quality.CheckDelaunay()"); horrors++; } } @@ -1001,7 +1001,7 @@ namespace TriangleNet logger.Warning("I ran out of Steiner points, but the mesh has encroached subsegments, " + "and therefore might not be truly Delaunay. If the Delaunay property is important " - + "to you, try increasing the number of Steiner points", + + "to you, try increasing the number of Steiner points.", "Quality.EnforceQuality()"); } } diff --git a/Triangle.NET/Triangle/Tools/BoundedVoronoi.cs b/Triangle.NET/Triangle/Tools/BoundedVoronoi.cs index 2e46eec..8ceff18 100644 --- a/Triangle.NET/Triangle/Tools/BoundedVoronoi.cs +++ b/Triangle.NET/Triangle/Tools/BoundedVoronoi.cs @@ -59,7 +59,8 @@ namespace TriangleNet.Tools foreach (var v in mesh.vertices.Values) { - if (v.type == VertexType.FreeVertex) + // TODO: Need a reliable way to check if a vertex is on a segment + if (v.type == VertexType.FreeVertex || v.Boundary == 0) { voronoi.Add(ConstructBvdCell(v)); } @@ -70,6 +71,13 @@ namespace TriangleNet.Tools } } + /// + /// Tag all blind triangles. + /// + /// + /// A triangle is said to be blind if the triangle and its circumcenter + /// lie on two different sides of a constrained edge. + /// private void TagBlindTriangles() { int blinded = 0; @@ -153,6 +161,12 @@ namespace TriangleNet.Tools blinded = 0; } + /// + /// Check if given triangle is blinded by given segment. + /// + /// Triangle. + /// Segments + /// Returns true, if the triangle is blinded. private bool TriangleIsBlinded(ref Otri tri, ref Osub seg) { Point cc, pt = new Point();