Hello,
I have now done most of what I wanted on the rowpainter2 branch. When I
decided a few month ago that it would be a good JMarc Week of Code
project I thought that 2.2 would be near enough then and that this work
would be 2.3 material. Now I guess it makes more sense to land it for
2.2. Actually, there is less code involved that I thought there would be.
What is done:
* the RowPainter code relies directly on Row tokenization,except for
labels, endlabels and stuff like that. This could be added, but I am not
sure it is worth the hassle.
* full ranges of text are now painted directly, instead of doing it
word-by-word. This gives a nice speed up.
* Chinese text should be shown correctly on screen.
What remains to do:
* there are some situations where the text is broken at inset boundary
and breaking at a space would have been better. I have to tweak the
shortenIfNeeded method.
* since we compute metrics for full sentences instead of words, the
width cache, which is a plain map, does not really make sense. The cache
hit rate cannot be good, and after long editing sessions I suspect that
the memory use will be horrible. The solution is either to get rid of it
or to replace it with a LRU cache container. Does anyone know of a good
simple one with appropriate license ? Or shall I write it myself?
What will (probably) not be done:
* I gave up on my plan to get rid of Bidi completely. The last user is
Cursor::getSurroundingPos, and one needs to replace unpleasant code by
some other unpleasant code. I will be neither worse nor better, but it
will not rely on Bidi. Since it is peripheral to the main effort, I did
not do it.
Basically, I'd appreciate if some people could test it so that we can
see what's right and what's wrong. Since leave on thursday for vacation,
the choice is between landing it now or landing it in late August when I
come back. But I have more time now to fix bugs than I will have in August.
What shall I do?
JMarc