]> git.lyx.org Git - lyx.git/blobdiff - src/bufferparams.C
cosmetic fix
[lyx.git] / src / bufferparams.C
index d4c166aaf828de5bfeebfc15af4780e810ff738d..d560eaff6c381545889e9ef07d9f13146756cd3e 100644 (file)
@@ -34,6 +34,8 @@
 #include <cstdlib>
 #include <algorithm>
 
+using namespace lyx::support;
+
 using std::ostream;
 using std::endl;
 using std::pair;
@@ -117,7 +119,7 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
                if (tmpret == -1)
                        ++tmpret;
                paragraph_separation =
-                       static_cast<BufferParams::PARSEP>(tmpret);
+                       static_cast<PARSEP>(tmpret);
        } else if (token == "\\defskip") {
                lex.nextToken();
                defskip = VSpace(lex.getString());
@@ -165,20 +167,20 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
                if (tmpret == -1)
                        ++tmpret;
                else
-                       papersize2 = tmpret;
+                       papersize2 = VMARGIN_PAPER_TYPE(tmpret);
        } else if (token == "\\paperpackage") {
                int tmpret = lex.findToken(string_paperpackages);
                if (tmpret == -1) {
                        ++tmpret;
-                       paperpackage = BufferParams::PACKAGE_NONE;
+                       paperpackage = PACKAGE_NONE;
                } else
-                       paperpackage = tmpret;
+                       paperpackage = PAPER_PACKAGES(tmpret);
        } else if (token == "\\use_geometry") {
                lex.nextToken();
                use_geometry = lex.getInteger();
        } else if (token == "\\use_amsmath") {
                lex.nextToken();
-               use_amsmath = static_cast<BufferParams::AMS>(
+               use_amsmath = static_cast<AMS>(
                        lex.getInteger());
        } else if (token == "\\use_natbib") {
                lex.nextToken();
@@ -200,7 +202,7 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
                if (tmpret == -1)
                        ++tmpret;
                orientation =
-                       static_cast<BufferParams::PAPER_ORIENTATION>(tmpret);
+                       static_cast<PAPER_ORIENTATION>(tmpret);
        } else if (token == "\\paperwidth") {
                lex.next();
                paperwidth = lex.getString();
@@ -473,6 +475,9 @@ bool BufferParams::writeLaTeX(ostream & os, LaTeXFeatures & features,
        if (!use_geometry &&
            (paperpackage == PACKAGE_NONE)) {
                switch (papersize) {
+               case PAPER_A3PAPER:
+                       clsoptions << "a3paper,";
+                       break;
                case PAPER_A4PAPER:
                        clsoptions << "a4paper,";
                        break;
@@ -491,6 +496,8 @@ bool BufferParams::writeLaTeX(ostream & os, LaTeXFeatures & features,
                case PAPER_LEGALPAPER:
                        clsoptions << "legalpaper,";
                        break;
+               case PAPER_DEFAULT:
+                       break;
                }
        }
 
@@ -589,6 +596,8 @@ bool BufferParams::writeLaTeX(ostream & os, LaTeXFeatures & features,
        // At the very beginning the text parameters.
        if (paperpackage != PACKAGE_NONE) {
                switch (paperpackage) {
+               case PACKAGE_NONE:
+                       break;
                case PACKAGE_A4:
                        os << "\\usepackage{a4}\n";
                        texrow.newline();
@@ -950,3 +959,60 @@ void BufferParams::readGraphicsDriver(LyXLex & lex)
                }
        }
 }
+
+
+string const BufferParams::paperSizeName() const
+{
+       char real_papersize = papersize;
+       if (real_papersize == PAPER_DEFAULT)
+               real_papersize = lyxrc.default_papersize;
+
+       switch (real_papersize) {
+       case PAPER_A3PAPER:
+               return "a3";
+       case PAPER_A4PAPER:
+               return "a4";
+       case PAPER_A5PAPER:
+               return "a5";
+       case PAPER_B5PAPER:
+               return "b5";
+       case PAPER_EXECUTIVEPAPER:
+               return "foolscap";
+       case PAPER_LEGALPAPER:
+               return "legal";
+       case PAPER_USLETTER:
+       default:
+               return "letter";
+       }
+}
+
+
+string const BufferParams::dvips_options() const
+{
+       string result;
+
+       if (use_geometry
+           && papersize2 == VM_PAPER_CUSTOM
+           && !lyxrc.print_paper_dimension_flag.empty()
+           && !paperwidth.empty()
+           && !paperheight.empty()) {
+               // using a custom papersize
+               result = lyxrc.print_paper_dimension_flag;
+               result += ' ' + paperwidth;
+               result += ',' + paperheight;
+       } else {
+               string const paper_option = paperSizeName();
+               if (paper_option != "letter" ||
+                   orientation != ORIENTATION_LANDSCAPE) {
+                       // dvips won't accept -t letter -t landscape.  
+                       // In all other cases, include the paper size
+                       // explicitly.
+                       result = lyxrc.print_paper_flag;
+                       result += ' ' + paper_option;
+               }
+       }
+       if (orientation == ORIENTATION_LANDSCAPE &&
+           papersize2 != VM_PAPER_CUSTOM)
+               result += ' ' + lyxrc.print_landscape_flag;
+       return result;
+}