// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.Fonts {
///
/// Visitor types for streaming laid-out glyphs through the layout pipeline.
///
internal static partial class TextLayout
{
///
/// Receives laid-out glyphs streamed from the layout pipeline.
/// Implementations are value types so the generic dispatch is specialized by the JIT and no boxing or
/// delegate allocation is required.
///
internal interface IGlyphLayoutVisitor
{
///
/// Invoked before glyphs are streamed for a laid-out line.
///
/// The zero-based index of the line in the line-broken text box.
public void BeginLine(int lineIndex);
///
/// Invoked once for each laid-out glyph in layout order.
///
/// The laid-out glyph.
public void Visit(in GlyphLayout glyph);
///
/// Invoked after glyphs have been streamed for a laid-out line.
///
public void EndLine();
}
}
}