X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7e49601492345158938e6d64e8423e43fb77d94e..c099c54cbaa285c452468419f2021899553ff9b3:/src/html/winpars.cpp diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 2c20d8858f..265572a844 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -7,11 +7,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "winpars.h" -#endif - #include "wx/wxprec.h" #include "wx/defs.h" @@ -32,7 +27,7 @@ #include "wx/fontmap.h" #include "wx/log.h" #include "wx/settings.h" -#include "wx/url.h" +#include "wx/uri.h" //----------------------------------------------------------------------------- @@ -116,7 +111,7 @@ void wxHtmlWinParser::RemoveModule(wxHtmlTagsModule *module) m_Modules.DeleteObject(module); } -void wxHtmlWinParser::SetFonts(wxString normal_face, wxString fixed_face, +void wxHtmlWinParser::SetFonts(const wxString& normal_face, const wxString& fixed_face, const int *sizes) { static int default_sizes[7] = @@ -193,10 +188,12 @@ void wxHtmlWinParser::InitParser(const wxString& source) */ m_UseLink = false; - m_Link = wxHtmlLinkInfo( wxT(""), wxT("") ); + m_Link = wxHtmlLinkInfo( wxEmptyString ); m_LinkColor.Set(0, 0, 0xFF); m_ActualColor.Set(0, 0, 0); m_Align = wxHTML_ALIGN_LEFT; + m_ScriptMode = wxHTML_SCRIPT_NORMAL; + m_ScriptBaseline = 0; m_tmpLastWasSpace = false; m_lastWordCell = NULL; @@ -305,7 +302,6 @@ wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type, void wxHtmlWinParser::AddText(const wxChar* txt) { - wxHtmlCell *c; size_t i = 0, x, lng = wxStrlen(txt); @@ -343,45 +339,40 @@ void wxHtmlWinParser::AddText(const wxChar* txt) if (x) { temp[templen-1] = wxT(' '); - temp[templen] = 0; - templen = 0; -#if !wxUSE_UNICODE - if (m_EncConv) - m_EncConv->Convert(temp); -#endif - size_t len = wxStrlen(temp); - for (size_t j = 0; j < len; j++) - if (temp[j] == nbsp) - temp[j] = wxT(' '); - c = new wxHtmlWordCell(temp, *(GetDC())); - if (m_UseLink) - c->SetLink(m_Link); - m_Container->InsertCell(c); - ((wxHtmlWordCell*)c)->SetPreviousWord(m_lastWordCell); - m_lastWordCell = (wxHtmlWordCell*)c; + DoAddText(temp, templen, nbsp); m_tmpLastWasSpace = true; } } if (templen && (templen > 1 || temp[0] != wxT(' '))) { - temp[templen] = 0; + DoAddText(temp, templen, nbsp); + m_tmpLastWasSpace = false; + } +} + +void wxHtmlWinParser::DoAddText(wxChar *temp, int& templen, wxChar nbsp) +{ + temp[templen] = 0; + templen = 0; #if !wxUSE_UNICODE - if (m_EncConv) - m_EncConv->Convert(temp); + if (m_EncConv) + m_EncConv->Convert(temp); #endif - size_t len = wxStrlen(temp); - for (size_t j = 0; j < len; j++) - if (temp[j] == nbsp) - temp[j] = wxT(' '); - c = new wxHtmlWordCell(temp, *(GetDC())); - if (m_UseLink) - c->SetLink(m_Link); - m_Container->InsertCell(c); - ((wxHtmlWordCell*)c)->SetPreviousWord(m_lastWordCell); - m_lastWordCell = (wxHtmlWordCell*)c; - m_tmpLastWasSpace = false; + size_t len = wxStrlen(temp); + for (size_t j = 0; j < len; j++) + { + if (temp[j] == nbsp) + temp[j] = wxT(' '); } + + wxHtmlCell *c = new wxHtmlWordCell(temp, *(GetDC())); + + ApplyStateToCell(c); + + m_Container->InsertCell(c); + ((wxHtmlWordCell*)c)->SetPreviousWord(m_lastWordCell); + m_lastWordCell = (wxHtmlWordCell*)c; } @@ -475,7 +466,6 @@ void wxHtmlWinParser::SetLink(const wxHtmlLinkInfo& link) m_UseLink = (link.GetHref() != wxEmptyString); } - void wxHtmlWinParser::SetFontFace(const wxString& face) { if (GetFontFixed()) m_FontFaceFixed = face; @@ -487,6 +477,15 @@ void wxHtmlWinParser::SetFontFace(const wxString& face) #endif } +void wxHtmlWinParser::ApplyStateToCell(wxHtmlCell *cell) +{ + // set the link: + if (m_UseLink) + cell->SetLink(GetLink()); + + // apply current script mode settings: + cell->SetScriptMode(GetScriptMode(), GetScriptBaseline()); +} #if !wxUSE_UNICODE