X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef01b72f17352bb634f1e2e105b4568b71b4495f..5c5ab9ebc3a7dd441c9e3b25cb3daf8f733c374f:/src/html/m_fonts.cpp diff --git a/src/html/m_fonts.cpp b/src/html/m_fonts.cpp index aae04a9b50..a632859a9e 100644 --- a/src/html/m_fonts.cpp +++ b/src/html/m_fonts.cpp @@ -26,16 +26,22 @@ #include "wx/html/forcelnk.h" #include "wx/html/m_templ.h" +#include "wx/fontenum.h" +#include "wx/tokenzr.h" FORCE_LINK_ME(m_fonts) TAG_HANDLER_BEGIN(FONT, "FONT") + TAG_HANDLER_VARS + wxSortedArrayString m_Faces; + TAG_HANDLER_PROC(tag) { wxColour oldclr = m_WParser -> GetActualColor(); int oldsize = m_WParser -> GetFontSize(); + wxString oldface = m_WParser -> GetFontFace(); if (tag.HasParam(wxT("COLOR"))) { unsigned long tmp = 0; @@ -49,21 +55,46 @@ TAG_HANDLER_BEGIN(FONT, "FONT") if (tag.HasParam(wxT("SIZE"))) { long tmp = 0; + wxChar c = tag.GetParam(wxT("SIZE"))[(unsigned int) 0]; if (tag.ScanParam(wxT("SIZE"), wxT("%li"), &tmp) == 1) { - m_WParser -> SetFontSize(oldsize+tmp); + if (c == '+' || c == '-') + m_WParser -> SetFontSize(oldsize+tmp); + else + m_WParser -> SetFontSize(tmp); m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont())); } } + + if (tag.HasParam(wxT("FACE"))) { + if (m_Faces.GetCount() == 0) { + wxFontEnumerator enu; + enu.EnumerateFacenames(); + m_Faces = *enu.GetFacenames(); + } + wxStringTokenizer tk(tag.GetParam(wxT("FACE")), ","); + int index; + + while (tk.HasMoreTokens()) + if ((index = m_Faces.Index(tk.GetNextToken())) != wxNOT_FOUND) { + m_WParser -> SetFontFace(m_Faces[index]); + m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont())); + break; + } + } ParseInner(tag); - if (oldclr != m_WParser -> GetActualColor()) { - m_WParser -> SetActualColor(oldclr); - m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(oldclr)); - } + if (oldface != m_WParser -> GetFontFace()) { + m_WParser -> SetFontFace(oldface); + m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont())); + } if (oldsize != m_WParser -> GetFontSize()) { 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)); } return TRUE; } @@ -175,21 +206,21 @@ TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6") m_WParser -> SetFontUnderlined(FALSE); m_WParser -> SetFontFixed(FALSE); - if (tag.GetName() == "H1") - m_WParser -> SetFontSize(+4); - else if (tag.GetName() == "H2") - m_WParser -> SetFontSize(+3); - else if (tag.GetName() == "H3") - m_WParser -> SetFontSize(+2); - else if (tag.GetName() == "H4") { - m_WParser -> SetFontSize(+2); + if (tag.GetName() == wxT("H1")) + m_WParser -> SetFontSize(7); + else if (tag.GetName() == wxT("H2")) + m_WParser -> SetFontSize(6); + else if (tag.GetName() == wxT("H3")) + m_WParser -> SetFontSize(5); + else if (tag.GetName() == wxT("H4")) { + m_WParser -> SetFontSize(5); m_WParser -> SetFontItalic(TRUE); m_WParser -> SetFontBold(FALSE); } - else if (tag.GetName() == "H5") - m_WParser -> SetFontSize(+1); - else if (tag.GetName() == "H6") { - m_WParser -> SetFontSize(+1); + else if (tag.GetName() == wxT("H5")) + m_WParser -> SetFontSize(4); + else if (tag.GetName() == wxT("H6")) { + m_WParser -> SetFontSize(4); m_WParser -> SetFontItalic(TRUE); m_WParser -> SetFontBold(FALSE); }