X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33ac7e6f01acbac1cff0ad400d8ea7f0bfd0a62f..2b69aeaa92e8393957241d4619046d9d20a367ef:/src/html/m_layout.cpp diff --git a/src/html/m_layout.cpp b/src/html/m_layout.cpp index e3f8ec8c3f..e828f01e1d 100644 --- a/src/html/m_layout.cpp +++ b/src/html/m_layout.cpp @@ -20,7 +20,6 @@ #endif #ifndef WXPRECOMP -#include "wx/wx.h" #endif @@ -37,7 +36,7 @@ TAG_HANDLER_BEGIN(P, "P") TAG_HANDLER_PROC(tag) { if (m_WParser->GetContainer()->GetFirstCell() != NULL) - { + { m_WParser->CloseContainer(); m_WParser->OpenContainer(); } @@ -78,7 +77,7 @@ TAG_HANDLER_BEGIN(CENTER, "CENTER") m_WParser->SetAlign(wxHTML_ALIGN_CENTER); if (c->GetFirstCell() != NULL) - { + { m_WParser->CloseContainer(); m_WParser->OpenContainer(); } @@ -86,12 +85,12 @@ TAG_HANDLER_BEGIN(CENTER, "CENTER") c->SetAlignHor(wxHTML_ALIGN_CENTER); if (tag.HasEnding()) - { + { ParseInner(tag); m_WParser->SetAlign(old); if (c->GetFirstCell() != NULL) - { + { m_WParser->CloseContainer(); m_WParser->OpenContainer(); } @@ -114,7 +113,7 @@ TAG_HANDLER_BEGIN(DIV, "DIV") int old = m_WParser->GetAlign(); wxHtmlContainerCell *c = m_WParser->GetContainer(); if (c->GetFirstCell() != NULL) - { + { m_WParser->CloseContainer(); m_WParser->OpenContainer(); c = m_WParser->GetContainer(); @@ -122,7 +121,7 @@ TAG_HANDLER_BEGIN(DIV, "DIV") m_WParser->SetAlign(c->GetAlignHor()); } else - { + { c->SetAlign(tag); m_WParser->SetAlign(c->GetAlignHor()); } @@ -131,7 +130,7 @@ TAG_HANDLER_BEGIN(DIV, "DIV") m_WParser->SetAlign(old); if (c->GetFirstCell() != NULL) - { + { m_WParser->CloseContainer(); m_WParser->OpenContainer(); } @@ -151,15 +150,13 @@ TAG_HANDLER_BEGIN(TITLE, "TITLE") TAG_HANDLER_PROC(tag) { if (m_WParser->GetWindow()) - { + { wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser->GetWindow()); if (wfr) - { - wxString title = ""; - wxString *src = m_WParser->GetSource(); - - for (int i = tag.GetBeginPos(); i < tag.GetEndPos1(); i++) title += (*src)[(unsigned int) i]; - wfr->OnSetTitle(title); + { + const wxString& src = *m_WParser->GetSource(); + wfr->OnSetTitle(src.Mid(tag.GetBeginPos(), + tag.GetEndPos1()-tag.GetBeginPos())); } } return TRUE; @@ -174,43 +171,23 @@ TAG_HANDLER_BEGIN(BODY, "BODY") TAG_HANDLER_PROC(tag) { - unsigned long tmp; wxColour clr; - if (tag.HasParam(wxT("TEXT"))) - { - if (tag.ScanParam(wxT("TEXT"), wxT("#%lX"), &tmp) == 1) - { - clr = wxColour((unsigned char)((tmp & 0xFF0000) >> 16), - (unsigned char)((tmp & 0x00FF00) >> 8), - (unsigned char)(tmp & 0x0000FF)); - m_WParser->SetActualColor(clr); - m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr)); - } - } - - if (tag.HasParam(wxT("LINK"))) - { - if (tag.ScanParam(wxT("LINK"), wxT("#%lX"), &tmp) == 1) - { - clr = wxColour((unsigned char)((tmp & 0xFF0000) >> 16), - (unsigned char)((tmp & 0x00FF00) >> 8), - (unsigned char)(tmp & 0x0000FF)); - m_WParser->SetLinkColor(clr); - } + if (tag.GetParamAsColour(wxT("TEXT"), &clr)) + { + m_WParser->SetActualColor(clr); + m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr)); } - if (tag.HasParam(wxT("BGCOLOR"))) - { - if (tag.ScanParam(wxT("BGCOLOR"), wxT("#%lX"), &tmp) == 1) - { - clr = wxColour((unsigned char)((tmp & 0xFF0000) >> 16), - (unsigned char)((tmp & 0x00FF00) >> 8), - (unsigned char)(tmp & 0x0000FF)); - m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND)); - if (m_WParser->GetWindow() != NULL) - m_WParser->GetWindow()->SetBackgroundColour(clr); - } + if (tag.GetParamAsColour(wxT("LINK"), &clr)) + m_WParser->SetLinkColor(clr); + + if (tag.GetParamAsColour(wxT("BGCOLOR"), &clr)) + { + m_WParser->GetContainer()->InsertCell( + new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND)); + if (m_WParser->GetWindow() != NULL) + m_WParser->GetWindow()->SetBackgroundColour(clr); } return FALSE; } @@ -228,12 +205,12 @@ TAG_HANDLER_BEGIN(BLOCKQUOTE, "BLOCKQUOTE") m_WParser->CloseContainer(); c = m_WParser->OpenContainer(); - if (c->GetAlignHor() == wxHTML_ALIGN_RIGHT) + if (c->GetAlignHor() == wxHTML_ALIGN_RIGHT) c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_RIGHT); else c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT); - c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP); + c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP); m_WParser->OpenContainer(); ParseInner(tag); c = m_WParser->CloseContainer();