> The RichTextArea control > ([JDK-8301121](https://bugs.openjdk.org/browse/JDK-8301121)), or any custom > control that needs non-trivial navigation within complex or wrapped text > needs a public API to get information about text layout. > > This change fixes the missing functionality by adding a new public method to > the `Text` and `TextFlow` classes.: > > > /** > * Obtains the snapshot of the current text layout information. > * @return the layout information > * @since 24 > */ > public final LayoutInfo getLayoutInfo() > > > The `LayoutInfo` provides a view into the text layout within > `Text`/`TextFlow` nodes such as: > > - text lines: offsets and bounds > - overall layout bounds > - text selection geometry > - strike-through geometry > - underline geometry > - caret information > > This PR also adds the missing `strikeThroughShape()` method to complement > existing `underlineShape()` and `rangeShape()` for consistency sake: > > > /** > * Returns the shape for the strike-through in local coordinates. > * > * @param start the beginning character index for the range > * @param end the end character index (non-inclusive) for the range > * @return an array of {@code PathElement} which can be used to create a > {@code Shape} > * @since 24 > */ > public final PathElement[] strikeThroughShape(int start, int end) > > > ## WARNING > > Presently, information obtained via certain Text/TextField methods is > incorrect with non-zero padding and borders, see > [JDK-8341438](https://bugs.openjdk.org/browse/JDK-8341438). > > It is not clear whether this PR should correct the computation at least for > the new APIs and keep the existing APIs as is to be fixed later, or if the > fix should be applied to both sets of APIs at the same time.
Andy Goryachev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 13 additional commits since the last revision: - Merge remote-tracking branch 'origin/master' into ag.text.layout.api - remove line spacing - tests - whitespace - caret info - text line info - Merge remote-tracking branch 'origin/master' into ag.text.layout.api - convert to wrapper - clarify - javadoc - ... and 3 more: https://git.openjdk.org/jfx/compare/94382d87...5ab4f47a ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1596/files - new: https://git.openjdk.org/jfx/pull/1596/files/c2e26d5e..5ab4f47a Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1596&range=06 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1596&range=05-06 Stats: 319 lines in 14 files changed: 271 ins; 12 del; 36 mod Patch: https://git.openjdk.org/jfx/pull/1596.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1596/head:pull/1596 PR: https://git.openjdk.org/jfx/pull/1596