// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Drawing.Processing {
///
/// Provides options for controlling how vector shapes are interpreted during rasterization,
/// including the fill-rule intersection mode and boolean clipping operations.
///
public class ShapeOptions : IDeepCloneable
{
///
/// Initializes a new instance of the class.
///
public ShapeOptions()
{
}
private ShapeOptions(ShapeOptions source)
{
this.IntersectionRule = source.IntersectionRule;
this.BooleanOperation = source.BooleanOperation;
}
///
/// Gets or sets the boolean clipping operation used when a clipping path is applied.
/// Determines how the clip shape interacts with the target region
/// (e.g. subtracts the clip shape).
///
/// Defaults to .
///
public BooleanOperation BooleanOperation { get; set; } = BooleanOperation.Difference;
///
/// Gets or sets the fill rule that determines how overlapping or nested contours affect coverage.
/// fills any region with a non-zero winding number;
/// alternates fill/hole for each contour crossing.
///
/// Defaults to .
///
public IntersectionRule IntersectionRule { get; set; } = IntersectionRule.NonZero;
///
public ShapeOptions DeepClone() => new(this);
}
}