]> git.lyx.org Git - lyx.git/blobdiff - src/rowpainter.h
Implement LFUN_SPELLING_REMOVE (patch from switt)
[lyx.git] / src / rowpainter.h
index 2324bf656ce9961a76cd32e6f2fa58f5894bd330..9a8a7cdd5eb5e42f229e44d04c4eca296182c67e 100644 (file)
@@ -1,3 +1,4 @@
+// -*- C++ -*-
 /**
  * \file rowpainter.h
  * This file is part of LyX, the document processor.
  *
  * \author various
  * \author John Levon
+ * \author André Pönitz
  *
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
  */
 
 #ifndef ROWPAINTER_H
 #define ROWPAINTER_H
 
-#include <config.h>
+#include "Changes.h"
 
-#include "LString.h"
 #include "support/types.h"
 
-class LyXText;
+namespace lyx {
+
+class Bidi;
 class BufferView;
-class Row;
+class Font;
+class FontInfo;
+class Inset;
+class Language;
+class PainterInfo;
 class Paragraph;
-class Painter;
-class LyXFont;
-class VSpace;
+class ParagraphList;
+class ParagraphMetrics;
+class Row;
+class Text;
+class TextMetrics;
+
+namespace frontend { class Painter; }
 
 /**
  * A class used for painting an individual row of text.
+ * FIXME: get rid of that class.
  */
 class RowPainter {
 public:
-       /// initialise painter
-       RowPainter(BufferView const & bv, LyXText const & text, Row const & row);
+       /// initialise and run painter
+       RowPainter(PainterInfo & pi, Text const & text,
+               pit_type pit, Row const & row, Bidi & bidi, int x, int y);
 
-       /// paint the row. Returns true if CHANGED_IN_DRAW (e.g. image was loaded)
-       bool paint(int y_offset, int x_offset, int y, bool cleared = false);
-
-private:
-       // paint various parts
-       bool paintBackground();
-       void paintSelection();
+       /// paint various parts
+       /// FIXME: transfer to TextMetrics
        void paintAppendix();
        void paintDepthBar();
        void paintChangeBar();
        void paintFirst();
        void paintLast();
-       void paintForeignMark(float const orig_x, LyXFont const & orig_font);
-       void paintHebrewComposeChar(lyx::pos_type & vpos);
-       void paintArabicComposeChar(lyx::pos_type & vpos);
-       void paintChars(lyx::pos_type & vpos, bool hebrew, bool arabic);
-       int paintPageBreak(string const & label, int y);
-       int paintLengthMarker(string const & prefix, VSpace const & vsp, int start);
-       /// returns true when CHANGED_IN_DRAW
-       bool paintText();
-       /// returns true when CHANGED_IN_DRAW
-       bool paintFromPos(lyx::pos_type & vpos);
-       /// returns true when CHANGED_IN_DRAW
-       bool paintInset(lyx::pos_type const pos);
+       void paintText();
+       void paintOnlyInsets();
 
+private:
+       void paintForeignMark(double orig_x, Language const * lang, int desc = 0);
+       void paintMisspelledMark(double orig_x, int desc);
+       void paintHebrewComposeChar(pos_type & vpos, FontInfo const & font);
+       void paintArabicComposeChar(pos_type & vpos, FontInfo const & font);
+       void paintChars(pos_type & vpos, FontInfo const & font,
+                       bool hebrew, bool arabic);
+       int paintAppendixStart(int y);
+       void paintFromPos(pos_type & vpos);
+       void paintInset(Inset const * inset, pos_type const pos);
+       void paintInlineCompletion(Font const & font);
+       
        /// return left margin
        int leftMargin() const;
 
-       /// return the font at the given pos
-       LyXFont const getFont(lyx::pos_type pos) const;
-
        /// return the label font for this row
-       LyXFont const getLabelFont() const;
-
-       char const transformChar(char c, lyx::pos_type pos) const;
-
-       /// return pixel width for the given pos
-       int singleWidth(lyx::pos_type pos) const;
-       int singleWidth(lyx::pos_type pos, char c) const;
+       FontInfo labelFont() const;
 
-       /// bufferview to paint on
-       BufferView const & bv_;
+       /// contains painting related information.
+       PainterInfo & pi_;
 
-       /// Painter to use
-       Painter & pain_;
-
-       /// LyXText for the row
-       LyXText const & text_;
+       /// Text for the row
+       Text const & text_;
+       TextMetrics & text_metrics_;
+       ParagraphList const & pars_;
 
        /// The row to paint
        Row const & row_;
 
        /// Row's paragraph
+       pit_type const pit_;
        Paragraph const & par_;
+       ParagraphMetrics const & pm_;
+
+       /// bidi cache, comes from outside the rowpainter because
+       /// rowpainters are normally created in a for loop and there only
+       /// one of them is active at a time.
+       Bidi & bidi_;
+
+       /// row changed? (change tracking)
+       Change const change_;
 
        // Looks ugly - is
-       int xo_;
-       int yo_;
-       float x_;
-       int y_;
-       bool cleared_;
+       double const xo_;
+       int const yo_;    // current baseline
+       double x_;
        int width_;
-       float separator_;
-       float hfill_;
-       float label_hfill_;
 };
 
-/// return the pixel height of a space marker before/after a par
-int getLengthMarkerHeight(BufferView const & bv, VSpace const & vsp);
+} // namespace lyx
 
 #endif // ROWPAINTER_H