]> git.lyx.org Git - lyx.git/blobdiff - src/PDFOptions.h
Document NeedCProtect -1
[lyx.git] / src / PDFOptions.h
index 2411d6614aa1c18628c1f473dc87b4d9a3841ebd..4ab0d9e3ad7488c52d8f1d0943b5533e992894e6 100644 (file)
 #ifndef PDFOPTIONS_H
 #define PDFOPTIONS_H
 
-#include "support/docstream.h"
+#include <string>
 
 namespace lyx {
 
 class Lexer;
+class OutputParams;
+class otexstream;
+
+// FIXME UNICODE
+// Write functions need to use odostream instead of ostream before
+// we can use docstring instead of string.
 
 /// Options for PDF generation
 class PDFOptions {
 public:
        ///
        PDFOptions() { clear(); }
-       /// check for string settings
+       /// check whether user added any settings for hyperref
        bool empty() const;
        /// output to lyx header
        void writeFile(std::ostream &) const;
        /// output to tex header
-       void writeLaTeX(odocstringstream &) const;
+       void writeLaTeX(OutputParams &, otexstream &,
+                       bool hyperref_already_provided) const;
        /// read tokens from lyx header
        std::string readToken(Lexer &lex, std::string const & token);
-       /// keep implicit hyperref settings
+       /// set implicit settings for hyperref
        void clear();
 
        ///
@@ -65,7 +72,7 @@ public:
                * Level (\maxdimen) to which bookmarks are open
                * bookmarksopenlevel    parameter
                */
-       std::string bookmarksopenlevel;
+       int bookmarksopenlevel;
        /**
                * Allows link text to break across lines.
                * breaklinks        boolean false
@@ -90,18 +97,14 @@ public:
        bool colorlinks;
        /**
                * Adds backlink text to the end of each item in the bibliography,
-               * as a list of section numbers.
+               * as a list of section/slide/page numbers.
                * This can only work properly if there is a blank line after each
                * \bibitem.
-               * backref        boolean false
-               */
-       bool backref;
-       /**
-               * Adds backlink text to the end of each item in the bibliography,
-               * as a list of page numbers.
-               * pagebackref       boolean false
+               * backref   string  empty(="section"), "false", "section", "slide", "page"
+               *
+               * Internally we use false/section/slide/pages. See also bug 5340.
                */
-       bool pagebackref;
+       std::string backref;
        /**
                * Determines how the file is opening in Acrobat;
                * the possibilities are None, UseThumbs (show thumbnails), UseOutlines
@@ -116,6 +119,15 @@ public:
                * dialog -> PDFOptions.pagemode .
                */
        std::string pagemode;
+       /**
+               * Flag indicating whether hyperref tries to derive the values for
+               * pdftitle and pdfauthor from \title and \author.
+               * pdfusetitle       boolean false
+               *
+               * Note that we use true as default value instead. The option is also
+               * used in latex output only when title and author is not filled.
+       */
+       bool pdfusetitle;
        ///latex string
        static const std::string pagemode_fullscreen;
        /**
@@ -124,16 +136,10 @@ public:
        std::string quoted_options;
        /**
                * Possible syntax check of users additional parameters here.
+               * Returns repaired string. For the time being only newlines
+               * are checked.
                */
-       std::string quoted_options_get() const;
-       
-       
-       /**
-               * Flag indicating whether user made some input into PDF preferences.
-               * We want to save options, when user decide to switch off PDF support
-               * for a while.
-               */
-       bool store_options;
+       std::string quoted_options_check(std::string const & str) const;
 };
 
 } // namespace lyx