]> git.lyx.org Git - lyx.git/blobdiff - src/VSpace.cpp
DocBook: add a layout tag to tell whether an item is the abstract or not.
[lyx.git] / src / VSpace.cpp
index 971ac96a94e64053ef66d1b0271a151c8c45900e..d176850c876d48fd64e261deab215c1f9ae7fb29 100644 (file)
 #include "BufferParams.h"
 #include "BufferView.h"
 #include "support/gettext.h"
-#include "Length.h"
 #include "Text.h"
 #include "TextMetrics.h" // for defaultRowHeight()
 
 #include "support/convert.h"
+#include "support/Length.h"
 #include "support/lstrings.h"
 
 #include "support/lassert.h"
@@ -78,6 +78,10 @@ VSpace::VSpace(string const & data)
                kind_ = MEDSKIP;
        else if (prefixIs(input, "bigskip"))
                kind_ = BIGSKIP;
+       else if (prefixIs(input, "halfline"))
+               kind_ = HALFLINE;
+       else if (prefixIs(input, "fullline"))
+               kind_ = FULLLINE;
        else if (prefixIs(input, "vfill"))
                kind_ = VFILL;
        else if (isValidGlueLength(input, &len_))
@@ -111,12 +115,30 @@ string const VSpace::asLyXCommand() const
 {
        string result;
        switch (kind_) {
-       case DEFSKIP:   result = "defskip";      break;
-       case SMALLSKIP: result = "smallskip";    break;
-       case MEDSKIP:   result = "medskip";      break;
-       case BIGSKIP:   result = "bigskip";      break;
-       case VFILL:     result = "vfill";        break;
-       case LENGTH:    result = len_.asString(); break;
+       case DEFSKIP:
+               result = "defskip";
+               break;
+       case SMALLSKIP:
+               result = "smallskip";
+               break;
+       case MEDSKIP:
+               result = "medskip";
+               break;
+       case BIGSKIP:
+               result = "bigskip";
+               break;
+       case HALFLINE:
+               result = "halfline";
+               break;
+       case FULLLINE:
+               result = "fullline";
+               break;
+       case VFILL:
+               result = "vfill";
+               break;
+       case LENGTH:
+               result = len_.asString();
+               break;
        }
        if (keep_)
                result += '*';
@@ -138,6 +160,12 @@ string const VSpace::asLatexCommand(BufferParams const & params) const
 
        case BIGSKIP:
                return keep_ ? "\\vspace*{\\bigskipamount}" : "\\bigskip{}";
+       
+       case HALFLINE:
+               return keep_ ? "\\vspace*{.5\\baselineskip}" : "\\vspace{.5\\baselineskip}";
+
+       case FULLLINE:
+               return keep_ ? "\\vspace*{\\baselineskip}" : "\\vspace{\\baselineskip}";
 
        case VFILL:
                return keep_ ? "\\vspace*{\\fill}" : "\\vfill{}";
@@ -170,6 +198,12 @@ docstring const VSpace::asGUIName() const
        case BIGSKIP:
                result = _("Big skip");
                break;
+       case HALFLINE:
+               result = _("Half line height");
+               break;
+       case FULLLINE:
+               result = _("Line height");
+               break;
        case VFILL:
                result = _("Vertical fill");
                break;
@@ -187,16 +221,31 @@ string VSpace::asHTMLLength() const
 {
        string result;
        switch (kind_) {
-               case DEFSKIP:   result = "2ex"; break;
-               case SMALLSKIP: result = "1ex"; break;
-               case MEDSKIP:   result = "3ex"; break;
-               case BIGSKIP:   result = "5ex"; break;
+               case DEFSKIP:
+                       result = "2ex";
+                       break;
+               case SMALLSKIP:
+                       result = "1ex";
+                       break;
+               case MEDSKIP:
+                       result = "3ex";
+                       break;
+               case BIGSKIP:
+                       result = "5ex";
+                       break;
+               case HALFLINE:
+                       result = "0.6em";
+                       break;
+               case FULLLINE:
+                       result = "1.2em";
+                       break;
                case LENGTH: {
                        Length tmp = len_.len();
                        if (tmp.value() > 0)
                                result = tmp.asHTMLString();
                }
-               case VFILL:     break;
+               case VFILL:
+                       break;
        }
        return result;
 }
@@ -227,6 +276,12 @@ int VSpace::inPixels(BufferView const & bv) const
                // leave space for the vfill symbol
                return 3 * default_height;
 
+       case HALFLINE:
+               return int(default_height / 2);
+
+       case FULLLINE:
+               return default_height;
+
        case LENGTH:
                return bv.inPixels(len_.len());