On Wed, 14 Feb 2024 04:33:00 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>> Karthik P K has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Review comments
>
> modules/javafx.graphics/src/main/java/com/sun/javafx/text/PrismTextLayout.java
>  line 424:
> 
>> 422: 
>> 423:     @Override
>> 424:     public Hit getHitInfo(float x, float y, String text, int 
>> textRunStart, int curRunStart, boolean forTextFlow) {
> 
> This method has become huge, with I think upto 7 levels of nesting.  It would 
> benefit from some splitting.
> 
> Suggestions in that area:
> - Split it in one that handles RTL and one for LTR **or**
> - Split it in one that handles `spans != null` (`TextFlow`) and one that 
> handles `Text`
> 
> You can also reduce the nesting of the first `if/else` by returning early:
> 
> 
>         if (lineIndex >= getLineCount()) {
>             charIndex = getCharCount();
>             insertionIndex = charIndex + 1;
> 
>             return new Hit(charIndex, insertionIndex, leading);  // return 
> early here
>         } else {   // no need to nest 150+ lines of code
> 
> 
> More suggestions inline below

I did not find splitting the `getHitInfo` method based on some condition very 
helpful. Since we are calculating effective value of x and TextRun, many values 
are dependant on intermediate values and the calculation involves many 
variables.  Hence I decided to keep the major calculations inside `getHitInfo` 
method. 
Added 2 methods to move the calculation of values like previous line text width 
and width of LTR text in RTL text out of `getHitInfo`. 

> You can also reduce the nesting of the first `if/else` by returning early:
> 
Made changes to return early in this case.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1323#discussion_r1494309979

Reply via email to