X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetHFill.cpp;h=76af40d23f839be8b0dcc6e3162db23d927afde1;hb=06254d11dfdf670fab3548dc2a2674e7a261262c;hp=c2e386d4589e379af462aa6c6f9f5809dafd191c;hpb=c8d00ed1272cd489041bed2115081008b6a26489;p=lyx.git diff --git a/src/insets/InsetHFill.cpp b/src/insets/InsetHFill.cpp index c2e386d458..76af40d23f 100644 --- a/src/insets/InsetHFill.cpp +++ b/src/insets/InsetHFill.cpp @@ -11,35 +11,59 @@ #include #include "InsetHFill.h" -#include "gettext.h" -#include "support/std_ostream.h" +#include "MetricsInfo.h" +#include "frontends/Painter.h" -namespace lyx { +#include "support/gettext.h" + +#include + +using namespace std; -using std::ostream; +namespace lyx { InsetHFill::InsetHFill() - : InsetCommand(InsetCommandParams("hfill"), std::string()) + : InsetCommand(InsetCommandParams(HFILL_CODE), string()) {} -std::auto_ptr InsetHFill::doClone() const +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; +} + + +void InsetHFill::metrics(MetricsInfo &, Dimension & dim) const { - return std::auto_ptr(new InsetHFill); + // The metrics for this inset are calculated externally in + // \c TextMetrics::computeRowMetrics. Those are dummy value: + dim = Dimension(10, 10, 10); } -bool InsetHFill::metrics(MetricsInfo &, Dimension & dim) const +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); } @@ -50,10 +74,10 @@ docstring const InsetHFill::getScreenLabel(Buffer const &) const int InsetHFill::plaintext(Buffer const &, odocstream & os, - OutputParams const &) const + OutputParams const &) const { os << " "; - return 5; + return 5; }