X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c4035d6868c3bed72779e7abb66469a3b51d760..c11132ca80f6af13bf636abe53f77c8dfd7dab4e:/src/html/winpars.cpp diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 9141a1a84e..1769f56c26 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -15,7 +15,7 @@ #if wxUSE_HTML && wxUSE_STREAMS -#ifndef WXPRECOMP +#ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/dc.h" #include "wx/log.h" @@ -199,10 +199,13 @@ void wxHtmlWinParser::InitParser(const wxString& source) m_FontBold = m_FontItalic = m_FontUnderlined = m_FontFixed = FALSE; m_FontSize = 3; //default one CreateCurrentFont(); // we're selecting default font into - m_DC->GetTextExtent( wxT("H"), &m_CharWidth, &m_CharHeight); - /* NOTE : we're not using GetCharWidth/Height() because - of differences under X and win - */ + + // we're not using GetCharWidth/Height() because of + // differences under X and win + wxCoord w,h; + m_DC->GetTextExtent( wxT("H"), &w, &h); + m_CharWidth = w; + m_CharHeight = h; m_UseLink = false; m_Link = wxHtmlLinkInfo( wxEmptyString ); @@ -339,15 +342,13 @@ wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type, return GetFS()->OpenFile(myurl, flags); } -void wxHtmlWinParser::AddText(const wxChar* txt) +void wxHtmlWinParser::AddText(const wxString& txt) { - size_t i = 0, - x, - lng = wxStrlen(txt); register wxChar d; int templen = 0; wxChar nbsp = GetEntitiesParser()->GetCharForCode(160 /* nbsp */); + size_t lng = txt.length(); if (lng+1 > m_tmpStrBufSize) { delete[] m_tmpStrBuf; @@ -356,24 +357,36 @@ void wxHtmlWinParser::AddText(const wxChar* txt) } wxChar *temp = m_tmpStrBuf; + wxString::const_iterator i = txt.begin(); + wxString::const_iterator end = txt.end(); + if (m_tmpLastWasSpace) { - while ((i < lng) && - ((txt[i] == wxT('\n')) || (txt[i] == wxT('\r')) || (txt[i] == wxT(' ')) || - (txt[i] == wxT('\t')))) i++; + while ( (i < end) && + (*i == wxT('\n') || *i == wxT('\r') || *i == wxT(' ') || + *i == wxT('\t')) ) + { + ++i; + } } - while (i < lng) + while (i < end) { - x = 0; - d = temp[templen++] = txt[i]; + size_t x = 0; + d = temp[templen++] = *i; if ((d == wxT('\n')) || (d == wxT('\r')) || (d == wxT(' ')) || (d == wxT('\t'))) { - i++, x++; - while ((i < lng) && ((txt[i] == wxT('\n')) || (txt[i] == wxT('\r')) || - (txt[i] == wxT(' ')) || (txt[i] == wxT('\t')))) i++, x++; + ++i, ++x; + while ( (i < end) && + (*i == wxT('\n') || *i == wxT('\r') || + *i == wxT(' ') || *i == wxT('\t')) ) + { + ++i; + ++x; + } } - else i++; + else + ++i; if (x) {