lyx_mirror/src/Spacing.h
Juergen Spitzmueller bd879efaa8 Fix switch of language and line spacing in InTitle commands.
Fixes: #9332, #10849
(cherry picked from commit 49e3f8e830)
2018-02-16 17:24:00 +01:00

98 lines
2.0 KiB
C++

// -*- C++ -*-
/**
* \file src/Spacing.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef SPACING_H
#define SPACING_H
#include "support/strfwd.h"
#include <string>
namespace lyx {
///
class Spacing {
public:
///
enum Space {
///
Single,
///
Onehalf,
///
Double,
///
Other,
///
Default
};
///
Spacing() : space(Default), value("1.0") {}
///
Spacing(Spacing::Space sp, double val = 1.0) { set(sp, val); }
///
Spacing(Spacing::Space sp, std::string const & val) { set(sp, val); }
///
bool isDefault() const { return space == Default; }
///
std::string const getValueAsString() const;
///
double getValue() const;
///
Spacing::Space getSpace() const { return space; }
///
void set(Spacing::Space sp, double val = 1.0);
///
void set(Spacing::Space sp, std::string const & val);
///
void writeFile(std::ostream &, bool para = false) const;
/// useSetSpace is true when using the variant supported by
/// the memoir class.
std::string const writeEnvirBegin(bool useSetSpace) const;
/// useSetSpace is true when using the variant supported by
/// the memoir class.
std::string const writeEnvirEnd(bool useSetSpace) const;
/// useSetSpace is true when using the variant supported by
/// the memoir class.
std::string const writeCmd(bool useSetSpace) const;
/// useSetSpace is true when using the variant supported by
/// the memoir class.
std::string const writePreamble(bool useSetSpace) const;
private:
///
Space space;
///
std::string value;
/// names of line spacing
static std::string const spacing_string[];
};
///
inline
bool operator==(Spacing const & a, Spacing const & b)
{
return a.getSpace() == b.getSpace()
&& a.getValueAsString() == b.getValueAsString();
}
///
inline
bool operator!=(Spacing const & a, Spacing const & b)
{
return !(a == b);
}
} // namespace lyx
#endif // SPACING_H