X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c48f0327582c9776c5cb43202406e3ac1aff360..f6b3bfba97a03b0daead0eb460b5e47968f1e51e:/src/richtext/richtexthtml.cpp diff --git a/src/richtext/richtexthtml.cpp b/src/richtext/richtexthtml.cpp index 95f6c4754d..6079da35c5 100644 --- a/src/richtext/richtexthtml.cpp +++ b/src/richtext/richtexthtml.cpp @@ -101,33 +101,33 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& #else wxTextOutputStream str(stream, wxEOL_NATIVE); #endif - + wxTextAttr currentParaStyle = buffer->GetAttributes(); wxTextAttr currentCharStyle = buffer->GetAttributes(); - + if ((GetFlags() & wxRICHTEXT_HANDLER_NO_HEADER_FOOTER) == 0) str << wxT("
\n"); - + OutputFont(currentParaStyle, str); - + m_font = false; m_inTable = false; - + m_indents.Clear(); m_listTypes.Clear(); - + wxRichTextObjectList::compatibility_iterator node = buffer->GetChildren().GetFirst(); while (node) { wxRichTextParagraph* para = wxDynamicCast(node->GetData(), wxRichTextParagraph); wxASSERT (para != NULL); - + if (para) { wxTextAttr paraStyle(para->GetCombinedAttributes()); - + BeginParagraphFormatting(currentParaStyle, paraStyle, str); - + wxRichTextObjectList::compatibility_iterator node2 = para->GetChildren().GetFirst(); while (node2) { @@ -137,41 +137,41 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& { wxTextAttr charStyle(para->GetCombinedAttributes(obj->GetAttributes())); BeginCharacterFormatting(currentCharStyle, charStyle, paraStyle, str); - + wxString text = textObj->GetText(); - + if (charStyle.HasTextEffects() && (charStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_CAPITALS)) text.MakeUpper(); - + wxString toReplace = wxRichTextLineBreakChar; text.Replace(toReplace, wxT("0.0)) + { + styleStr += wxString::Format(wxT("margin-left: %.2fmm; "), indentLeftMM); + } + float indentRightMM = thisStyle.GetRightIndent()/10.0; + if ((GetFlags() & wxRICHTEXT_HANDLER_USE_CSS) && thisStyle.HasRightIndent() && (indentRightMM > 0.0)) + { + styleStr += wxString::Format(wxT("margin-right: %.2fmm; "), indentRightMM); + } + // First line indentation + float firstLineIndentMM = - thisStyle.GetLeftSubIndent() / 10.0; + if ((GetFlags() & wxRICHTEXT_HANDLER_USE_CSS) && (firstLineIndentMM > 0.0)) + { + styleStr += wxString::Format(wxT("text-indent: %.2fmm; "), firstLineIndentMM); + } + + if (!styleStr.IsEmpty()) + str << wxT(" style=\"") << styleStr << wxT("\""); str << wxT(">"); - // Use a table - int indentTenthsMM = thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent(); // TODO: convert to pixels - int indentPixels = indentTenthsMM/4; - str << wxString::Format(wxT("
"), indentPixels);
+ int indentPixels = indentLeftMM*10/4;
+
+ if ((GetFlags() & wxRICHTEXT_HANDLER_USE_CSS) == 0)
+ {
+ // Use a table to do indenting if we don't have CSS
+ str << wxString::Format(wxT("
|