]> git.lyx.org Git - lyx.git/blob - src/vspace.h
The VSpace fixes (removal of VSPACE::NONE) from Michael and myself
[lyx.git] / src / vspace.h
1 // -*- C++ -*-
2 /**
3  * \file vspace.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Matthias Ettrich
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11
12 #ifndef VSPACE_H
13 #define VSPACE_H
14
15 #include "lyxgluelength.h"
16
17
18 class BufferParams;
19 class BufferView;
20
21
22 /// A class representing latex vertical spacing
23 class VSpace {
24 public:
25         /// The different kinds of spaces.
26         enum vspace_kind {
27                 DEFSKIP,
28                 SMALLSKIP,
29                 MEDSKIP,
30                 BIGSKIP,
31                 VFILL,
32                 LENGTH ///< user-defined length
33         };
34
35         VSpace();
36
37         explicit VSpace(vspace_kind k);
38
39         explicit VSpace(LyXLength const & l);
40
41         explicit VSpace(LyXGlueLength const & l);
42
43         /// Constructor for reading from a .lyx file
44         explicit VSpace(std::string const & data);
45
46         /// return the type of vertical space
47         vspace_kind kind() const;
48         /// return the length of this space
49         LyXGlueLength const & length() const;
50
51         // a flag that switches between \vspace and \vspace*
52         bool keep() const;
53         /// if set true, use \vspace* when type is not DEFSKIP
54         void setKeep(bool val);
55         ///
56         bool operator==(VSpace const &) const;
57
58         // conversion
59
60         /// how it goes into the LyX file
61         std::string const asLyXCommand() const;
62         /// the latex representation
63         std::string const asLatexCommand(BufferParams const & params) const;
64         /// the size of the space on-screen
65         int inPixels(BufferView const & bv) const;
66
67 private:
68         /// This VSpace kind
69         vspace_kind kind_;
70         /// the specified length
71         LyXGlueLength len_;
72         /// if true, use \vspace* type
73         bool keep_;
74 };
75
76 #endif // VSPACE_H