]> git.lyx.org Git - lyx.git/blob - src/insets/InsetHFill.cpp
* InsetHFill: small drawing tweaks and fix the cursor positionning and selection...
[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
24 namespace lyx {
25
26
27 InsetHFill::InsetHFill()
28         : InsetCommand(InsetCommandParams(HFILL_CODE), std::string())
29 {}
30
31
32 CommandInfo const * InsetHFill::findInfo(std::string const & /* cmdName */)
33 {
34         static const char * const paramnames[] = {""};
35         static const CommandInfo info = {0, paramnames, 0};
36         return &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 const InsetHFill::getScreenLabel(Buffer const &) const
70 {
71         return _("Horizontal Fill");
72 }
73
74
75 int InsetHFill::plaintext(Buffer const &, odocstream & os,
76                           OutputParams const &) const
77 {
78         os << "     ";
79         return 5;
80 }
81
82
83 int InsetHFill::docbook(Buffer const &, odocstream & os,
84                         OutputParams const &) const
85 {
86         os << '\n';
87         return 0;
88 }
89
90
91 void InsetHFill::write(Buffer const &, std::ostream & os) const
92 {
93         os << "\n\\hfill\n";
94 }
95
96
97 bool InsetHFill::isSpace() const
98 {
99         return true;
100 }
101
102
103 } // namespace lyx