X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2FPAINTING_ANALYSIS;h=e53b4b23df02d29b1a2eaee4a32c34ccece8a243;hb=fc23deacd9da5c9720ca61827a18f796a8622eed;hp=e4efe84414f79a098e0e02fdce6d75b32467a793;hpb=e39e4cf96b23997c065a890c015138eb93a1d4fd;p=lyx.git diff --git a/development/PAINTING_ANALYSIS b/development/PAINTING_ANALYSIS index e4efe84414..e53b4b23df 100644 --- a/development/PAINTING_ANALYSIS +++ b/development/PAINTING_ANALYSIS @@ -66,77 +66,11 @@ drawing from metrics. Other changes are only clean-ups. -** DONE RowPainter - -Inset position is set in paintInset, paintOnlyInsets, and paintText. -This should be done only once in paintInset - -** DONE TextMetrics::drawParagraph - -We can really simplify the code when drawing is disabled only -paintInset needs to be called. - + do right at the start when drawing is already disabled - + do it in the loop for rows that are not visible on screen. - -The only thing we want to do here is to set inset positions (for -text). The other insets still use the painter with drawing disabled. - -** DONE Painter::text - -We cannot remove (or make private) the version that uses a -FontInfo because it is used by PainterInfo::draw. Document this and -remove unused arguments rtl and double spacing. This would become a specialized helper. -Proposed solution: keep the existing function, but private and without -optional arguments. - -Avoid to return (and thus compute) the width of strings? - + used by InsetSpecialChar (fixable) - + used by textDecoration() in text(): more difficult to fix - -Idea: add a version of text where wordspacing and textwidth (giving -the width of strings) are required parameters and remove optional -version. - -==> more versions, no optional parameters. - -** DONE When a document ends with a newline, add the bottom margin anyway - -The code that tests for a newline was added at 6bb98d07 in 2007. - ** When a paragraph ends with a newline, compute correctly the height of the extra row. -** Rewrite TextMetrics::completionPosAndDim using row information - -Currently it uses setRowHeight in a very weird way. In particular the -topBottomSpace parameter should be removed after that. - ** Rewrite TextMetrics::editXY, checkInsetHit using row information (getPosNearX)? The helper version should return a Row::Element instead of an InsetTable. -** DONE Do not make RowPainter operations update x_ - -It is better to make them const and update x_ separately. - -** reorder the painting of the different elements. - -In particular, if text is painted last, it will be more visible in the -presence of underlines (foreign language, change tracking, spell -check). - -** DONE remove pit argument to breakRow - -There are probably other places where the pit is not needed anymore: -computeRowMetrics, labelFill, setRowHeight, isLastRow, isFirstRow - -** Remember rtl status in the row object - -This will avoid to pass a Paragraph object to methods that do not need it. - -** Rewrite RowPainter::paintSelection using row information - -Currently it uses some very complicated code. It should be possible to -reuse the logic of paintStringAndSel. - ** Set inset position during metrics phase In order to do that, a no-paint drawing will be initiated after every @@ -152,16 +86,6 @@ application would do. + remove painting when not inside in drawParagraph + remove Cursor::inCoordCache? -** Use Row for MathData - -It may not be so difficult. Implement x2pos and pos2x from -the TM:cursorX and TM::getPosNearX, and use them for both text and -math. - -Will the strings display OK if drawing string-wise? - -Then it would be possible to streamline drawing with disabled painter. - ** Paint directly to screen Instead of using an intermediary pixmap. I have no idea of how