Another minor change, but this should almost get us to the point that we
[lyx.git] / src / rowpainter.h
blob9a8a7cdd5eb5e42f229e44d04c4eca296182c67e
1 // -*- C++ -*-
2 /**
3 * \file rowpainter.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author various
8 * \author John Levon
9 * \author André Pönitz
11 * Full author contact details are available in file CREDITS.
14 #ifndef ROWPAINTER_H
15 #define ROWPAINTER_H
17 #include "Changes.h"
19 #include "support/types.h"
21 namespace lyx {
23 class Bidi;
24 class BufferView;
25 class Font;
26 class FontInfo;
27 class Inset;
28 class Language;
29 class PainterInfo;
30 class Paragraph;
31 class ParagraphList;
32 class ParagraphMetrics;
33 class Row;
34 class Text;
35 class TextMetrics;
37 namespace frontend { class Painter; }
39 /**
40 * A class used for painting an individual row of text.
41 * FIXME: get rid of that class.
43 class RowPainter {
44 public:
45 /// initialise and run painter
46 RowPainter(PainterInfo & pi, Text const & text,
47 pit_type pit, Row const & row, Bidi & bidi, int x, int y);
49 /// paint various parts
50 /// FIXME: transfer to TextMetrics
51 void paintAppendix();
52 void paintDepthBar();
53 void paintChangeBar();
54 void paintFirst();
55 void paintLast();
56 void paintText();
57 void paintOnlyInsets();
59 private:
60 void paintForeignMark(double orig_x, Language const * lang, int desc = 0);
61 void paintMisspelledMark(double orig_x, int desc);
62 void paintHebrewComposeChar(pos_type & vpos, FontInfo const & font);
63 void paintArabicComposeChar(pos_type & vpos, FontInfo const & font);
64 void paintChars(pos_type & vpos, FontInfo const & font,
65 bool hebrew, bool arabic);
66 int paintAppendixStart(int y);
67 void paintFromPos(pos_type & vpos);
68 void paintInset(Inset const * inset, pos_type const pos);
69 void paintInlineCompletion(Font const & font);
71 /// return left margin
72 int leftMargin() const;
74 /// return the label font for this row
75 FontInfo labelFont() const;
77 /// contains painting related information.
78 PainterInfo & pi_;
80 /// Text for the row
81 Text const & text_;
82 TextMetrics & text_metrics_;
83 ParagraphList const & pars_;
85 /// The row to paint
86 Row const & row_;
88 /// Row's paragraph
89 pit_type const pit_;
90 Paragraph const & par_;
91 ParagraphMetrics const & pm_;
93 /// bidi cache, comes from outside the rowpainter because
94 /// rowpainters are normally created in a for loop and there only
95 /// one of them is active at a time.
96 Bidi & bidi_;
98 /// row changed? (change tracking)
99 Change const change_;
101 // Looks ugly - is
102 double const xo_;
103 int const yo_; // current baseline
104 double x_;
105 int width_;
108 } // namespace lyx
110 #endif // ROWPAINTER_H