]> git.lyx.org Git - lyx.git/blobdiff - src/vspace.h
move everything into namespace lyx
[lyx.git] / src / vspace.h
index e16f6fe793d36c4fb655558e87f7ad0e225781bb..fdbc7760f0847e0ad21f9a048b1e2cd7701e1132 100644 (file)
 // -*- C++ -*-
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *      
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+/**
+ * \file vspace.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * ====================================================== */
+ * \author Matthias Ettrich
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef VSPACE_H
 #define VSPACE_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include "lyxgluelength.h"
+
+
+namespace lyx {
 
-#include "LString.h"
 
 class BufferParams;
 class BufferView;
 
-///  LyXLength Class
-class LyXLength {
+
+/// A class representing latex vertical spacing
+class VSpace {
 public:
-       /// length units
-       enum UNIT {
-               /// Scaled point (65536sp = 1pt) TeX's smallest unit.
-               SP,
-               /// Point = 1/72.27in = 0.351mm
-               PT,
-               /// Big point (72bp = 1in), also PostScript point
-               BP,
-               /// Didot point = 1/72 of a French inch, = 0.376mm
-               DD,
-               /// Millimeter = 2.845pt
-               MM,
-               /// Pica = 12pt = 4.218mm
-               PC,
-               /// Cicero = 12dd = 4.531mm
-               CC,
-               /// Centimeter = 10mm = 2.371pc
-               CM,
-               /// Inch = 25.4mm = 72.27pt = 6.022pc
-               IN,
-               /// Height of a small "x" for the current font.
-               EX,
-               /// Width of capital "M" in current font.
-               EM,
-               /// Math unit (18mu = 1em) for positioning in math mode
-               MU,
-               /// no unit
-               UNIT_NONE
+       /// The different kinds of spaces.
+       enum vspace_kind {
+               DEFSKIP,
+               SMALLSKIP,
+               MEDSKIP,
+               BIGSKIP,
+               VFILL,
+               LENGTH ///< user-defined length
        };
 
-       //@Man: constructors
-       //@{
-       ///
-       LyXLength() : val(0), uni(LyXLength::PT) {}
-       LyXLength(float v, LyXLength::UNIT u) : val(v), uni(u) {}
-
-       /** "data" must be a decimal number, followed by a unit. */
-       explicit
-        LyXLength(string const & data);
-       //@}
-       
-       //@Man: selectors
-       //@{
-       ///
-       float value() const         { return val; };
-       ///
-       LyXLength::UNIT unit() const { return uni; };
-       //@}
-
-       /// conversion
-       virtual string asString() const;
-       ///
-       virtual string asLatexString() const { return this->asString(); };
-
+       VSpace();
 
-       /** If "data" is valid, the length represented by it is
-         stored into "result", if that is not 0. */
-       friend bool isValidLength(string const & data, 
-                                 LyXLength * result= 0);
+       explicit VSpace(vspace_kind k);
 
-protected:
-       ///
-       float           val;
-       ///
-       LyXLength::UNIT uni;
-};
+       explicit VSpace(LyXLength const & l);
 
+       explicit VSpace(LyXGlueLength const & l);
 
-inline
-bool operator==(LyXLength const & l1, LyXLength const & l2)
-{
-       return l1.value() == l2.value()
-               && l1.unit() == l2.unit();
-}
-       
+       /// Constructor for reading from a .lyx file
+       explicit VSpace(std::string const & data);
 
-extern LyXLength::UNIT unitFromString (string const & data);
-extern bool isValidLength(string const & data, LyXLength * result);
+       /// return the type of vertical space
+       vspace_kind kind() const;
+       /// return the length of this space
+       LyXGlueLength const & length() const;
 
-/// LyXGlueLength class
-class LyXGlueLength : public LyXLength {
-public:
-       //@Man: constructors
-       //@{
-       ///
-       LyXGlueLength(float v,
-                     LyXLength::UNIT u, 
-                     float pv = 0.0,
-                     LyXLength::UNIT pu = LyXLength::UNIT_NONE, 
-                     float mv = 0.0,
-                     LyXLength::UNIT mu = LyXLength::UNIT_NONE) 
-               : LyXLength (v, u), 
-                 plus_val(pv), minus_val(mv), 
-                 plus_uni(pu), minus_uni(mu) {}
-
-       /** "data" must be a decimal number, followed by a unit, and 
-         optional "glue" indicated by "+" and "-".  You may abbreviate
-         reasonably.  Examples:
-         1.2 cm  //  4mm +2pt  //  2cm -4mm +2mm  //  4+0.1-0.2cm
-         The traditional Latex format is also accepted, like  
-         4cm plus 10pt minus 10pt */
-       explicit
-        LyXGlueLength(string const & data);
-       //@}
-       
-       //@Man: selectors
-       //@{
-       ///
-       float plusValue() const         { return plus_val; };
-       ///
-       LyXLength::UNIT plusUnit() const { return plus_uni; };
-       ///
-       float minusValue() const         { return minus_val; };
-       ///
-       LyXLength::UNIT minusUnit() const { return minus_uni; };
-       //@}
-
-       /// conversion
-       virtual string asString() const;
+       // a flag that switches between \vspace and \vspace*
+       bool keep() const;
+       /// if set true, use \vspace* when type is not DEFSKIP
+       void setKeep(bool val);
        ///
-       virtual string asLatexString() const;
+       bool operator==(VSpace const &) const;
 
+       // conversion
 
-       /** If "data" is valid, the length represented by it is
-         stored into "result", if that is not 0. */
-       friend bool isValidGlueLength(string const & data, 
-                                     LyXGlueLength* result= 0);
+       /// how it goes into the LyX file
+       std::string const asLyXCommand() const;
+       /// the latex representation
+       std::string const asLatexCommand(BufferParams const & params) const;
+       /// how it is seen in the LyX window
+       std::string const asGUIName() const;
+       /// the size of the space on-screen
+       int inPixels(BufferView const & bv) const;
 
-protected:
-       ///
-       float           plus_val, minus_val;
-       ///
-       LyXLength::UNIT plus_uni, minus_uni;
+private:
+       /// This VSpace kind
+       vspace_kind kind_;
+       /// the specified length
+       LyXGlueLength len_;
+       /// if true, use \vspace* type
+       bool keep_;
 };
 
 
-inline
-bool operator==(LyXGlueLength const & l1, LyXGlueLength const & l2)
-{
-       return l1.value() == l2.value()
-               && l1.unit() == l2.unit()
-               && l1.plusValue() == l2.plusValue()
-               && l1.plusUnit() == l2.plusUnit()
-               && l1.minusValue() == l2.minusValue()
-               && l1.minusUnit() == l2.minusUnit();
-}
-
-
-
-extern bool isValidGlueLength(string const & data, LyXGlueLength * result);
-
-///  VSpace class
-class VSpace {
-public:
-       ///
-       enum vspace_kind { NONE, DEFSKIP, 
-                          SMALLSKIP, MEDSKIP, BIGSKIP, 
-                          VFILL, LENGTH };
-       /// constructors
-       VSpace() : 
-               kin (NONE), 
-               len(0.0, LyXLength::PT),
-                kp (false) {}
-       ///
-       explicit
-       VSpace(vspace_kind k) : 
-               kin (k), 
-               len (0.0, LyXLength::PT),
-               kp (false) {}
-       ///
-       explicit
-       VSpace(LyXGlueLength l) :
-               kin (LENGTH),
-               len (l),
-               kp (false) {}
-
-       ///
-       explicit
-       VSpace(float v, LyXLength::UNIT u) : 
-               kin (LENGTH), 
-               len (v, u),
-               kp (false) {}
-
-       /// this constructor is for reading from a .lyx file
-       explicit
-       VSpace(string const & data);
-       
-       // access functions
-       vspace_kind kind() const  { return  kin; }
-       ///
-       LyXLength   length() const { return len; }
-
-       // a flag that switches between \vspace and \vspace*
-        bool keep() const      { return kp; }
-       ///
-       void setKeep(bool val) { kp = val; } 
-       ///
-        bool operator == (VSpace const &) const;
-
-       // conversion
-       ///
-       string asLyXCommand() const;  // how it goes into the LyX file
-       ///
-       string asLatexCommand(BufferParams const & params) const;
-       ///
-       int inPixels(BufferView * bv) const;
-       ///
-       int inPixels(int default_height, int default_skip) const;
-private:
-       ///
-       vspace_kind  kin;
-       ///
-       LyXGlueLength    len;
-       ///
-       bool kp;
-};
+} // namespace lyx
 
-#endif
+#endif // VSPACE_H