X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSpacing.C;h=d8ca162657ee33a306e4e61c4b2836443fddaff3;hb=8ebf862adbe377d032f888a82d88d4393aebc929;hp=10d45e1382b03c0ad9ed598a3c1208d365cddd3e;hpb=91de22ef340abbf1e9ba7d422bcd9024fa90d63f;p=lyx.git diff --git a/src/Spacing.C b/src/Spacing.C index 10d45e1382..d8ca162657 100644 --- a/src/Spacing.C +++ b/src/Spacing.C @@ -11,48 +11,67 @@ #include -#include "Lsstream.h" #include "Spacing.h" +#include "support/lstrings.h" +#include "support/convert.h" + +#include +#include + -using std::ios; using std::ostream; +using std::ostringstream; +using std::string; + string const Spacing::spacing_string[] = {"single", "onehalf", "double", "other"}; -float Spacing::getValue() const + +string const Spacing::getValueAsString() const { switch (space) { case Default: // nothing special should happen with this... - case Single: return 1.0; - case Onehalf: return 1.25; - case Double: return 1.667; + case Single: return "1.0"; + case Onehalf: return "1.25"; + case Double: return "1.667"; case Other: return value; } - return 1.0; + return "1.0"; } -void Spacing::set(Spacing::Space sp, float val) +double Spacing::getValue() const { - space = sp; - if (sp == Other) { - switch (int(val * 1000 + 0.5)) { - case 1000: space = Single; break; - case 1250: space = Onehalf; break; - case 1667: space = Double; break; - default: value = val; break; - } - } + return convert(getValueAsString()); +} + + +void Spacing::set(Spacing::Space sp, double val) +{ + set(sp, convert(val)); } void Spacing::set(Spacing::Space sp, string const & val) { - float fval = 0.0; - istringstream istr(val.c_str()); - istr >> fval; - set(sp, fval); + space = sp; + if (sp == Other) { + switch (int(convert(val) * 1000 + 0.5)) { + case 1000: + space = Single; + break; + case 1250: + space = Onehalf; + break; + case 1667: + space = Double; + break; + default: + value = val; + break; + } + } } @@ -63,12 +82,10 @@ void Spacing::writeFile(ostream & os, bool para) const string cmd = para ? "\\paragraph_spacing " : "\\spacing "; if (getSpace() == Spacing::Other) { - os.setf(ios::showpoint|ios::fixed); - os.precision(2); os << cmd << spacing_string[getSpace()] - << ' ' << getValue() << " \n"; + << ' ' << getValueAsString() << "\n"; } else { - os << cmd << spacing_string[getSpace()] << " \n"; + os << cmd << spacing_string[getSpace()] << "\n"; } } @@ -87,8 +104,8 @@ string const Spacing::writeEnvirBegin() const { ostringstream ost; ost << "\\begin{spacing}{" - << getValue() << '}'; - return STRCONV(ost.str()); + << getValueAsString() << '}'; + return ost.str(); } } return string();