+// -*- C++ -*-
/**
* \file rowpainter.h
* This file is part of LyX, the document processor.
* \author various
* \author John Levon
*
- * 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 "LString.h"
#include "support/types.h"
class LyXText;
class BufferView;
-class Row;
-class Paragraph;
-class Painter;
-class LyXFont;
-class VSpace;
-
-/**
- * A class used for painting an individual row of text.
- */
-class RowPainter {
-public:
- /// initialise painter
- RowPainter(BufferView const & bv, LyXText const & text, Row const & row);
-
- /// paint the row. Returns true if CHANGED_IN_DRAW (e.g. image was loaded)
- bool paint(int y_offset, int x_offset, int y);
-
-private:
- // paint various parts
- void paintBackground();
- void paintSelection();
- 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 paintAppendixStart(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);
-
- /// 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;
+class PainterInfo;
- char const transformChar(char c, lyx::pos_type pos) const;
+/// paint the rows of the main text, return last drawn y value
+int paintText(BufferView const & bv);
- /// return pixel width for the given pos
- int singleWidth(lyx::pos_type pos) const;
- int singleWidth(lyx::pos_type pos, char c) const;
+/// refresh a par of the main text
+void refreshPar(BufferView const & bv, LyXText const & text,
+ lyx::pit_type pit);
- /// bufferview to paint on
- BufferView const & bv_;
+/// paint the rows of a text inset
+void paintTextInset(LyXText const & text, PainterInfo & pi);
- /// Painter to use
- Painter & pain_;
+/// some space for drawing the 'nested' markers (in pixel)
+inline int nestMargin()
+{
+ return 15;
+}
- /// LyXText for the row
- LyXText const & text_;
- /// The row to paint
- Row const & row_;
+/// margin for changebar
+inline int changebarMargin()
+{
+ return 10;
+}
- /// Row's paragraph
- Paragraph const & par_;
- // Looks ugly - is
- int xo_;
- int yo_;
- float x_;
- int y_;
- int width_;
- float separator_;
- float hfill_;
- float label_hfill_;
-};
+/// right margin
+inline int rightMargin()
+{
+ return 30;
+}
-/// return the pixel height of a space marker before/after a par
-int getLengthMarkerHeight(BufferView const & bv, VSpace const & vsp);
#endif // ROWPAINTER_H