X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetspace.C;h=e7fc211fe57e58039ea77110956403a6d02baea1;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=736758f8801d3771eff469b8b4903dbb3818c2c6;hpb=0d54d6b74dcff2cce52bfa78d07eea9f3d62aeda;p=lyx.git diff --git a/src/insets/insetspace.C b/src/insets/insetspace.C index 736758f880..e7fc211fe5 100644 --- a/src/insets/insetspace.C +++ b/src/insets/insetspace.C @@ -16,14 +16,18 @@ #include "insetspace.h" #include "debug.h" -#include "latexrunparams.h" #include "LColor.h" #include "lyxlex.h" #include "metricsinfo.h" +#include "outputparams.h" -#include "frontends/font_metrics.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" + +namespace lyx { + +using std::string; using std::max; using std::auto_ptr; using std::ostream; @@ -44,20 +48,21 @@ InsetSpace::Kind InsetSpace::kind() const } -void InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const +bool InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const { - LyXFont & font = mi.base.font; - dim.asc = font_metrics::maxAscent(font); - dim.des = font_metrics::maxDescent(font); + frontend::FontMetrics const & fm = + theFontMetrics(mi.base.font); + dim.asc = fm.maxAscent(); + dim.des = fm.maxDescent(); switch (kind_) { case THIN: case NEGTHIN: - dim.wid = font_metrics::width("x", font) / 3; + dim.wid = fm.width(char_type('x')) / 3; break; case PROTECTED: case NORMAL: - dim.wid = font_metrics::width("x", font); + dim.wid = fm.width(char_type('x')); break; case QUAD: dim.wid = 20; @@ -70,14 +75,17 @@ void InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const dim.wid = 10; break; } + bool const changed = dim_ != dim; dim_ = dim; + return changed; } void InsetSpace::draw(PainterInfo & pi, int x, int y) const { int const w = width(); - int const h = font_metrics::ascent('x', pi.base.font); + int const h = theFontMetrics(pi.base.font) + .ascent('x'); int xp[4], yp[4]; xp[0] = x; @@ -104,13 +112,13 @@ void InsetSpace::write(Buffer const &, ostream & os) const string command; switch (kind_) { case NORMAL: - command = "\\space"; + command = "\\space{}"; break; case PROTECTED: command = "~"; break; case THIN: - command = "\\,"; + command = "\\thinspace{}"; break; case QUAD: command = "\\quad{}"; @@ -132,17 +140,16 @@ void InsetSpace::write(Buffer const &, ostream & os) const } -// This function will not be necessary when lyx3 void InsetSpace::read(Buffer const &, LyXLex & lex) { - lex.nextToken(); + lex.next(); string const command = lex.getString(); - if (command == "\\space") + if (command == "\\space{}") kind_ = NORMAL; else if (command == "~") kind_ = PROTECTED; - else if (command == "\\,") + else if (command == "\\thinspace{}") kind_ = THIN; else if (command == "\\quad{}") kind_ = QUAD; @@ -159,8 +166,8 @@ void InsetSpace::read(Buffer const &, LyXLex & lex) } -int InsetSpace::latex(Buffer const &, ostream & os, - LatexRunParams const & runparams) const +int InsetSpace::latex(Buffer const &, odocstream & os, + OutputParams const & runparams) const { switch (kind_) { case NORMAL: @@ -192,7 +199,8 @@ int InsetSpace::latex(Buffer const &, ostream & os, } -int InsetSpace::ascii(Buffer const &, ostream & os, int) const +int InsetSpace::plaintext(Buffer const &, odocstream & os, + OutputParams const &) const { switch (kind_) { case NORMAL: @@ -210,7 +218,8 @@ int InsetSpace::ascii(Buffer const &, ostream & os, int) const } -int InsetSpace::linuxdoc(Buffer const &, ostream & os) const +int InsetSpace::docbook(Buffer const &, odocstream & os, + OutputParams const &) const { switch (kind_) { case NORMAL: @@ -230,27 +239,14 @@ int InsetSpace::linuxdoc(Buffer const &, ostream & os) const } -int InsetSpace::docbook(Buffer const &, ostream & os, bool) const +int InsetSpace::textString(Buffer const & buf, odocstream & os, + OutputParams const & op) const { - switch (kind_) { - case NORMAL: - case QUAD: - case QQUAD: - case ENSKIP: - os << " "; - break; - case PROTECTED: - case ENSPACE: - case THIN: - case NEGTHIN: - os << " "; - break; - } - return 0; + return plaintext(buf, os, op); } -auto_ptr InsetSpace::clone() const +auto_ptr InsetSpace::doClone() const { return auto_ptr(new InsetSpace(kind_)); } @@ -271,7 +267,5 @@ bool InsetSpace::isSpace() const return true; } -bool InsetSpace::isLineSeparator() const -{ - return false; -} + +} // namespace lyx