X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetHFill.cpp;h=76af40d23f839be8b0dcc6e3162db23d927afde1;hb=06254d11dfdf670fab3548dc2a2674e7a261262c;hp=9369f09735d2a03ce424f697d7bfaf77fba7b6e1;hpb=ed858d73e57ce7aa89e38c1bc4d799362edb0227;p=lyx.git diff --git a/src/insets/InsetHFill.cpp b/src/insets/InsetHFill.cpp index 9369f09735..76af40d23f 100644 --- a/src/insets/InsetHFill.cpp +++ b/src/insets/InsetHFill.cpp @@ -11,33 +11,59 @@ #include #include "InsetHFill.h" -#include "gettext.h" -#include "support/std_ostream.h" +#include "MetricsInfo.h" +#include "frontends/Painter.h" + +#include "support/gettext.h" + +#include + +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); } @@ -63,7 +89,7 @@ int InsetHFill::docbook(Buffer const &, odocstream & os, } -void InsetHFill::write(Buffer const &, std::ostream & os) const +void InsetHFill::write(Buffer const &, ostream & os) const { os << "\n\\hfill\n"; }