X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetspace.C;h=e7fc211fe57e58039ea77110956403a6d02baea1;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=eb333e649cec19e6353d3192973caaa65049ebb2;hpb=4ba8a4d6f603c01d7ab7dfa937dc6072ef5db1f2;p=lyx.git diff --git a/src/insets/insetspace.C b/src/insets/insetspace.C index eb333e649c..e7fc211fe5 100644 --- a/src/insets/insetspace.C +++ b/src/insets/insetspace.C @@ -6,9 +6,9 @@ * \author Asger Alstrup Nielsen * \author Jean-Marc Lasgouttes * \author Lars Gullik Bjønnes - * \author Juergen Spitzmueller + * \author Jürgen Spitzmüller * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #include @@ -16,19 +16,21 @@ #include "insetspace.h" #include "debug.h" -#include "dimension.h" -#include "LaTeXFeatures.h" -#include "latexrunparams.h" -#include "BufferView.h" -#include "frontends/Painter.h" -#include "frontends/font_metrics.h" +#include "LColor.h" #include "lyxlex.h" -#include "lyxfont.h" #include "metricsinfo.h" +#include "outputparams.h" -using std::ostream; +#include "frontends/FontMetrics.h" +#include "frontends/Painter.h" + + +namespace lyx { + +using std::string; using std::max; using std::auto_ptr; +using std::ostream; InsetSpace::InsetSpace() @@ -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; @@ -101,18 +107,18 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const } -void InsetSpace::write(Buffer const *, ostream & os) const +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) +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,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: @@ -194,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: @@ -212,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: @@ -232,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_)); } @@ -273,7 +267,5 @@ bool InsetSpace::isSpace() const return true; } -bool InsetSpace::isLineSeparator() const -{ - return false; -} + +} // namespace lyx