// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using System.Collections.Generic;
using System.Numerics;
namespace SixLabors.ImageSharp.Drawing {
///
/// Represents a logic path that can be drawn.
///
public interface IPath
{
///
/// Gets a value indicating whether this instance is closed, open or a composite path with a mixture of open and closed figures.
///
public PathTypes PathType { get; }
///
/// Gets the bounds enclosing the path.
///
public RectangleF Bounds { get; }
///
/// Converts the into a simple linear path.
///
/// Returns the current as simple linear path.
public IEnumerable Flatten();
///
/// Converts this path into a retained , flattening curves at the precision of
/// the supplied device-space .
///
/// The X/Y scale at which curves are flattened.
/// The retained linear geometry.
public LinearGeometry ToLinearGeometry(Vector2 scale);
///
/// Transforms the path using the specified matrix.
///
/// The matrix.
/// A new path with the matrix applied to it.
public IPath Transform(Matrix4x4 matrix);
///
/// Returns this path with all figures closed.
///
/// A new close .
public IPath AsClosedPath();
}
}