TAG_HANDLER_PROC(tag)
{
wxColour oldclr = m_WParser->GetActualColor();
+ wxColour oldbackclr = m_WParser->GetActualBackgroundColor();
+ int oldbackmode = m_WParser->GetActualBackgroundMode();
int oldsize = m_WParser->GetFontSize();
int oldbold = m_WParser->GetFontBold();
+ int olditalic = m_WParser->GetFontItalic();
+ int oldunderlined = m_WParser->GetFontUnderlined();
+ wxString oldfontface = m_WParser->GetFontFace();
// Load any style parameters
wxHtmlStyleParams styleParams(tag);
- wxString str;
+ ApplyStyle(styleParams);
- str = styleParams.GetParam(wxS("color"));
- if ( !str.empty() )
- {
- wxColour clr;
- if ( wxHtmlTag::ParseAsColour(str, &clr) )
- {
- m_WParser->SetActualColor(clr);
- m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
- }
- }
+ ParseInner(tag);
- str = styleParams.GetParam(wxS("font-size"));
- if ( !str.empty() )
- {
- // Point size
- int foundIndex = str.Find(wxS("pt"));
- if (foundIndex != wxNOT_FOUND)
- {
- str.Truncate(foundIndex);
-
- long sizeValue;
- if (str.ToLong(&sizeValue) == true)
- {
- // Set point size
- m_WParser->SetFontPointSize(sizeValue);
- m_WParser->GetContainer()->InsertCell(
- new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
- }
- }
- // else: check for other ways of specifying size (TODO)
- }
+ m_WParser->SetFontSize(oldsize);
+ m_WParser->SetFontBold(oldbold);
+ m_WParser->SetFontUnderlined(oldunderlined);
+ m_WParser->SetFontFace(oldfontface);
+ m_WParser->SetFontItalic(olditalic);
+ m_WParser->GetContainer()->InsertCell(
+ new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
- str = styleParams.GetParam(wxS("font-weight"));
- if ( !str.empty() )
+ if (oldclr != m_WParser->GetActualColor())
{
- // Only bold and normal supported just now
- if ( str == wxS("bold") )
- {
- m_WParser->SetFontBold(true);
- m_WParser->GetContainer()->InsertCell(
- new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
- }
- else if ( str == wxS("normal") )
- {
- m_WParser->SetFontBold(false);
- m_WParser->GetContainer()->InsertCell(
- new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
- }
+ m_WParser->SetActualColor(oldclr);
+ m_WParser->GetContainer()->InsertCell(
+ new wxHtmlColourCell(oldclr));
}
- ParseInner(tag);
-
- if (oldbold != m_WParser->GetFontBold())
- {
- m_WParser->SetFontBold(oldbold);
- m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
- }
- if (oldsize != m_WParser->GetFontSize())
+ if (oldbackmode != m_WParser->GetActualBackgroundMode() ||
+ oldbackclr != m_WParser->GetActualBackgroundColor())
{
- m_WParser->SetFontSize(oldsize);
- m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
- }
- if (oldclr != m_WParser->GetActualColor())
- {
- m_WParser->SetActualColor(oldclr);
- m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
+ m_WParser->SetActualBackgroundMode(oldbackmode);
+ m_WParser->SetActualBackgroundColor(oldbackclr);
+ m_WParser->GetContainer()->InsertCell(
+ new wxHtmlColourCell(oldbackclr, oldbackmode == wxTRANSPARENT ? wxHTML_CLR_TRANSPARENT_BACKGROUND : wxHTML_CLR_BACKGROUND));
}
return true;