]> git.lyx.org Git - lyx.git/blob - src/rowpainter.h
6711d57c6e0afe414dfddc6531afe42ee0aba819
[lyx.git] / src / rowpainter.h
1 /**
2  * \file rowpainter.h
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author various
7  * \author John Levon
8  *
9  * Full author contact details are available in file CREDITS
10  */
11
12 #ifndef ROWPAINTER_H
13 #define ROWPAINTER_H
14
15 #include <config.h>
16
17 #include "LString.h"
18 #include "support/types.h"
19
20 class LyXText;
21 class BufferView;
22 class Row;
23 class Paragraph;
24 class Painter;
25 class LyXFont;
26 class VSpace;
27
28 /**
29  * A class used for painting an individual row of text.
30  */
31 class RowPainter {
32 public:
33         /// initialise painter
34         RowPainter(BufferView const & bv, LyXText const & text, Row const & row);
35
36         /// paint the row.
37         void paint(int y_offset, int x_offset, int y);
38
39 private:
40         // paint various parts
41         void paintBackground();
42         void paintSelection();
43         void paintAppendix();
44         void paintDepthBar();
45         void paintChangeBar();
46         void paintFirst();
47         void paintLast();
48         void paintForeignMark(float const orig_x, LyXFont const & orig_font);
49         void paintHebrewComposeChar(lyx::pos_type & vpos);
50         void paintArabicComposeChar(lyx::pos_type & vpos);
51         void paintChars(lyx::pos_type & vpos, bool hebrew, bool arabic);
52         int paintPageBreak(string const & label, int y);
53         int paintAppendixStart(int y);
54         int paintLengthMarker(string const & prefix, VSpace const & vsp, int start);
55         void paintText();
56         void paintFromPos(lyx::pos_type & vpos);
57         void paintInset(lyx::pos_type const pos);
58
59         /// return left margin
60         int leftMargin() const;
61
62         /// return the font at the given pos
63         LyXFont const getFont(lyx::pos_type pos) const;
64
65         /// return the label font for this row
66         LyXFont const getLabelFont() const;
67
68         char const transformChar(char c, lyx::pos_type pos) const;
69
70         /// return pixel width for the given pos
71         int singleWidth(lyx::pos_type pos) const;
72         int singleWidth(lyx::pos_type pos, char c) const;
73
74         /// bufferview to paint on
75         BufferView const & bv_;
76
77         /// Painter to use
78         Painter & pain_;
79
80         /// LyXText for the row
81         LyXText const & text_;
82
83         /// The row to paint
84         Row const & row_;
85
86         /// Row's paragraph
87         Paragraph const & par_;
88
89         // Looks ugly - is
90         int xo_;
91         int yo_;
92         float x_;
93         int y_;
94         int width_;
95         float separator_;
96         float hfill_;
97         float label_hfill_;
98 };
99
100 /// return the pixel height of a space marker before/after a par
101 int getLengthMarkerHeight(BufferView const & bv, VSpace const & vsp);
102
103 #endif // ROWPAINTER_H