From 72aa4a9873de529f9ab6b9165f3b6dadc564c29f Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 30 Aug 1999 22:39:56 +0000 Subject: [PATCH] wxHtmlTag::ScanParam now returns value git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/html/htmltag.cpp | 35 ++++++++++++++++++++++++++++------- src/html/mod_fonts.cpp | 18 +++++++++--------- src/html/mod_hline.cpp | 2 +- src/html/mod_image.cpp | 3 +-- src/html/mod_layout.cpp | 29 ++++++++++++++++------------- src/html/mod_tables.cpp | 4 ++-- 6 files changed, 57 insertions(+), 34 deletions(-) diff --git a/src/html/htmltag.cpp b/src/html/htmltag.cpp index 65253c20aa..a864e27fad 100644 --- a/src/html/htmltag.cpp +++ b/src/html/htmltag.cpp @@ -140,6 +140,10 @@ wxHtmlTag::wxHtmlTag(const wxString& source, int pos, int end_pos, wxHtmlTagsCac while ((i < end_pos) && ((c = source[i++]) != '"')) m_Params += c; m_Params += c; } + else if (c == '\'') { + while ((i < end_pos) && ((c = source[i++]) != '\'')) m_Params += c; + m_Params += c; + } } m_Begin = i; @@ -184,6 +188,7 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const const char *st = m_Params, *p = par; const char *st2, *p2; bool comma; + char comma_char; if (*st == 0) return ""; if (*p == 0) return ""; @@ -192,13 +197,23 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const wxString fnd = ""; st2++; // '=' character comma = FALSE; - if (!with_commas && (*(st2) == '"')) {st2++; comma = TRUE;} + comma_char = '\0'; + if (!with_commas && (*(st2) == '"')) { + st2++; + comma = TRUE; + comma_char = '"'; + } + else if (!with_commas && (*(st2) == '\'')) { + st2++; + comma = TRUE; + comma_char = '\''; + } while (*st2 != 0) { - if (*st2 == '"') comma = !comma; + if (comma && *st2 == comma_char) comma = FALSE; else if ((*st2 == ' ') && (!comma)) break; fnd += (*(st2++)); } - if (!with_commas && (*(st2-1) == '"')) fnd.RemoveLast(); + if (!with_commas && (*(st2-1) == comma_char)) fnd.RemoveLast(); return fnd; } if (*st2 == 0) return ""; @@ -212,6 +227,10 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const st2++; while (*st2 != '"') st2++; } + else if (*st2 == '\'') { + st2++; + while (*st2 != '\'') st2++; + } st2++; } } @@ -220,8 +239,9 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const -void wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const +int wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const { + int retval; va_list argptr; wxString parval = GetParam(par); @@ -229,13 +249,13 @@ void wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const //#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__VISUALC__) #ifndef HAVE_VSSCANF - sscanf((const char*)parval, format, va_arg(argptr, void *)); + retval = sscanf((const char*)parval, format, va_arg(argptr, void *)); #else - vsscanf((const char*)parval, format, argptr); + retval = vsscanf((const char*)parval, format, argptr); #endif /* - --- vsscanf is not defined under Cygwin or Mingw32 or M$ Visual C++ environment + --- vsscanf is not defined under some compilers if this module doesn't compile with your compiler, modify the def statement and let me know. Thanks... @@ -245,6 +265,7 @@ void wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const */ va_end(argptr); + return retval; } #endif diff --git a/src/html/mod_fonts.cpp b/src/html/mod_fonts.cpp index fa34b85609..006fc4865e 100644 --- a/src/html/mod_fonts.cpp +++ b/src/html/mod_fonts.cpp @@ -39,19 +39,19 @@ TAG_HANDLER_BEGIN(FONT, "FONT") if (tag.HasParam("COLOR")) { unsigned long tmp = 0; wxColour clr; - tag.ScanParam("COLOR", "#%lX", &tmp); - clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); - m_WParser -> SetActualColor(clr); - m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr)); + if (tag.ScanParam("COLOR", "#%lX", &tmp) == 1) { + clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); + m_WParser -> SetActualColor(clr); + m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr)); + } } if (tag.HasParam("SIZE")) { - // give 'tmp' an initial value. If conversion fails, it will keep this value. long tmp = 0; - tag.ScanParam("SIZE", "%li", &tmp); - // We *really* should check the result of (v)sscanf, but ScanParam returns void... - m_WParser -> SetFontSize(oldsize+tmp); - m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont())); + if (tag.ScanParam("SIZE", "%li", &tmp) == 1) { + m_WParser -> SetFontSize(oldsize+tmp); + m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont())); + } } ParseInner(tag); diff --git a/src/html/mod_hline.cpp b/src/html/mod_hline.cpp index b8af76bdbe..7bada2919b 100644 --- a/src/html/mod_hline.cpp +++ b/src/html/mod_hline.cpp @@ -78,7 +78,7 @@ TAG_HANDLER_BEGIN(HR, "HR") c -> SetAlignHor(HTML_ALIGN_CENTER); c -> SetAlign(tag); c -> SetWidthFloat(tag); - if (tag.HasParam("SIZE")) tag.ScanParam("SIZE", "%i", &sz); + if (tag.HasParam("SIZE") && tag.ScanParam("SIZE", "%i", &sz) == 1) {} else sz = 1; c -> InsertCell(new wxHtmlLineCell(sz)); diff --git a/src/html/mod_image.cpp b/src/html/mod_image.cpp index d21965c6c2..b48281cc7f 100644 --- a/src/html/mod_image.cpp +++ b/src/html/mod_image.cpp @@ -291,10 +291,9 @@ wxHtmlImageCell::wxHtmlImageCell(wxFSFile *input, int w, int h, int align, wxStr { wxImage *img; int ww, hh; - wxString m = input -> GetMimeType(); wxInputStream *s = input -> GetStream(); - img = new wxImage(*s, m); + img = new wxImage(*s, wxBITMAP_TYPE_ANY); m_Image = NULL; if (img && (img -> Ok())) { diff --git a/src/html/mod_layout.cpp b/src/html/mod_layout.cpp index b398f93d3c..1913589b1a 100644 --- a/src/html/mod_layout.cpp +++ b/src/html/mod_layout.cpp @@ -165,24 +165,27 @@ TAG_HANDLER_BEGIN(BODY, "BODY") wxColour clr; if (tag.HasParam("TEXT")) { - tag.ScanParam("TEXT", "#%lX", &tmp); - clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); - m_WParser -> SetActualColor(clr); - m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr)); - } + if (tag.ScanParam("TEXT", "#%lX", &tmp) == 1) { + clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); + m_WParser -> SetActualColor(clr); + m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr)); + } + } if (tag.HasParam("LINK")) { - tag.ScanParam("LINK", "#%lX", &tmp); - clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); - m_WParser -> SetLinkColor(clr); + if (tag.ScanParam("LINK", "#%lX", &tmp) == 1) { + clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); + m_WParser -> SetLinkColor(clr); + } } if (tag.HasParam("BGCOLOR")) { - tag.ScanParam("BGCOLOR", "#%lX", &tmp); - clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); - m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr, HTML_CLR_BACKGROUND)); - if (m_WParser -> GetWindow() != NULL) - m_WParser -> GetWindow() -> SetBackgroundColour(clr); + if (tag.ScanParam("BGCOLOR", "#%lX", &tmp) == 1) { + clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF)); + m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr, HTML_CLR_BACKGROUND)); + if (m_WParser -> GetWindow() != NULL) + m_WParser -> GetWindow() -> SetBackgroundColour(clr); + } } return FALSE; } diff --git a/src/html/mod_tables.cpp b/src/html/mod_tables.cpp index 01bc6552ab..35f14a2849 100644 --- a/src/html/mod_tables.cpp +++ b/src/html/mod_tables.cpp @@ -122,8 +122,8 @@ wxHtmlTableCell::wxHtmlTableCell(wxHtmlContainerCell *parent, const wxHtmlTag& t m_tBkg = m_rBkg = -1; if (tag.HasParam("BGCOLOR")) tag.ScanParam("BGCOLOR", "#%lX", &m_tBkg); if (tag.HasParam("VALIGN")) m_tValign = tag.GetParam("VALIGN"); else m_tValign = wxEmptyString; - if (tag.HasParam("CELLSPACING")) tag.ScanParam("CELLSPACING", "%i", &m_Spacing); else m_Spacing = 2; - if (tag.HasParam("CELLPADDING")) tag.ScanParam("CELLPADDING", "%i", &m_Padding); else m_Padding = 3; + if (tag.HasParam("CELLSPACING") && tag.ScanParam("CELLSPACING", "%i", &m_Spacing) == 1) {} else m_Spacing = 2; + if (tag.HasParam("CELLPADDING") && tag.ScanParam("CELLPADDING", "%i", &m_Padding) == 1) {} else m_Padding = 3; if (m_HasBorders) SetBorder(TABLE_BORDER_CLR_1, TABLE_BORDER_CLR_2); -- 2.45.2