X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetnewline.C;h=302dda77690d1ddf2c260625c51bbd11e48653de;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=d3cc33a0dba3c719c7eca59f5682c16d1838cc2d;hpb=2a102671d95e19bd6043cd67a54f562abdb35dbc;p=lyx.git diff --git a/src/insets/insetnewline.C b/src/insets/insetnewline.C index d3cc33a0db..302dda7769 100644 --- a/src/insets/insetnewline.C +++ b/src/insets/insetnewline.C @@ -5,71 +5,72 @@ * * \author John Levon * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #include #include "insetnewline.h" -#include "BufferView.h" #include "debug.h" -#include "dimension.h" -#include "paragraph.h" +#include "LColor.h" #include "lyxtext.h" #include "metricsinfo.h" -#include "support/LOstream.h" +#include "paragraph.h" +#include "paragraph_funcs.h" + +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" -#include "frontends/font_metrics.h" -using std::ostream; + +namespace lyx { + using std::endl; +using std::ostream; -void InsetNewline::read(Buffer const *, LyXLex &) +void InsetNewline::read(Buffer const &, LyXLex &) { /* Nothing to read */ } -void InsetNewline::write(Buffer const *, ostream & os) const +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; @@ -78,12 +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 = parOwner()->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]; @@ -92,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); @@ -108,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); @@ -120,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