using System.Collections.Generic;
namespace OpenNest.RectanglePacking
{
internal abstract class FillEngine
{
public FillEngine(Bin bin)
{
Bin = bin;
}
public Bin Bin { get; set; }
public abstract void Fill(Item item);
public abstract void Fill(Item item, int maxCount);
///
/// Vertical pattern.
///
///
///
///
///
protected List- VPattern(Item item, int rows, int columns, int maxCount)
{
var items = new List
- ();
for (int i = 0; i < columns; i++)
{
var x = item.Width * i + item.X;
for (int j = 0; j < rows; j++)
{
var y = item.Height * j + item.Y;
var addedItem = item.Clone() as Item;
addedItem.Location = new Vector(x, y);
items.Add(addedItem);
if (items.Count == maxCount)
return items;
}
}
return items;
}
///
/// Horizontal pattern.
///
///
///
///
///
protected List
- HPattern(Item item, int rows, int columns, int maxCount)
{
var items = new List
- ();
for (int i = 0; i < rows; i++)
{
var y = item.Height * i + item.Y;
for (int j = 0; j < rows; j++)
{
var x = item.Width * j + item.X;
var addedItem = item.Clone() as Item;
addedItem.Location = new Vector(x, y);
items.Add(addedItem);
if (items.Count == maxCount)
return items;
}
}
return items;
}
}
}