X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSpacing.C;h=35eecde79e0d2b268d4e26fdaa1ea6cb8f9ecb56;hb=024275f0690b41634e26dabe8758e3dc6cd31ee2;hp=d34c163e770b611f569da15bcca109de435203fb;hpb=4b2a999762c83627476428e595d3c1e3704a3da0;p=lyx.git diff --git a/src/Spacing.C b/src/Spacing.C index d34c163e77..35eecde79e 100644 --- a/src/Spacing.C +++ b/src/Spacing.C @@ -1,98 +1,101 @@ -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \file Spacing.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * + * Full author contact details are available in file CREDITS. + */ #include -#ifdef __GNUG__ -#pragma implementation -#endif +#include "Spacing.h" +#include "support/lstrings.h" +#include "support/convert.h" -#ifdef HAVE_SSTREAM #include -using std::istringstream; -using std::ostringstream; -#else -#include -#endif +#include + + +namespace lyx { -#include "Spacing.h" -#include "LString.h" -using std::ios; using std::ostream; +using std::ostringstream; +using std::string; -/// how can I put this inside of Spacing (class) -static -char const * spacing_string[] = {"single", "onehalf", "double", "other"}; +string const Spacing::spacing_string[] + = {"single", "onehalf", "double", "other"}; -float Spacing::getValue() const + +string const Spacing::getValueAsString() const { - switch(space) { + 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, char const * val) +void Spacing::set(Spacing::Space sp, double val) { - float fval; -#ifdef HAVE_SSTREAM - istringstream istr(val); -#else - istrstream istr(val); -#endif - istr >> fval; - set(sp, fval); + set(sp, convert(val)); +} + + +void Spacing::set(Spacing::Space sp, string const & val) +{ + 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; + } + } } void Spacing::writeFile(ostream & os, bool para) const { if (space == Default) return; - + 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"; + } } -string Spacing::writeEnvirBegin() const +string const Spacing::writeEnvirBegin() const { - switch(space) { + switch (space) { case Default: break; // do nothing case Single: return "\\begin{singlespace}"; @@ -101,28 +104,20 @@ string Spacing::writeEnvirBegin() const case Double: return "\\begin{doublespace}"; case Other: -#ifdef HAVE_SSTREAM + { ostringstream ost; ost << "\\begin{spacing}{" - << getValue() << "}"; - return ost.str().c_str(); -#else - { - char tmp[512]; - ostrstream ost(tmp, 512); - ost << "\\begin{spacing}{" - << getValue() << "}"; - return ost.str(); - } -#endif + << getValueAsString() << '}'; + return ost.str(); + } } return string(); } -string Spacing::writeEnvirEnd() const +string const Spacing::writeEnvirEnd() const { - switch(space) { + switch (space) { case Default: break; // do nothing case Single: return "\\end{singlespace}"; @@ -135,3 +130,6 @@ string Spacing::writeEnvirEnd() const } return string(); } + + +} // namespace lyx