Package com.dua3.utility.ui
Class RichTextVisualLayoutHelper
java.lang.Object
com.dua3.utility.ui.RichTextVisualLayoutHelper
Shared helper for editor visual-line layout and caret hit testing.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordBlock layout result used to derive editor visual lines.static interfaceMapping function from layout positions back to source positions.static final recordLogical text block corresponding to one source line without the trailing '\n'. -
Method Summary
Modifier and TypeMethodDescriptionstatic 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.static List<VisualLine> buildVisualLines(List<RichTextVisualLayoutHelper.LogicalBlock> logicalBlocks, double defaultLineHeight, Function<? super RichText, RichTextVisualLayoutHelper.BlockLayout> blockLayoutFactory) Builds visual lines for logical blocks.static intindexForPoint(List<VisualLine> lines, double x, double y) Resolves source index for a visual point.static intindexForX(VisualLine line, double x) Resolves source index for x coordinate in a visual line.static intlineIndexForCaret(List<VisualLine> lines, int caret) Finds visual line index for a caret offset.splitLogicalBlocks(RichText text) Splits text into logical source blocks, preserving empty lines.static doublexForIndex(VisualLine line, int index) Returns the caret x coordinate for the given source index in a visual line.
-
Method Details
-
splitLogicalBlocks
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 blocksdefaultLineHeight- fallback line heightblockLayoutFactory- 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 blocksdefaultLineHeight- fallback line heightfontUtil- font utility used for glyph metricsblockLayoutFactory- layout factory per logical block- Returns:
- immutable visual lines
-
indexForPoint
Resolves source index for a visual point.- Parameters:
lines- visual linesx- x coordinatey- y coordinate- Returns:
- nearest source index
-
lineIndexForCaret
Finds visual line index for a caret offset.- Parameters:
lines- visual linescaret- source caret position- Returns:
- line index
-
xForIndex
Returns the caret x coordinate for the given source index in a visual line.- Parameters:
line- visual lineindex- source index- Returns:
- x coordinate
-
indexForX
Resolves source index for x coordinate in a visual line.- Parameters:
line- visual linex- x coordinate- Returns:
- nearest source index
-