]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Shortcut for LyX HTML output. (Makes my life easier!)
[lyx.git] / src / Paragraph.cpp
index e56284bf18083fd400af61e35e97e1a25827eec3..cf7c7145d4ef26cc81cd6db03e795f4356c7aa86 100644 (file)
@@ -5,6 +5,7 @@
  *
  * \author Asger Alstrup
  * \author Lars Gullik Bjønnes
+ * \author Richard Heck (XHTML output)
  * \author Jean-Marc Lasgouttes
  * \author Angus Leeming
  * \author John Levon
@@ -163,8 +164,7 @@ public:
                OutputParams const & runparams);
 
        ///
-       void validate(LaTeXFeatures & features,
-                     Layout const & layout) const;
+       void validate(LaTeXFeatures & features) const;
 
        /// Checks if the paragraph contains only text and no inset or font change.
        bool onlyText(Buffer const & buf, Font const & outerfont,
@@ -1070,15 +1070,14 @@ bool Paragraph::Private::latexSpecialPhrase(odocstream & os, pos_type & i,
 }
 
 
-void Paragraph::Private::validate(LaTeXFeatures & features,
-                               Layout const & layout) const
+void Paragraph::Private::validate(LaTeXFeatures & features) const
 {
        // check the params.
        if (!params_.spacing().isDefault())
                features.require("setspace");
 
        // then the layouts
-       features.useLayout(layout.name());
+       features.useLayout(layout_->name());
 
        // then the fonts
        fontlist_.validate(features);
@@ -1093,7 +1092,7 @@ void Paragraph::Private::validate(LaTeXFeatures & features,
        for (; icit != iend; ++icit) {
                if (icit->inset) {
                        icit->inset->validate(features);
-                       if (layout.needprotect &&
+                       if (layout_->needprotect &&
                            icit->inset->lyxCode() == FOOT_CODE)
                                features.require("NeedLyXFootnoteCode");
                }
@@ -1291,7 +1290,7 @@ void Paragraph::write(ostream & os, BufferParams const & bparams,
 
 void Paragraph::validate(LaTeXFeatures & features) const
 {
-       d->validate(features, *d->layout_);
+       d->validate(features);
 }
 
 
@@ -2287,18 +2286,18 @@ pos_type Paragraph::firstWordDocBook(odocstream & os, OutputParams const & runpa
 }
 
 
-pos_type Paragraph::firstWordLyXHTML(odocstream & os, OutputParams const & runparams)
+pos_type Paragraph::firstWordLyXHTML(XHTMLStream & xs, OutputParams const & runparams)
        const
 {
        pos_type i;
        for (i = 0; i < size(); ++i) {
                if (Inset const * inset = getInset(i)) {
-                       inset->xhtml(os, runparams);
+                       inset->xhtml(xs, runparams);
                } else {
                        char_type c = d->text_[i];
                        if (c == ' ')
                                break;
-                       os << html::escapeChar(c);
+                       xs << html::escapeChar(c);
                }
        }
        return i;
@@ -2377,7 +2376,7 @@ void Paragraph::simpleDocBookOnePar(Buffer const & buf,
 
 
 docstring Paragraph::simpleLyXHTMLOnePar(Buffer const & buf,
-                                   odocstream & os,
+                                   XHTMLStream & xs,
                                    OutputParams const & runparams,
                                    Font const & outerfont,
                                    pos_type initial) const
@@ -2401,20 +2400,20 @@ docstring Paragraph::simpleLyXHTMLOnePar(Buffer const & buf,
                // emphasis
                if (font_old.emph() != font.fontInfo().emph()) {
                        if (font.fontInfo().emph() == FONT_ON) {
-                               os << "<em>";
+                               xs << StartTag("em");
                                emph_flag = true;
                        } else if (emph_flag && i != initial) {
-                               os << "</em>";
+                               xs << EndTag("em");
                                emph_flag = false;
                        }
                }
                // bold
                if (font_old.series() != font.fontInfo().series()) {
                        if (font.fontInfo().series() == BOLD_SERIES) {
-                               os << "<strong>";
+                               xs << StartTag("strong");
                                bold_flag = true;
                        } else if (bold_flag && i != initial) {
-                               os << "</strong>";
+                               xs << EndTag("strong");
                                bold_flag = false;
                        }
                }
@@ -2426,12 +2425,12 @@ docstring Paragraph::simpleLyXHTMLOnePar(Buffer const & buf,
                        OutputParams np = runparams;
                        if (!il.htmlisblock())
                                np.html_in_par = true;
-                       retval += inset->xhtml(os, np);
+                       retval += inset->xhtml(xs, np);
                } else {
                        char_type c = d->text_[i];
 
                        if (style.pass_thru)
-                               os.put(c);
+                               xs << c;
                        else if (c == '-') {
                                docstring str;
                                int j = i + 1;
@@ -2447,19 +2446,14 @@ docstring Paragraph::simpleLyXHTMLOnePar(Buffer const & buf,
                                }
                                else
                                        str += c;
-                               os << str;
+                               xs << str;
                        } else
-                               os << html::escapeChar(c);
+                               xs << c;
                }
                font_old = font.fontInfo();
        }
 
-       // FIXME This could be out of order. See above.
-       if (emph_flag)
-               os << "</em>";
-       if (bold_flag)
-               os << "</strong>";
-
+       xs.closeFontTags();
        return retval;
 }