// 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); } }