ClearTemporaryImageLocations();
- buffer->Defragment();
+ wxRichTextDrawingContext context(buffer);
+ buffer->Defragment(context);
#if wxUSE_UNICODE
wxCSConv* customEncoding = NULL;
}
if (thisStyle.GetFontSize() != currentStyle.GetFontSize())
style += wxString::Format(wxT(" size=\"%ld\""), PtToSize(thisStyle.GetFontSize()));
- if (thisStyle.GetTextColour() != currentStyle.GetTextColour() )
+
+ bool bTextColourChanged = (thisStyle.GetTextColour() != currentStyle.GetTextColour());
+ bool bBackgroundColourChanged = (thisStyle.GetBackgroundColour() != currentStyle.GetBackgroundColour());
+ if (bTextColourChanged || bBackgroundColourChanged)
{
- wxString color(thisStyle.GetTextColour().GetAsString(wxC2S_HTML_SYNTAX));
- style += wxString::Format(wxT(" color=\"%s\""), color.c_str());
+ style += wxT(" style=\"");
+
+ if (bTextColourChanged)
+ {
+ wxString color(thisStyle.GetTextColour().GetAsString(wxC2S_HTML_SYNTAX));
+ style += wxString::Format(wxT("color: %s"), color.c_str());
+ }
+ if (bTextColourChanged && bBackgroundColourChanged)
+ style += wxT(";");
+ if (bBackgroundColourChanged)
+ {
+ wxString color(thisStyle.GetBackgroundColour().GetAsString(wxC2S_HTML_SYNTAX));
+ style += wxString::Format(wxT("background-color: %s"), color.c_str());
+ }
+
+ style += wxT("\"");
}
if (style.size())
m_font = true;
}
- if (thisStyle.GetFontWeight() == wxBOLD)
+ if (thisStyle.GetFontWeight() == wxFONTWEIGHT_BOLD)
str << wxT("<b>");
- if (thisStyle.GetFontStyle() == wxITALIC)
+ if (thisStyle.GetFontStyle() == wxFONTSTYLE_ITALIC)
str << wxT("<i>");
if (thisStyle.GetFontUnderlined())
str << wxT("<u>");
if (thisStyle.HasURL())
str << wxT("<a href=\"") << thisStyle.GetURL() << wxT("\">");
+
+ if (thisStyle.HasTextEffects())
+ {
+ if (thisStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
+ str << wxT("<del>");
+ if (thisStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_SUPERSCRIPT)
+ str << wxT("<sup>");
+ if (thisStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_SUBSCRIPT)
+ str << wxT("<sub>");
+ }
}
void wxRichTextHTMLHandler::EndCharacterFormatting(const wxRichTextAttr& WXUNUSED(currentStyle), const wxRichTextAttr& thisStyle, const wxRichTextAttr& WXUNUSED(paraStyle), wxTextOutputStream& stream)
if (thisStyle.GetFontUnderlined())
stream << wxT("</u>");
- if (thisStyle.GetFontStyle() == wxITALIC)
+ if (thisStyle.GetFontStyle() == wxFONTSTYLE_ITALIC)
stream << wxT("</i>");
- if (thisStyle.GetFontWeight() == wxBOLD)
+ if (thisStyle.GetFontWeight() == wxFONTWEIGHT_BOLD)
stream << wxT("</b>");
+ if (thisStyle.HasTextEffects())
+ {
+ if (thisStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
+ stream << wxT("</del>");
+ if (thisStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_SUPERSCRIPT)
+ stream << wxT("</sup>");
+ if (thisStyle.GetTextEffects() & wxTEXT_ATTR_EFFECT_SUBSCRIPT)
+ stream << wxT("</sub>");
+ }
+
if (m_font)
{
m_font = false;
if (GetFlags() & wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_MEMORY)
{
#if 0
- if (!image->GetImage().Ok() && image->GetImageBlock().GetData())
+ if (!image->GetImage().IsOk() && image->GetImageBlock().GetData())
image->LoadFromBlock();
- if (image->GetImage().Ok() && !image->GetImageBlock().GetData())
+ if (image->GetImage().IsOk() && !image->GetImageBlock().GetData())
image->MakeBlock();
#endif
if (img.IsOk())
{
wxString ext(image->GetImageBlock().GetExtension());
- wxString tempFilename(wxString::Format(wxT("image%d.%s"), sm_fileCounter, ext));
+ wxString tempFilename(wxString::Format(wxT("image%d.%s"), sm_fileCounter, ext.c_str()));
wxMemoryFSHandler::AddFile(tempFilename, img, image->GetImageBlock().GetImageType());
m_imageLocations.Add(tempFilename);
else if (GetFlags() & wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_FILES)
{
#if 0
- if (!image->GetImage().Ok() && image->GetImageBlock().GetData())
+ if (!image->GetImage().IsOk() && image->GetImageBlock().GetData())
image->LoadFromBlock();
- if (image->GetImage().Ok() && !image->GetImageBlock().GetData())
+ if (image->GetImage().IsOk() && !image->GetImageBlock().GetData())
image->MakeBlock();
#endif
- if (image->GetImageBlock().Ok())
+ if (image->GetImageBlock().IsOk())
{
wxString tempDir(GetTempDir());
if (tempDir.IsEmpty())
tempDir = wxFileName::GetTempDir();
wxString ext(image->GetImageBlock().GetExtension());
- wxString tempFilename(wxString::Format(wxT("%s/image%d.%s"), tempDir, sm_fileCounter, ext));
+ wxString tempFilename(wxString::Format(wxT("%s/image%d.%s"), tempDir.c_str(), sm_fileCounter, ext.c_str()));
image->GetImageBlock().Write(tempFilename);
m_imageLocations.Add(tempFilename);
str << GetMimeType(image->GetImageBlock().GetImageType());
str << wxT(";base64,");
#if 0
- if (image->GetImage().Ok() && !image->GetImageBlock().GetData())
+ if (image->GetImage().IsOk() && !image->GetImageBlock().GetData())
image->MakeBlock();
#endif
- if (image->GetImageBlock().Ok())
+ if (image->GetImageBlock().IsOk())
{
wxChar* data = b64enc( image->GetImageBlock().GetData(), image->GetImageBlock().GetDataSize() );
str << data;
{
case wxBITMAP_TYPE_BMP:
return wxT("image/bmp");
- case wxBITMAP_TYPE_TIF:
+ case wxBITMAP_TYPE_TIFF:
return wxT("image/tiff");
case wxBITMAP_TYPE_GIF:
return wxT("image/gif");