// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Drawing {
///
/// Describes geometry-wide metadata for a instance.
///
///
/// This metadata is computed eagerly during lowering so backends do not need to enumerate the geometry again to
/// discover basic information such as total segment count or bounds.
///
public readonly struct LinearGeometryInfo
{
///
/// Gets the bounds of all points stored in the containing .
///
public required RectangleF Bounds { get; init; }
///
/// Gets the total number of contours in the containing .
///
public required int ContourCount { get; init; }
///
/// Gets the total number of stored points across all contours.
///
public required int PointCount { get; init; }
///
/// Gets the total number of derived linear segments across all contours.
///
public required int SegmentCount { get; init; }
///
/// Gets the number of derived segments that remain non-horizontal when sampled on pixel boundaries.
///
///
/// A segment contributes to this count when its start and end sample into different rows under
/// pixel-boundary sampling.
///
public required int NonHorizontalSegmentCountPixelBoundary { get; init; }
///
/// Gets the number of derived segments that remain non-horizontal when sampled at pixel centers.
///
///
/// A segment contributes to this count when its start and end sample into different rows after the
/// half-pixel center-sampling offset is applied.
///
public required int NonHorizontalSegmentCountPixelCenter { get; init; }
}
}