X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5096757411fa0869e7ca6d1a45949df54f1c155c..3225a4b8b8656f25dac6cb20684a3c2c273cf796:/src/html/winpars.cpp diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index f21cf9e8fb..916c43a989 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -202,7 +202,7 @@ 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 - + // we're not using GetCharWidth/Height() because of // differences under X and win wxCoord w,h; @@ -477,7 +477,6 @@ void wxHtmlWinParser::AddPreBlock(const wxString& text) const wxString::const_iterator end = text.end(); wxString::const_iterator copyFrom = text.begin(); - size_t posFrom = 0; size_t pos = 0; int posColumn = m_posColumn; for ( wxString::const_iterator i = copyFrom; i != end; ++i, ++pos ) @@ -493,7 +492,6 @@ void wxHtmlWinParser::AddPreBlock(const wxString& text) posColumn += expandTo; copyFrom = i + 1; - posFrom = pos + 1; } else { @@ -554,6 +552,38 @@ void wxHtmlWinParser::SetFontSize(int s) } +void wxHtmlWinParser::SetDC(wxDC *dc, double pixel_scale, double font_scale) +{ + m_DC = dc; + m_PixelScale = pixel_scale; + m_FontScale = font_scale; +} + +void wxHtmlWinParser::SetFontPointSize(int pt) +{ + if (pt <= m_FontsSizes[0]) + m_FontSize = 1; + else if (pt >= m_FontsSizes[6]) + m_FontSize = 7; + else + { + // Find the font closest to the given value with a simple linear search + // (binary search is not worth it here for so small number of elements) + for ( int n = 0; n < 6; n++ ) + { + if ( (pt > m_FontsSizes[n]) && (pt <= m_FontsSizes[n + 1]) ) + { + // In this range, find out which entry it is closest to + if ( (pt - m_FontsSizes[n]) < (m_FontsSizes[n + 1] - pt) ) + m_FontSize = n; + else + m_FontSize = n + 1; + + break; + } + } + } +} wxFont* wxHtmlWinParser::CreateCurrentFont() { @@ -576,15 +606,14 @@ wxFont* wxHtmlWinParser::CreateCurrentFont() #endif )) { - delete *fontptr; - *fontptr = NULL; + wxDELETE(*fontptr); } if (*fontptr == NULL) { *faceptr = face; *fontptr = new wxFont( - (int) (m_FontsSizes[fs] * m_PixelScale), + (int) (m_FontsSizes[fs] * m_FontScale), ff ? wxMODERN : wxSWISS, fi ? wxITALIC : wxNORMAL, fb ? wxBOLD : wxNORMAL, @@ -639,11 +668,7 @@ void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc) m_nbsp = 0; m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT; - if (m_EncConv) - { - delete m_EncConv; - m_EncConv = NULL; - } + wxDELETE(m_EncConv); if (enc == wxFONTENCODING_DEFAULT) return; @@ -708,8 +733,7 @@ void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc) wxLogError(_("Failed to display HTML document in %s encoding"), wxFontMapper::GetEncodingName(enc).c_str()); m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT; - delete m_EncConv; - m_EncConv = NULL; + wxDELETE(m_EncConv); } } #endif