X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FRowPainter.h;h=d573cb8e5b98a34848ae0dcf557f38bddf448e0b;hb=801d7dc9f42baf331642606a6641606779985439;hp=33eec5f92a59d11f4a2c41446ff1653ed565eac0;hpb=83afe2e547554a537e2ea01cf85b3535bbd77e2b;p=lyx.git diff --git a/src/RowPainter.h b/src/RowPainter.h index 33eec5f92a..d573cb8e5b 100644 --- a/src/RowPainter.h +++ b/src/RowPainter.h @@ -14,43 +14,17 @@ #ifndef ROWPAINTER_H #define ROWPAINTER_H -#include "Bidi.h" -#include "Changes.h" - -#include "support/types.h" +#include "Row.h" namespace lyx { -class BufferView; -class Font; -class FontInfo; -class Inset; -class Language; class PainterInfo; class Paragraph; -class ParagraphList; -class ParagraphMetrics; -class Row; class Text; class TextMetrics; namespace frontend { class Painter; } -/** - * FIXME: Re-implement row painting using row elements. - * - * This is not difficult in principle, but the code is intricate and - * needs some careful analysis. The first thing that needs to be done - * is to break row elements with the same criteria. Currently breakRow - * does not consider on-the-fly spell-checking, but it is not clear to - * me that it is required. Moreover, this thing would only work if we - * are sure that the Row object is up-to-date when drawing happens. - * This depends on the update machinery. - * - * This would allow to get rid of the Bidi class. - */ - - /** * A class used for painting an individual row of text. * FIXME: get rid of that class. @@ -59,7 +33,7 @@ class RowPainter { public: /// initialise and run painter RowPainter(PainterInfo & pi, Text const & text, - pit_type pit, Row const & row, int x, int y); + Row const & row, int x, int y); /// paint various parts /// FIXME: transfer to TextMetrics @@ -68,32 +42,24 @@ public: void paintChangeBar() const; void paintTooLargeMarks(bool const left, bool const right) const; void paintFirst() const; - void paintLast(); + void paintLast() const; void paintText(); - void paintText2(); void paintOnlyInsets(); void paintSelection() const; private: - void paintSeparator(double width, Font const & font); - void paintForeignMark(double orig_x, Language const * lang, int desc = 0) const; - void paintStringAndSel(docstring const & str, Font const & font, - Change const & change, - pos_type start_pos, pos_type end_pos); - void paintMisspelledMark(double orig_x, - docstring const & str, Font const & font, - pos_type pos, bool changed) const; - void paintChange(double orig_x , Font const & font, Change const & change) const; - int paintAppendixStart(int y) const; - void paintFromPos(pos_type & vpos, bool changed); - void paintInset(Inset const * inset, pos_type const pos); - void paintInlineCompletion(Font const & font); - - /// return left margin - int leftMargin() const; - - /// return the label font for this row - FontInfo labelFont() const; + void paintLanguageMarkings(Row::Element const & e) const; + void paintForeignMark(Row::Element const & e) const; + void paintNoSpellingMark(Row::Element const & e) const; + void paintStringAndSel(Row::Element const & e) const; + void paintTextDecoration(Row::Element const & e) const; + void paintMisspelledMark(Row::Element const & e) const; + void paintChange(Row::Element const & e) const; + void paintAppendixStart(int y) const; + void paintInset(Row::Element const & e) const; + + /// return the label font for this row (end label when \c end is true) + FontInfo labelFont(bool end) const; /// void paintLabel() const; @@ -106,32 +72,18 @@ private: /// Text for the row Text const & text_; - TextMetrics const & text_metrics_; - ParagraphList const & pars_; + TextMetrics const & tm_; /// The row to paint Row const & row_; /// Row's paragraph - pit_type const pit_; Paragraph const & par_; - ParagraphMetrics const & pm_; - - /// bidi cache - Bidi bidi_; - - /// row changed? (change tracking) - Change const change_; // Looks ugly - is double const xo_; int const yo_; // current baseline double x_; - int width_; - int solid_line_thickness_; - int solid_line_offset_; - int dotted_line_thickness_; - int dotted_line_offset_; }; } // namespace lyx