From 49a321fc84f6e2a2529b992cb442b7d5947c7f95 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20St=C3=B6hr?= Date: Thu, 20 Sep 2007 23:29:20 +0000 Subject: [PATCH] add missing PDFoptions.cpp git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20397 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/PDFoptions.cpp | 201 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 src/PDFoptions.cpp diff --git a/src/PDFoptions.cpp b/src/PDFoptions.cpp new file mode 100644 index 0000000000..d16b9cda42 --- /dev/null +++ b/src/PDFoptions.cpp @@ -0,0 +1,201 @@ +/** + * \file PDFoptions.cpp + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Pavel Sanda + * + * Full author contact details are available in file CREDITS. + */ + + +#include "PDFOptions.h" + +#include "support/convert.h" + +#include +#include +#include "support/lstrings.h" +#include "Lexer.h" + + +namespace lyx { + + +using std::ostream; +using std::ostringstream; +using std::string; + +const string PDFOptions::pagemode_fullscreen("FullScreen"); + +bool PDFOptions::empty() const +{ + return + author.empty() && + title.empty() && + subject.empty() && + keywords.empty()&& + pagemode.empty()&& + bookmarksopenlevel.empty() && + quoted_options.empty(); +} + +void PDFOptions::writeFile(ostream & os) const +{ + os << "\\use_hyperref " << convert(use_hyperref) << '\n'; + os << "\\pdf_store_options " << convert(store_options) << '\n'; + if (!use_hyperref && !store_options) return; + + if (!title.empty() ) + os << "\\pdf_title \"" << title << "\"\n"; + if (!author.empty()) + os << "\\pdf_author \"" << author << "\"\n"; + if (!subject.empty()) + os << "\\pdf_subject \"" << subject << "\"\n"; + if (!keywords.empty()) + os << "\\pdf_keywords \"" << keywords << "\"\n"; + + + os << "\\pdf_bookmarks " << convert(bookmarks) << '\n'; + os << "\\pdf_bookmarksnumbered " << convert(bookmarksnumbered) << '\n'; + os << "\\pdf_bookmarksopen " << convert(bookmarksopen) << '\n'; + if (bookmarksopenlevel.empty()) + os << "\\pdf_bookmarksopenlevel \"" << bookmarksopenlevel << "\"\n"; + + os << "\\pdf_breaklinks " << convert(breaklinks) << '\n'; + os << "\\pdf_pdfborder " << convert(pdfborder) << '\n'; + os << "\\pdf_colorlinks " << convert(colorlinks) << '\n'; + os << "\\pdf_backref " << convert(backref) << '\n'; + os << "\\pdf_pagebackref " << convert(pagebackref) << '\n'; + + if (!pagemode.empty()) + os << "\\pdf_pagemode " << pagemode << '\n'; + + if (!quoted_options.empty()) + os << "\\pdf_quoted_options \"" << quoted_options << "\"\n"; + +} + +void PDFOptions::writeLaTeX(odocstream &os) const +{ + if (!use_hyperref) return ; + + string opt; + + opt = "\\usepackage["; + if (!title.empty()) + opt += "pdftitle={" + title + "},\n"; + if (!author.empty()) + opt += "pdfauthor={" + author + "},\n"; + if (!subject.empty()) + opt += "pdfsubject={" + subject + "},\n"; + if (!keywords.empty()) + opt += "pdfkeywords={" + keywords + "},\n"; + + opt += "bookmarks=" + convert(bookmarks) + ','; + if (bookmarks) { + opt += "bookmarksnumbered=" + + convert(bookmarksnumbered) + ','; + opt += "bookmarksopen=" + + convert(bookmarksopen) + ','; + + if (bookmarksopen && !bookmarksopenlevel.empty()) + opt += "bookmarksopennumbered=" + + bookmarksopenlevel + ','; + } + + opt += "breaklinks=" + convert(breaklinks) + ','; + + opt += "pdfborder={0 0 " ; + opt += (pdfborder ?'1':'0'); + opt += "},\n"; + + opt += "colorlinks=" + convert(colorlinks) + ','; + opt += "backref=" + convert(backref) + ','; + opt += "pagebackref=" + convert(pagebackref) + ','; + + if (!pagemode.empty()) + opt += "pdfpagemode=" + pagemode + ','; + opt += quoted_options_get(); + + opt = support::rtrim(opt,","); + opt += "]{hyperref}\n"; + + // FIXME UNICODE + os << from_utf8(opt); +} + +string PDFOptions::readToken(Lexer &lex, string const & token) +{ + if (token == "\\use_hyperref") { + lex >> use_hyperref; + } else if (token == "\\pdf_title") { + lex >> title; + } else if (token == "\\pdf_author") { + lex >> author; + } else if (token == "\\pdf_subject") { + lex >> subject; + } else if (token == "\\pdf_keywords") { + lex >> keywords; + } else if (token == "\\pdf_bookmarks") { + lex >> bookmarks; + } else if (token == "\\pdf_bookmarksnumbered") { + lex >> bookmarksnumbered; + } else if (token == "\\pdf_bookmarksopen") { + lex >> bookmarksopenlevel; + } else if (token == "\\pdf_bookmarksopenlevel") { + lex >> bookmarksopenlevel; + } else if (token == "\\pdf_breaklinks") { + lex >> breaklinks; + } else if (token == "\\pdf_pdfborder") { + lex >> pdfborder; + } else if (token == "\\pdf_colorlinks") { + lex >> colorlinks; + } else if (token == "\\pdf_backref") { + lex >> backref; + } else if (token == "\\pdf_pagebackref") { + lex >> pagebackref; + } else if (token == "\\pdf_pagemode") { + lex >> pagemode; + } else if (token == "\\pdf_quoted_options") { + lex >> quoted_options; + } else if (token == "\\pdf_store_options") { + lex >> store_options; + } else { + return token; + } + + return string(); + +} + +//prepared for check +string PDFOptions::quoted_options_get() const +{ + return quoted_options; +} + +// Keep implicit hyperref settings +void PDFOptions::clear() +{ + use_hyperref = false; + title.clear(); + author.clear(); + subject.clear(); + keywords.clear(); + bookmarks = true; + bookmarksnumbered = false; + bookmarksopen = false; + bookmarksopenlevel.clear(); + breaklinks = false; + pdfborder = false; + colorlinks = false; + backref = false; + pagebackref = false; + pagemode.clear(); + quoted_options.clear(); + store_options = false; + +} + +} // namespace lyx -- 2.39.2