Files
OpenNest/OpenNest/Controls/ShapePreviewControl.cs
T
aj aec0523062 style: apply CSharpier formatting to all C# sources
Repo-wide sweep with the pinned CSharpier 1.3.0 tool. Whitespace and
line-wrapping only; OpenNest.Engine.Tests (109) and OpenNest.IO.Tests
pass after reformat, full solution builds 0 errors.

Added .csharpierignore so csproj/config XML keeps its existing layout
(CSharpier's XML wrapping churns attributes with zero benefit).

Formatting is now enforceable: dotnet csharpier check . passes.
2026-09-20 16:41:50 -04:00

82 lines
2.0 KiB
C#

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace OpenNest.Controls
{
public class ShapePreviewControl : PlateView
{
private string[] infoLines;
public ShapePreviewControl()
{
DrawOrigin = false;
DrawBounds = false;
AllowPan = false;
AllowSelect = false;
AllowZoom = false;
AllowDrop = false;
BackColor = Color.White;
}
public void SetInfo(params string[] lines)
{
infoLines = lines;
Invalidate();
}
public void ShowDrawing(Drawing drawing)
{
Plate.Parts.Clear();
Plate.Size = new Geometry.Size(0, 0);
if (drawing?.Program != null)
{
AddPartFromDrawing(drawing, Geometry.Vector.Zero);
ZoomToFit();
}
else
{
Invalidate();
}
}
protected override void OnResize(System.EventArgs e)
{
base.OnResize(e);
if (Plate.Parts.Count > 0)
ZoomToFit(false);
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.TranslateTransform(origin.X, origin.Y);
Renderer.DrawPlate(e.Graphics);
Renderer.DrawParts(e.Graphics);
e.Graphics.ResetTransform();
PaintInfo(e.Graphics);
}
private void PaintInfo(Graphics g)
{
if (infoLines == null)
return;
var lineHeight = Font.GetHeight(g) + 1;
var y = 4f;
foreach (var line in infoLines)
{
if (string.IsNullOrEmpty(line))
continue;
g.DrawString(line, Font, Brushes.Black, 4, y);
y += lineHeight;
}
}
}
}