]> git.lyx.org Git - lyx.git/blobdiff - src/output_xhtml.cpp
Initialize definition_ correctly
[lyx.git] / src / output_xhtml.cpp
index 7212bb2de10651867be456f4f49dd4f111a09e44..0a0bfd3cbe328f105941b066eaf53e0552851a7d 100644 (file)
@@ -221,11 +221,24 @@ string fontToTag(html::FontTypes type)
                return "del";
        case FT_ITALIC:
                return "i";
+       case FT_UPRIGHT:
        case FT_SLANTED:
        case FT_SMALLCAPS:
        case FT_ROMAN:
        case FT_SANS:
-       case FT_TYPER:
+       case FT_TYPE:
+       case FT_SIZE_TINY:
+       case FT_SIZE_SCRIPT:
+       case FT_SIZE_FOOTNOTE:
+       case FT_SIZE_SMALL:
+       case FT_SIZE_NORMAL:
+       case FT_SIZE_LARGE:
+       case FT_SIZE_LARGER:
+       case FT_SIZE_LARGEST:
+       case FT_SIZE_HUGE:
+       case FT_SIZE_HUGER:
+       case FT_SIZE_INCREASE:
+       case FT_SIZE_DECREASE:
                return "span";
        }
        // kill warning
@@ -252,6 +265,8 @@ StartTag fontToStartTag(html::FontTypes type)
                return html::StartTag(tag, "class='wline'");
        case FT_ITALIC:
                return html::StartTag(tag);
+       case FT_UPRIGHT:
+               return html::StartTag(tag, "style='font-style:normal;'");
        case FT_SLANTED:
                return html::StartTag(tag, "style='font-style:oblique;'");
        case FT_SMALLCAPS:
@@ -260,8 +275,28 @@ StartTag fontToStartTag(html::FontTypes type)
                return html::StartTag(tag, "style='font-family:serif;'");
        case FT_SANS:
                return html::StartTag(tag, "style='font-family:sans-serif;'");
-       case FT_TYPER:
+       case FT_TYPE:
                return html::StartTag(tag, "style='font-family:monospace;'");
+       case FT_SIZE_TINY:
+       case FT_SIZE_SCRIPT:
+       case FT_SIZE_FOOTNOTE:
+               return html::StartTag(tag, "style='font-size:x-small;'");
+       case FT_SIZE_SMALL:
+               return html::StartTag(tag, "style='font-size:small;'");
+       case FT_SIZE_NORMAL:
+               return html::StartTag(tag, "style='font-size:normal;'");
+       case FT_SIZE_LARGE:
+               return html::StartTag(tag, "style='font-size:large;'");
+       case FT_SIZE_LARGER:
+       case FT_SIZE_LARGEST:
+               return html::StartTag(tag, "style='font-size:x-large;'");
+       case FT_SIZE_HUGE:
+       case FT_SIZE_HUGER:
+               return html::StartTag(tag, "style='font-size:xx-large;'");
+       case FT_SIZE_INCREASE:
+               return html::StartTag(tag, "style='font-size:larger;'");
+       case FT_SIZE_DECREASE:
+               return html::StartTag(tag, "style='font-size:smaller;'");
        }
        // kill warning
        return StartTag("");
@@ -597,7 +632,8 @@ XHTMLStream & XHTMLStream::operator<<(html::EndTag const & etag)
                                // it was pending, so we just erase it
                                writeError("Tried to close pending tag `" + etag.tag_ 
                                        + "' when other tags were pending. Last pending tag is `"
-                                       + pending_tags_.back()->tag_ + "'. Tag discarded.");
+                                       + to_utf8(pending_tags_.back()->writeTag()) 
+                                       + "'. Tag discarded.");
                                pending_tags_.erase(dit);
                                return *this;
                        }
@@ -614,7 +650,7 @@ XHTMLStream & XHTMLStream::operator<<(html::EndTag const & etag)
                string estr = "Closing tag `" + etag.tag_ 
                        + "' when other tags are pending. Discarded pending tags:\n";
                for (dit = pending_tags_.begin(); dit != den; ++dit)
-                       estr += (*dit)->tag_ + "\n";
+                       estr += to_utf8(html::htmlize((*dit)->writeTag(), XHTMLStream::ESCAPE_ALL)) + "\n";
                writeError(estr);
                // clear the pending tags...
                pending_tags_.clear();
@@ -706,35 +742,15 @@ XHTMLStream & XHTMLStream::operator<<(html::EndTag const & etag)
        // curtag is now the one we actually want.
        os_ << curtag->writeEndTag();
        tag_stack_.pop_back();
-       
+
        return *this;
 }
 
 // End code for XHTMLStream
 
 namespace {
-       
-// convenience functions
-
-inline void openTag(XHTMLStream & xs, Layout const & lay)
-{
-       xs << html::StartTag(lay.htmltag(), lay.htmlattr());
-}
-
-
-void openTag(XHTMLStream & xs, Layout const & lay, 
-             ParagraphParameters const & params)
-{
-       // FIXME Are there other things we should handle here?
-       string const align = alignmentToCSS(params.align());
-       if (align.empty()) {
-               openTag(xs, lay);
-               return;
-       }
-       string attrs = lay.htmlattr() + " style='text-align: " + align + ";'";
-       xs << html::StartTag(lay.htmltag(), attrs);
-}
 
+// convenience functions
 
 inline void openParTag(XHTMLStream & xs, Layout const & lay,
                        std::string parlabel)
@@ -815,7 +831,7 @@ ParagraphList::const_iterator findLastParagraph(
 
 
 ParagraphList::const_iterator findEndOfEnvironment(
-               ParagraphList::const_iterator const pstart,
+               ParagraphList::const_iterator const pstart,
                ParagraphList::const_iterator const & pend)
 {
        ParagraphList::const_iterator p = pstart;
@@ -828,15 +844,19 @@ ParagraphList::const_iterator findEndOfEnvironment(
                // it can happen. We pretend that it's just at lowest depth.
                if (style.latextype == LATEX_COMMAND)
                        return p;
+
                // If depth is down, we're done
                if (p->params().depth() < depth)
                        return p;
+
                // If depth is up, we're not done
                if (p->params().depth() > depth)
                        continue;
-               // Now we know we are at the same depth
-               if (style.latextype == LATEX_PARAGRAPH
-                   || style.latexname() != bstyle.latexname())
+
+               // FIXME I am not sure about the first check.
+               // Surely we *could* have different layouts that count as
+               // LATEX_PARAGRAPH, right? 
+               if (style.latextype == LATEX_PARAGRAPH || style != bstyle)
                        return p;
        }
        return pend;