refactor(engine): extract progress reporting seam
This commit is contained in:
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using OpenNest.Engine.Jobs.Placement.Fillers;
|
||||
using OpenNest.Geometry;
|
||||
|
||||
namespace OpenNest.Engine.Fill
|
||||
@@ -136,7 +137,7 @@ namespace OpenNest.Engine.Fill
|
||||
var allParts = new List<Part>(placedSoFar.Count + best.Count);
|
||||
allParts.AddRange(placedSoFar);
|
||||
allParts.AddRange(best);
|
||||
NestEngineBase.ReportProgress(
|
||||
NestProgressReporter.Report(
|
||||
progress,
|
||||
new ProgressReport
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using OpenNest.Geometry;
|
||||
using OpenNest.Engine.Jobs.Placement.Fillers;
|
||||
using OpenNest.Engine.RectanglePacking;
|
||||
|
||||
namespace OpenNest.Engine.Fill
|
||||
@@ -89,7 +90,7 @@ namespace OpenNest.Engine.Fill
|
||||
|
||||
var desc = $"Shrink {axis}: {bestParts.Count} parts, dim={dim:F1}";
|
||||
|
||||
NestEngineBase.ReportProgress(
|
||||
NestProgressReporter.Report(
|
||||
progress,
|
||||
new ProgressReport
|
||||
{
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace OpenNest.Engine.Jobs.Placement.Fillers;
|
||||
|
||||
internal static class NestProgressReporter
|
||||
{
|
||||
internal static void Report(IProgress<NestProgress> progress, ProgressReport report)
|
||||
{
|
||||
if (progress == null || report.Parts == null || report.Parts.Count == 0)
|
||||
return;
|
||||
|
||||
var clonedParts = new List<Part>(report.Parts.Count);
|
||||
foreach (var part in report.Parts)
|
||||
clonedParts.Add((Part)part.Clone());
|
||||
|
||||
Debug.WriteLine(
|
||||
$"[Progress] Phase={report.Phase}, Plate={report.PlateNumber}, "
|
||||
+ $"Parts={clonedParts.Count} | {report.Description}"
|
||||
);
|
||||
|
||||
progress.Report(
|
||||
new NestProgress
|
||||
{
|
||||
Phase = report.Phase,
|
||||
PlateNumber = report.PlateNumber,
|
||||
BestParts = clonedParts,
|
||||
Description = report.Description,
|
||||
ActiveWorkArea = report.WorkArea,
|
||||
IsOverallBest = report.IsOverallBest,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ using System.Threading;
|
||||
using OpenNest.Engine;
|
||||
using OpenNest.Engine.BestFit;
|
||||
using OpenNest.Engine.Fill;
|
||||
using OpenNest.Engine.Jobs.Placement.Fillers;
|
||||
using OpenNest.Engine.Strategies;
|
||||
using OpenNest.Geometry;
|
||||
using OpenNest.Math;
|
||||
@@ -261,29 +262,7 @@ namespace OpenNest.Engine
|
||||
|
||||
internal static void ReportProgress(IProgress<NestProgress> progress, ProgressReport report)
|
||||
{
|
||||
if (progress == null || report.Parts == null || report.Parts.Count == 0)
|
||||
return;
|
||||
|
||||
var clonedParts = new List<Part>(report.Parts.Count);
|
||||
foreach (var part in report.Parts)
|
||||
clonedParts.Add((Part)part.Clone());
|
||||
|
||||
Debug.WriteLine(
|
||||
$"[Progress] Phase={report.Phase}, Plate={report.PlateNumber}, "
|
||||
+ $"Parts={clonedParts.Count} | {report.Description}"
|
||||
);
|
||||
|
||||
progress.Report(
|
||||
new NestProgress
|
||||
{
|
||||
Phase = report.Phase,
|
||||
PlateNumber = report.PlateNumber,
|
||||
BestParts = clonedParts,
|
||||
Description = report.Description,
|
||||
ActiveWorkArea = report.WorkArea,
|
||||
IsOverallBest = report.IsOverallBest,
|
||||
}
|
||||
);
|
||||
NestProgressReporter.Report(progress, report);
|
||||
}
|
||||
|
||||
protected string BuildProgressSummary()
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using OpenNest.Engine;
|
||||
using OpenNest.Engine.Fill;
|
||||
using OpenNest.Engine.Jobs.Placement.Fillers;
|
||||
using OpenNest.Geometry;
|
||||
|
||||
namespace OpenNest.Engine.Strategies
|
||||
@@ -50,7 +51,7 @@ namespace OpenNest.Engine.Strategies
|
||||
WinnerPhase = ActivePhase;
|
||||
}
|
||||
|
||||
NestEngineBase.ReportProgress(
|
||||
NestProgressReporter.Report(
|
||||
Progress,
|
||||
new ProgressReport
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user