feat: add simplifier highlight and preview rendering to EntityView
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace OpenNest.Controls
|
namespace OpenNest.Controls
|
||||||
@@ -15,6 +16,16 @@ namespace OpenNest.Controls
|
|||||||
public List<Bend> Bends = new List<Bend>();
|
public List<Bend> Bends = new List<Bend>();
|
||||||
public int SelectedBendIndex = -1;
|
public int SelectedBendIndex = -1;
|
||||||
|
|
||||||
|
private HashSet<Entity> simplifierHighlightSet;
|
||||||
|
|
||||||
|
public List<Entity> SimplifierHighlight
|
||||||
|
{
|
||||||
|
get => simplifierHighlightSet?.ToList();
|
||||||
|
set => simplifierHighlightSet = value != null ? new HashSet<Entity>(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Arc SimplifierPreview { get; set; }
|
||||||
|
|
||||||
private readonly Pen gridPen = new Pen(Color.FromArgb(70, 70, 70));
|
private readonly Pen gridPen = new Pen(Color.FromArgb(70, 70, 70));
|
||||||
private readonly Dictionary<int, Pen> penCache = new Dictionary<int, Pen>();
|
private readonly Dictionary<int, Pen> penCache = new Dictionary<int, Pen>();
|
||||||
|
|
||||||
@@ -71,7 +82,10 @@ namespace OpenNest.Controls
|
|||||||
foreach (var entity in Entities)
|
foreach (var entity in Entities)
|
||||||
{
|
{
|
||||||
if (IsEtchLayer(entity.Layer)) continue;
|
if (IsEtchLayer(entity.Layer)) continue;
|
||||||
var pen = GetEntityPen(entity.Color);
|
var isHighlighted = simplifierHighlightSet != null && simplifierHighlightSet.Contains(entity);
|
||||||
|
var pen = isHighlighted
|
||||||
|
? GetEntityPen(Color.FromArgb(60, entity.Color))
|
||||||
|
: GetEntityPen(entity.Color);
|
||||||
DrawEntity(e.Graphics, entity, pen);
|
DrawEntity(e.Graphics, entity, pen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +100,12 @@ namespace OpenNest.Controls
|
|||||||
|
|
||||||
DrawEtchMarks(e.Graphics);
|
DrawEtchMarks(e.Graphics);
|
||||||
|
|
||||||
|
if (SimplifierPreview != null)
|
||||||
|
{
|
||||||
|
using var previewPen = new Pen(Color.FromArgb(0, 200, 80), 2f / ViewScale);
|
||||||
|
DrawArc(e.Graphics, SimplifierPreview, previewPen);
|
||||||
|
}
|
||||||
|
|
||||||
#if DRAW_OFFSET
|
#if DRAW_OFFSET
|
||||||
|
|
||||||
var offsetShape = new Shape();
|
var offsetShape = new Shape();
|
||||||
@@ -400,6 +420,13 @@ namespace OpenNest.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ClearSimplifierPreview()
|
||||||
|
{
|
||||||
|
SimplifierHighlight = null;
|
||||||
|
SimplifierPreview = null;
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
public void ZoomToFit(bool redraw = true)
|
public void ZoomToFit(bool redraw = true)
|
||||||
{
|
{
|
||||||
ZoomToArea(Entities.GetBoundingBox(), redraw);
|
ZoomToArea(Entities.GetBoundingBox(), redraw);
|
||||||
|
|||||||
Reference in New Issue
Block a user