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;
return GetFS()->OpenFile(myurl, flags);
}
+#define NBSP_UNICODE_VALUE (wxChar(160))
+#if !wxUSE_UNICODE
+ #define CUR_NBSP_VALUE m_nbsp
+#else
+ #define CUR_NBSP_VALUE NBSP_UNICODE_VALUE
+#endif
+
void wxHtmlWinParser::AddText(const wxString& txt)
{
- #define NBSP_UNICODE_VALUE (wxChar(160))
#if !wxUSE_UNICODE
if ( m_nbsp == 0 )
m_nbsp = GetEntitiesParser()->GetCharForCode(NBSP_UNICODE_VALUE);
- #define CUR_NBSP_VALUE m_nbsp
-#else
- #define CUR_NBSP_VALUE NBSP_UNICODE_VALUE
#endif
if ( m_whitespaceMode == Whitespace_Normal )
while (i < end)
{
size_t x = 0;
- wxChar d = *i;
+ const wxChar d = temp[templen++] = *i;
if ((d == wxT('\n')) || (d == wxT('\r')) || (d == wxT(' ')) || (d == wxT('\t')))
{
++i, ++x;
++i;
}
- if (d == CUR_NBSP_VALUE)
- d = ' ';
-
- temp[templen++] = d;
-
if (x)
{
temp[templen-1] = wxT(' ');
{
buf[len] = 0;
+ for ( int i = 0; i < len; i++ )
+ {
+ if ( buf[i] == CUR_NBSP_VALUE )
+ buf[i] = ' ';
+ }
+
#if !wxUSE_UNICODE
if (m_EncConv)
m_EncConv->Convert(buf);
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 )
posColumn += expandTo;
copyFrom = i + 1;
- posFrom = pos + 1;
}
else
{
}
+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]) )
+ {
+ if ( (pt - m_FontsSizes[n]) >= (m_FontsSizes[n + 1] - pt) )
+ {
+ // The actual size is closer to the next entry than to this
+ // one, so use it.
+ n++;
+ }
+
+ // Notice that m_FontSize starts from 1, hence +1 here.
+ m_FontSize = n + 1;
+
+ break;
+ }
+ }
+ }
+}
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,
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;
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