3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Lars Gullik Bjønnes
7 * \author Jean-Marc Lasgouttes
9 * Full author contact details are available in file CREDITS.
15 #include "support/lstrings.h"
16 #include "support/tostr.h"
21 using lyx::support::strToDbl;
25 using std::ostringstream;
29 string const Spacing::spacing_string[]
30 = {"single", "onehalf", "double", "other"};
33 string const Spacing::getValueAsString() const
36 case Default: // nothing special should happen with this...
37 case Single: return "1.0";
38 case Onehalf: return "1.25";
39 case Double: return "1.667";
40 case Other: return value;
46 double Spacing::getValue() const
48 return strToDbl(getValueAsString());
52 void Spacing::set(Spacing::Space sp, float val)
54 set(sp, convert<string>(val));
58 void Spacing::set(Spacing::Space sp, string const & val)
62 switch (int(strToDbl(val) * 1000 + 0.5)) {
80 void Spacing::writeFile(ostream & os, bool para) const
82 if (space == Default) return;
84 string cmd = para ? "\\paragraph_spacing " : "\\spacing ";
86 if (getSpace() == Spacing::Other) {
87 os << cmd << spacing_string[getSpace()]
88 << ' ' << getValueAsString() << "\n";
90 os << cmd << spacing_string[getSpace()] << "\n";
95 string const Spacing::writeEnvirBegin() const
98 case Default: break; // do nothing
100 return "\\begin{singlespace}";
102 return "\\begin{onehalfspace}";
104 return "\\begin{doublespace}";
108 ost << "\\begin{spacing}{"
109 << getValueAsString() << '}';
117 string const Spacing::writeEnvirEnd() const
120 case Default: break; // do nothing
122 return "\\end{singlespace}";
124 return "\\end{onehalfspace}";
126 return "\\end{doublespace}";
128 return "\\end{spacing}";