]> git.lyx.org Git - lyx.git/blob - src/insets/InsetHFill.cpp
Introduce BufferException so that we don't crash if a problem affects only current...
[lyx.git] / src / insets / InsetHFill.cpp
1 /**
2  * \file InsetHFill.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author André Pönitz
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "InsetHFill.h"
14
15 #include "MetricsInfo.h"
16
17 #include "frontends/Painter.h"
18
19 #include "support/gettext.h"
20
21 #include <ostream>
22
23 using namespace std;
24
25 namespace lyx {
26
27
28 InsetHFill::InsetHFill()
29         : InsetCommand(InsetCommandParams(HFILL_CODE), string())
30 {}
31
32
33 ParamInfo const & InsetHFill::findInfo(string const & /* cmdName */)
34 {
35         static ParamInfo param_info_;
36         return param_info_;
37 }
38
39
40 Inset * InsetHFill::clone() const
41 {
42         return new InsetHFill;
43 }
44
45
46 void InsetHFill::metrics(MetricsInfo &, Dimension & dim) const
47 {
48         // The metrics for this inset are calculated externally in
49         // \c TextMetrics::computeRowMetrics. Those are dummy value:
50         dim = Dimension(10, 10, 10);
51 }
52
53
54 void InsetHFill::draw(PainterInfo & pi, int x, int y) const
55 {
56         Dimension const dim = Inset::dimension(*pi.base.bv);
57         int const x0 = x + 1;
58         int const x1 = x + dim.wid - 2;
59         int const y0 = y + dim.des - 1;
60         int const y1 = y - dim.asc + 1;
61
62         pi.pain.line(x0, y1, x0, y0, Color_added_space);
63         pi.pain.line(x0, y, x1, y, Color_added_space,
64                 frontend::Painter::line_onoffdash);
65         pi.pain.line(x1, y1, x1, y0, Color_added_space);
66 }
67
68
69 docstring InsetHFill::screenLabel() const
70 {
71         return _("Horizontal Fill");
72 }
73
74
75 int InsetHFill::plaintext(odocstream & os, OutputParams const &) const
76 {
77         os << "     ";
78         return 5;
79 }
80
81
82 int InsetHFill::docbook(odocstream & os, OutputParams const &) const
83 {
84         os << '\n';
85         return 0;
86 }
87
88
89 void InsetHFill::write(ostream & os) const
90 {
91         os << "\n\\hfill\n";
92 }
93
94
95 bool InsetHFill::isSpace() const
96 {
97         return true;
98 }
99
100
101 } // namespace lyx