X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetspace.C;h=e7fc211fe57e58039ea77110956403a6d02baea1;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=60e62a8ad8a6a8fb47f7e67a632bbbe3318d8551;hpb=cd424d78530c9e38502ee7f989ef5c426c97ad61;p=lyx.git diff --git a/src/insets/insetspace.C b/src/insets/insetspace.C index 60e62a8ad8..e7fc211fe5 100644 --- a/src/insets/insetspace.C +++ b/src/insets/insetspace.C @@ -21,10 +21,12 @@ #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; @@ -46,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; @@ -72,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; @@ -106,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{}"; @@ -134,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; @@ -161,7 +166,7 @@ void InsetSpace::read(Buffer const &, LyXLex & lex) } -int InsetSpace::latex(Buffer const &, ostream & os, +int InsetSpace::latex(Buffer const &, odocstream & os, OutputParams const & runparams) const { switch (kind_) { @@ -194,7 +199,7 @@ int InsetSpace::latex(Buffer const &, ostream & os, } -int InsetSpace::plaintext(Buffer const &, ostream & os, +int InsetSpace::plaintext(Buffer const &, odocstream & os, OutputParams const &) const { switch (kind_) { @@ -213,8 +218,8 @@ int InsetSpace::plaintext(Buffer const &, ostream & os, } -int InsetSpace::linuxdoc(Buffer const &, ostream & os, - OutputParams const &) const +int InsetSpace::docbook(Buffer const &, odocstream & os, + OutputParams const &) const { switch (kind_) { case NORMAL: @@ -234,28 +239,14 @@ int InsetSpace::linuxdoc(Buffer const &, ostream & os, } -int InsetSpace::docbook(Buffer const &, ostream & os, - OutputParams const &) 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_)); } @@ -276,7 +267,5 @@ bool InsetSpace::isSpace() const return true; } -bool InsetSpace::isLineSeparator() const -{ - return false; -} + +} // namespace lyx