2013-06-18 08:18:32 +00:00
|
|
|
This branch is where I (jmarc) try to implement string_wise metrics
|
|
|
|
computation. This is done through a series of cleanups. The expected
|
|
|
|
speed improvement will only be visible at the end of the road: indeed
|
|
|
|
for now we intend to keep unchanged behavior for testing purposes.
|
|
|
|
|
|
|
|
What is done:
|
|
|
|
* Make TextMetrics methods operate on Row objects: breakRow and
|
2013-06-25 06:18:25 +00:00
|
|
|
setRowHeight instead of rowBreakPoint and rowHeight.
|
|
|
|
|
2013-06-18 08:18:32 +00:00
|
|
|
* change breakRow operation to operate on text strings on which
|
2013-06-25 12:57:09 +00:00
|
|
|
metrics are computed. The list of elements is stored in the row object
|
2013-06-25 06:18:25 +00:00
|
|
|
|
|
|
|
* Implement proper string metrics computation (with cache), when
|
|
|
|
lyxrc.force_paint_single_char is false.
|
2013-06-18 08:18:32 +00:00
|
|
|
|
|
|
|
Next steps:
|
2013-06-25 06:18:25 +00:00
|
|
|
|
2013-06-18 08:18:32 +00:00
|
|
|
* get rid of rowWidth (breakRow does compute this)
|
2013-06-25 06:18:25 +00:00
|
|
|
|
2013-06-18 08:18:32 +00:00
|
|
|
* re-implement getColumnNearX using row elements
|
2013-06-25 06:18:25 +00:00
|
|
|
|
|
|
|
* re-implement cursorX using row elements
|
|
|
|
|
|
|
|
* re-implement row painting using row elements (can it be done?)
|
|
|
|
|
2013-06-18 08:18:32 +00:00
|
|
|
* profile and see how performance can be improved.
|
|
|
|
|
|
|
|
Difference in behavior
|
|
|
|
* words longer than the screen are no monger broken at an arbitrary
|
|
|
|
point. This will not be useful anymore with horizontal scrolling.
|
|
|
|
* end of paragraph markers metrics are computed with the font of the
|
|
|
|
actual text, not default font. This will be extended to the other
|
|
|
|
methods.
|
|
|
|
|
2013-06-25 12:57:09 +00:00
|
|
|
Other differences that should be considered as bugs
|
|
|
|
* there are still some difference in width computation wrt
|
|
|
|
TextMetrics::rowWidth. This happens in particular with Description
|
|
|
|
environment when the row is broken at bodypos. The method rowWidth
|
|
|
|
is kept for now in order to be able to detect row parsing errors,
|
|
|
|
but it could be removed right now.
|