using System; using System.Collections.Generic; using OpenNest.Engine.Jobs.Adapters; using OpenNest.Geometry; namespace OpenNest.Engine.Jobs; /// Shared stock snapshots for whole-job front ends. Plate repeat count is not inventory. public static class NestStockBuilder { public static IReadOnlyList FromTemplate( Plate template, IReadOnlyList options, int? quantityPerOption = null ) { ArgumentNullException.ThrowIfNull(template); if (options == null || options.Count == 0) return new[] { DrawingJobMapper.FromPlate("plate", template, quantityPerOption) }; var stock = new List(options.Count); for (var i = 0; i < options.Count; i++) { var option = options[i]; ArgumentNullException.ThrowIfNull(option); stock.Add(new NestPlateStock( $"option-{i}", new Size(option.Width, option.Length), quantityPerOption, template.PartSpacing, template.EdgeSpacing, template.Quadrant )); } return stock.AsReadOnly(); } /// Single-sheet callers may not silently create additional sheets. public static IReadOnlyList SinglePlate(Plate plate) => FromTemplate(plate, null, quantityPerOption: 1); }