X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_xhtml.h;h=3877fb0c7b1c37b602998d5c8a3dbb9b84559524;hb=9ce0ff50c1a96b276fa1a74f358718bf571f3dfb;hp=327c40274b281dbb62d9b13e92992a6120d7f5b5;hpb=502dc7ca525a1386d06085f86a3485b75c1dfb40;p=features.git diff --git a/src/output_xhtml.h b/src/output_xhtml.h index 327c40274b..3877fb0c7b 100644 --- a/src/output_xhtml.h +++ b/src/output_xhtml.h @@ -4,7 +4,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Richard Heck + * \author Richard Kimberly Heck * * Full author contact details are available in file CREDITS. */ @@ -12,130 +12,36 @@ #ifndef OUTPUT_XHTML_H #define OUTPUT_XHTML_H -#include "support/docstream.h" +#include "LayoutEnums.h" + +#include "support/strfwd.h" +#include "xml.h" -#include -#include namespace lyx { +docstring fontToHtmlTag(xml::FontTypes type); +docstring fontToHtmlAttribute(xml::FontTypes type); + class Buffer; class OutputParams; class Text; -// Inspiration for the *Tag structs and for XHTMLStream -// came from MathStream and its cousins. - -struct StartTag { - /// - StartTag(std::string const & tag) : tag_(tag) {} - /// - StartTag(std::string const & tag, std::string const & attr, - bool keepempty = false) - : tag_(tag), attr_(attr), keepempty_(keepempty) {} - /// - docstring asTag() const; - /// - docstring asEndTag() const; - /// - std::string tag_; - /// - std::string attr_; - /// whether to keep things like "" or discard them - /// you would want this for td, e.g, but maybe not for a div - bool keepempty_; -}; - - -struct EndTag { - /// - EndTag(std::string tag) : tag_(tag) {} - /// - docstring asEndTag() const; - /// - std::string tag_; -}; - - -// Tags like -struct CompTag { - /// - CompTag(std::string const & tag, std::string const & attr) - : tag_(tag), attr_(attr) {} - /// - docstring asTag() const; - /// - std::string tag_; - /// - std::string attr_; -}; - - -class XHTMLStream { -public: - /// - explicit XHTMLStream(odocstream & os); - /// - void cr(); - /// - odocstream & os() { return os_; } - /// - // int & tab() { return tab_; } - /// closes any font tags that are eligible to be closed, - /// i.e., last on the tag_stack_. - /// \return false if there are open font tags we could not close. - /// because they are "blocked" by open non-font tags on the stack. - bool closeFontTags(); - /// - XHTMLStream & operator<<(docstring const &); - /// - XHTMLStream & operator<<(const char *); - /// - XHTMLStream & operator<<(char_type); - /// - XHTMLStream & operator<<(StartTag const &); - /// - XHTMLStream & operator<<(EndTag const &); - /// - XHTMLStream & operator<<(CompTag const &); -private: - /// - void clearTagDeque(); - /// - bool isTagOpen(std::string const &); - /// - odocstream & os_; - /// - // int tab_; - /// - typedef std::deque TagDeque; - /// - typedef std::vector TagStack; - /// holds start tags until we know there is content in them. - TagDeque pending_tags_; - /// remembers the history, so we can make sure we nest properly. - TagStack tag_stack_; -}; +/// +xml::FontTag xhtmlStartFontTag(xml::FontTypes type); +/// +xml::EndFontTag xhtmlEndFontTag(xml::FontTypes type); /// void xhtmlParagraphs(Text const & text, Buffer const & buf, - XHTMLStream & xs, + XMLStream & xs, OutputParams const & runparams); -namespace html { -/// -docstring escapeChar(char_type c); -/// converts a string to a form safe for links, etc -docstring htmlize(docstring const & str); +/// \return a string appropriate for setting alignment in CSS +/// Does NOT return "justify" for "block" +std::string alignmentToCSS(LyXAlignment align); -// to be removed -/// \return true if tag was opened, false if not -bool openTag(odocstream & os, std::string const & tag, - std::string const & attr); -/// \return true if tag was opened, false if not -bool closeTag(odocstream & os, std::string const & tag); -} } // namespace lyx #endif