#include <config.h>
#include "InsetHFill.h"
-#include "gettext.h"
-#include "support/std_ostream.h"
+#include "MetricsInfo.h"
+#include "frontends/Painter.h"
+
+#include "support/gettext.h"
+
+#include <ostream>
+
+using namespace std;
namespace lyx {
InsetHFill::InsetHFill()
- : InsetCommand(InsetCommandParams("hfill"), std::string())
+ : InsetCommand(InsetCommandParams(HFILL_CODE), string())
{}
+CommandInfo const * InsetHFill::findInfo(string const & /* cmdName */)
+{
+ static const char * const paramnames[] = {""};
+ static const CommandInfo info = {0, paramnames, 0};
+ return &info;
+}
+
+
Inset * InsetHFill::clone() const
{
return new InsetHFill;
}
-bool InsetHFill::metrics(MetricsInfo &, Dimension & dim) const
+void InsetHFill::metrics(MetricsInfo &, Dimension & dim) const
+{
+ // The metrics for this inset are calculated externally in
+ // \c TextMetrics::computeRowMetrics. Those are dummy value:
+ dim = Dimension(10, 10, 10);
+}
+
+
+void InsetHFill::draw(PainterInfo & pi, int x, int y) const
{
- dim.wid = 3;
- dim.asc = 3;
- dim.des = 3;
- bool const changed = dim_ != dim;
- dim_ = dim;
- return changed;
+ Dimension const dim = Inset::dimension(*pi.base.bv);
+ int const x0 = x + 1;
+ int const x1 = x + dim.wid - 2;
+ int const y0 = y + dim.des - 1;
+ int const y1 = y - dim.asc + 1;
+
+ pi.pain.line(x0, y1, x0, y0, Color_added_space);
+ pi.pain.line(x0, y, x1, y, Color_added_space,
+ frontend::Painter::line_onoffdash);
+ pi.pain.line(x1, y1, x1, y0, Color_added_space);
}
}
-void InsetHFill::write(Buffer const &, std::ostream & os) const
+void InsetHFill::write(Buffer const &, ostream & os) const
{
os << "\n\\hfill\n";
}