using System;
namespace OpenNest.Engine.BestFit
{
///
/// Batches directional-distance computations for multiple offset positions.
/// GPU implementations can process all offsets in a single kernel launch.
///
public interface ISlideComputer : IDisposable
{
///
/// Computes the minimum directional distance for each offset position.
///
/// Flat array [x1,y1,x2,y2, ...] for stationary edges.
/// Number of line segments in stationarySegments.
/// Flat array [x1,y1,x2,y2, ...] for moving edges at origin.
/// Number of line segments in movingTemplateSegments.
/// Flat array [dx,dy, dx,dy, ...] of translation offsets.
/// Number of offset positions.
/// Push direction.
/// Array of minimum distances, one per offset position.
double[] ComputeBatch(
double[] stationarySegments, int stationaryCount,
double[] movingTemplateSegments, int movingCount,
double[] offsets, int offsetCount,
PushDirection direction);
///
/// Computes minimum directional distance for offsets with per-offset directions.
/// Uploads segment data once for all offsets, reducing GPU round-trips.
///
double[] ComputeBatchMultiDir(
double[] stationarySegments, int stationaryCount,
double[] movingTemplateSegments, int movingCount,
double[] offsets, int offsetCount,
int[] directions);
}
}