]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmlcell.cpp
Adding MSVC makefile support for building the TIFF library
[wxWidgets.git] / src / html / htmlcell.cpp
index eab14854384e21abfd28488b5f57642a222ca4ba..e8680be944ef868e670de1f7822dcca267d65e2f 100644 (file)
@@ -73,20 +73,26 @@ bool wxHtmlCell::AdjustPagebreak(int *pagebreak)
 wxHtmlWordCell::wxHtmlWordCell(const wxString& word, wxDC& dc) : wxHtmlCell()
 {
     m_Word = word;
-
-    m_Word.Replace(wxT(" "), wxT(" "), TRUE);
-    m_Word.Replace(wxT("©"), wxT("(c)"), TRUE);
-    m_Word.Replace(wxT("""), wxT("\""), TRUE);
-    m_Word.Replace(wxT("&lt;"), wxT("<"), TRUE);
-    m_Word.Replace(wxT("&gt;"), wxT(">"), TRUE);
-    m_Word.Replace(wxT("&amp;"), wxT("&"), TRUE);
-
-    m_Word.Replace(wxT("&nbsp "), wxT(" "), TRUE);
-    m_Word.Replace(wxT("&copy "), wxT("(c)"), TRUE);
-    m_Word.Replace(wxT("&quot "), wxT("\""), TRUE);
-    m_Word.Replace(wxT("&lt "), wxT("<"), TRUE);
-    m_Word.Replace(wxT("&gt "), wxT(">"), TRUE);
-    m_Word.Replace(wxT("&amp "), wxT("&"), TRUE);
+    
+    if (m_Word.Find(wxT('&')) != -1) 
+    {
+        static wxChar* substitutions[][3] = 
+                {
+                    { wxT("&nbsp;"), wxT("&nbsp "), wxT(" ") },
+                    { wxT("&copy;"), wxT("&copy "), wxT("(c)") },
+                    { wxT("&quot;"), wxT("&quot "), wxT("\"") },
+                    { wxT("&lt;"), wxT("&lt "), wxT("<") },
+                    { wxT("&gt;"), wxT("&gt "), wxT(">") },
+                    { wxT("&amp;"), wxT("&amp "), wxT("&")  /*this one should be last one*/ },
+                    { NULL, NULL, NULL }
+                };
+
+        for (int i = 0; substitutions[i][0] != NULL; i++) 
+        {
+            m_Word.Replace(substitutions[i][0], substitutions[i][2], TRUE);
+            m_Word.Replace(substitutions[i][1], substitutions[i][2], TRUE);
+        }
+    }
 
     dc.GetTextExtent(m_Word, &m_Width, &m_Height, &m_Descent);
     SetCanLiveOnPagebreak(FALSE);
@@ -384,7 +390,7 @@ void wxHtmlContainerCell::SetAlign(const wxHtmlTag& tag)
 
 
 
-void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag)
+void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag, double pixel_scale)
 {
     if (tag.HasParam("WIDTH")) {
         int wdi;
@@ -396,7 +402,7 @@ void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag)
         }
         else {
             wxSscanf(wd.c_str(), wxT("%i"), &wdi);
-            SetWidthFloat(wdi, wxHTML_UNITS_PIXELS);
+            SetWidthFloat((int)(pixel_scale * (double)wdi), wxHTML_UNITS_PIXELS);
         }
     }
 }