// -*- C++ -*-
-/* This file is part of
-* ======================================================
-*
-* LyX, The Document Processor
-*
-* Copyright (C) 1995 1996 Matthias Ettrich
-* and the LyX Team.
-*
-*======================================================*/
+/**
+ * \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
+#ifndef SPACING_H
+#define SPACING_H
+
+#include <iosfwd>
+#include <string>
-#include <stdio.h>
///
class Spacing {
///
Double,
///
- Other
+ Other,
+ ///
+ Default
};
///
- Spacing()
- {
- space = Single;
- value = getValue();
- }
+ Spacing() : space(Default), value("1.0") {}
///
- float getValue() const
- {
- switch(space) {
- case Single: return 1.0;
- case Onehalf: return 1.25;
- case Double: return 1.667;
- case Other: return value;
- }
- return 1.0;
+ Spacing(Spacing::Space sp, float val = 1.0) {
+ set(sp, val);
}
- ///
- Spacing::Space getSpace() const
- {
- return space;
+ Spacing(Spacing::Space sp, std::string const & val) {
+ set(sp, val);
}
///
- void set(Spacing::Space sp, float val= 1.0)
- {
- 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;
- }
- }
+ bool isDefault() const {
+ return space == Default;
}
///
- void set(Spacing::Space sp, char const* val)
- {
- float fval;
- sscanf(val,"%f",&fval);
- set(sp,fval);
- }
+ std::string const getValueAsString() const;
///
- void writeFile(FILE *file);
+ double getValue() const;
///
- friend bool operator!=(Spacing const &a, Spacing const &b)
- {
- if (a.space == b.space && a.getValue() == b.getValue())
- return false;
- return true;
- }
+ Spacing::Space getSpace() const { return space; }
+ ///
+ void set(Spacing::Space sp, float val = 1.0);
+ ///
+ void set(Spacing::Space sp, std::string const & val);
+ ///
+ void writeFile(std::ostream &, bool para = false) const;
+ ///
+ std::string const writeEnvirBegin() const;
+ ///
+ std::string const writeEnvirEnd() const;
+
private:
///
Space space;
///
- float value;
+ 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);
+}
#endif