]> git.saurik.com Git - wxWidgets.git/commitdiff
wxHtmlTag::ScanParam now returns value
authorVáclav Slavík <vslavik@fastmail.fm>
Mon, 30 Aug 1999 22:39:56 +0000 (22:39 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Mon, 30 Aug 1999 22:39:56 +0000 (22:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/html/htmltag.cpp
src/html/mod_fonts.cpp
src/html/mod_hline.cpp
src/html/mod_image.cpp
src/html/mod_layout.cpp
src/html/mod_tables.cpp

index 65253c20aaf7389156a8fce8951872a2c570b516..a864e27fad2f9ac84c78696a396c6cf5a9a1cb76 100644 (file)
@@ -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
index fa34b8560927912f5f45b6aadbccd3e1d15eda90..006fc4865e825b2809c9735f1d5286db77b8d798 100644 (file)
@@ -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);
index b8af76bdbe5f16d92c196815792238f89210dc49..7bada2919b750a7c82d05eb5dae8e0e66952bb79 100644 (file)
@@ -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));
 
index d21965c6c209837dc288ef6bb359f8a8e0a62b37..b48281cc7f1ee362f77aca315eb16c094027d46a 100644 (file)
@@ -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())) {
index b398f93d3c5511676cfd161e8ff97cd8ebbf6f6b..1913589b1a01ac31e4f91201ecf4ae2ff8972228 100644 (file)
@@ -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;
     }
index 01bc6552ab5c4211d71e33f6fb6fb372ceaedf65..35f14a284902b7346aba45fe9e9790202741f6ae 100644 (file)
@@ -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);