On Thu, 15 Feb 2024 10:36:51 GMT, Karthik P K <k...@openjdk.org> wrote:

> > I think we should simplify the `getHitInfo` method in the `TextLayout` 
> > interface.
> > The code currently seems to be making distinctions where there are none. 
> > `TextFlow`s provide spans, while `Text`s provide a text. `getHitInfo` can 
> > take advantage of this to avoid the `text` and `forTextFlow` parameters 
> > altogether. This will reduce confusion (as there is no distinction) and 
> > also avoids cases that are non-sensical (providing `text` while 
> > `forTextFlow` is `true` or vice versa).
> > Previous changes to this code (when the parameter `text` was introduced to 
> > `getHitInfo`) should probably be partially undone and simplified with this 
> > new knowledge.
> 
> Thanks for reviewing @hjohn Certainly we could simplify the `getHitInfo` 
> method but the complication starts when we have to support Text node embedded 
> in TextFlow. Just to differentiate Text node and TextFlow, spans can be used 
> as you suggested. I had to introduce these parameters for the case of Text 
> node embedded in TextFlow. On top of that we need to support emojis and RTL 
> text. This is where it started getting complex and I had to use these new 
> parameters. If you have any thoughts on this, please let me know. I'll got 
> through all the comments and incorporate wherever possible.

Sure, if you can give me more details as to why this is necessary, perhaps I 
can follow the logic. From an outside observer, `PrismTextLayout` already seems 
to have far too much specialization related to how text is supplied 
(spans/String) and who is supplying it (TextFlow/Text), making the logic hard 
to follow (but also error prone, and likely has more than a few bugs).  I'd 
expect a class that does text layout measurements to be able to do this with a 
uniform format without special casing (ie. perhaps `Text` should wrap their 
text in a `TextSpan` and all the special casing can disappear).

Your current changes seems to increase this divide with even more 
specialization, hence why I'm wondering if this is the best approach.

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

PR Comment: https://git.openjdk.org/jfx/pull/1323#issuecomment-1945892410

Reply via email to