Class RichTextVisualLayoutHelper

java.lang.Object
com.dua3.utility.ui.RichTextVisualLayoutHelper

public final class RichTextVisualLayoutHelper extends Object
Shared helper for editor visual-line layout and caret hit testing.
  • Method Details

    • splitLogicalBlocks

      public static List<RichTextVisualLayoutHelper.LogicalBlock> splitLogicalBlocks(RichText text)
      Splits text into logical source blocks, preserving empty lines.
      Parameters:
      text - source text
      Returns:
      immutable list of logical blocks
    • buildVisualLines

      public static List<VisualLine> buildVisualLines(List<RichTextVisualLayoutHelper.LogicalBlock> logicalBlocks, double defaultLineHeight, Function<? super RichText,RichTextVisualLayoutHelper.BlockLayout> blockLayoutFactory)
      Builds visual lines for logical blocks.
      Parameters:
      logicalBlocks - logical blocks
      defaultLineHeight - fallback line height
      blockLayoutFactory - layout factory per logical block
      Returns:
      immutable visual lines
    • buildVisualLines

      public static List<VisualLine> buildVisualLines(List<RichTextVisualLayoutHelper.LogicalBlock> logicalBlocks, double defaultLineHeight, FontUtil fontUtil, Function<? super RichText,RichTextVisualLayoutHelper.BlockLayout> blockLayoutFactory)
      Builds visual lines for logical blocks using the given font metrics backend.
      Parameters:
      logicalBlocks - logical blocks
      defaultLineHeight - fallback line height
      fontUtil - font utility used for glyph metrics
      blockLayoutFactory - layout factory per logical block
      Returns:
      immutable visual lines
    • indexForPoint

      public static int indexForPoint(List<VisualLine> lines, double x, double y)
      Resolves source index for a visual point.
      Parameters:
      lines - visual lines
      x - x coordinate
      y - y coordinate
      Returns:
      nearest source index
    • lineIndexForCaret

      public static int lineIndexForCaret(List<VisualLine> lines, int caret)
      Finds visual line index for a caret offset.
      Parameters:
      lines - visual lines
      caret - source caret position
      Returns:
      line index
    • xForIndex

      public static double xForIndex(VisualLine line, int index)
      Returns the caret x coordinate for the given source index in a visual line.
      Parameters:
      line - visual line
      index - source index
      Returns:
      x coordinate
    • indexForX

      public static int indexForX(VisualLine line, double x)
      Resolves source index for x coordinate in a visual line.
      Parameters:
      line - visual line
      x - x coordinate
      Returns:
      nearest source index