X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetnewline.C;h=302dda77690d1ddf2c260625c51bbd11e48653de;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=61915f88520be00174abe08eba71c2262bcecb2b;hpb=0d54d6b74dcff2cce52bfa78d07eea9f3d62aeda;p=lyx.git diff --git a/src/insets/insetnewline.C b/src/insets/insetnewline.C index 61915f8852..302dda7769 100644 --- a/src/insets/insetnewline.C +++ b/src/insets/insetnewline.C @@ -12,7 +12,6 @@ #include "insetnewline.h" -#include "BufferView.h" #include "debug.h" #include "LColor.h" #include "lyxtext.h" @@ -20,9 +19,12 @@ #include "paragraph.h" #include "paragraph_funcs.h" -#include "frontends/font_metrics.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" + +namespace lyx { + using std::endl; using std::ostream; @@ -35,43 +37,40 @@ void InsetNewline::read(Buffer const &, LyXLex &) void InsetNewline::write(Buffer const &, ostream & os) const { - os << "\n\\newline \n"; + os << "\n\\newline\n"; } -void InsetNewline::metrics(MetricsInfo & mi, Dimension & dim) const +bool InsetNewline::metrics(MetricsInfo & mi, Dimension & dim) const { - LyXFont & font = mi.base.font; - dim.asc = font_metrics::maxAscent(font); - dim.des = font_metrics::maxDescent(font); - dim.wid = font_metrics::width('n', font); + frontend::FontMetrics const & fm = theFontMetrics(mi.base.font); + dim.asc = fm.maxAscent(); + dim.des = fm.maxDescent(); + dim.wid = fm.width('n'); + bool const changed = dim_ != dim; dim_ = dim; + return changed; } -int InsetNewline::latex(Buffer const &, ostream &, - LatexRunParams const &) const +int InsetNewline::latex(Buffer const &, odocstream &, + OutputParams const &) const { lyxerr << "Eek, calling InsetNewline::latex !" << endl; return 0; } -int InsetNewline::ascii(Buffer const &, ostream & os, int) const -{ - os << '\n'; - return 0; -} - - -int InsetNewline::linuxdoc(Buffer const &, std::ostream & os) const +int InsetNewline::plaintext(Buffer const &, odocstream & os, + OutputParams const &) const { os << '\n'; return 0; } -int InsetNewline::docbook(Buffer const &, std::ostream & os, bool) const +int InsetNewline::docbook(Buffer const &, odocstream & os, + OutputParams const &) const { os << '\n'; return 0; @@ -80,13 +79,9 @@ int InsetNewline::docbook(Buffer const &, std::ostream & os, bool) const void InsetNewline::draw(PainterInfo & pi, int x, int y) const { - int const wid = font_metrics::width('n', pi.base.font); - int const asc = font_metrics::maxAscent(pi.base.font); - - // hack, and highly dubious - lyx::pos_type pos = ownerPar(*pi.base.bv->buffer(), this) - .getPositionOfInset(this); - bool const ltr_pos = (pi.base.bv->text->bidi_level(pos) % 2 == 0); + frontend::FontMetrics const & fm = theFontMetrics(pi.base.font); + int const wid = fm.width('n'); + int const asc = fm.maxAscent(); int xp[3]; int yp[3]; @@ -95,7 +90,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const yp[1] = int(y - 0.500 * asc * 0.75); yp[2] = int(y - 0.125 * asc * 0.75); - if (ltr_pos) { + if (pi.ltr_pos) { xp[0] = int(x + wid * 0.375); xp[1] = int(x); xp[2] = int(x + wid * 0.375); @@ -111,7 +106,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const yp[1] = int(y - 0.500 * asc * 0.75); yp[2] = int(y - asc * 0.75); - if (ltr_pos) { + if (pi.ltr_pos) { xp[0] = int(x); xp[1] = int(x + wid); xp[2] = int(x + wid); @@ -123,3 +118,12 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const pi.pain.lines(xp, yp, 3, LColor::eolmarker); } + + +bool InsetNewline::isSpace() const +{ + return true; +} + + +} // namespace lyx