]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_image.cpp
Propagate wxEVT_COMMAND_TEXT_UPDATED renaming to the real stc.cpp.
[wxWidgets.git] / src / html / m_image.cpp
index b8ffb83c8d30678f5c1cc23fa1428bb47ab9db0d..6394fa1b2bec48061ff04142f6f15e2a164c12b8 100644 (file)
@@ -24,6 +24,7 @@
     #include "wx/log.h"
     #include "wx/math.h"
     #include "wx/image.h"
+    #include "wx/wxcrtvararg.h"
 #endif
 
 #include "wx/html/forcelnk.h"
@@ -297,6 +298,11 @@ public:
     virtual wxHtmlLinkInfo *GetLink(int x = 0, int y = 0) const;
 
     void SetImage(const wxImage& img);
+
+    // If "alt" text is set, it will be used when converting this cell to text.
+    void SetAlt(const wxString& alt);
+    virtual wxString ConvertToText(wxHtmlSelection *sel) const;
+
 #if wxUSE_GIF && wxUSE_TIMER
     void AdvanceAnimation(wxTimer *timer);
     virtual void Layout(int w);
@@ -319,6 +325,7 @@ private:
     double              m_scale;
     wxHtmlImageMapCell *m_imageMap;
     wxString            m_mapName;
+    wxString            m_alt;
 
     wxDECLARE_NO_COPY_CLASS(wxHtmlImageCell);
 };
@@ -416,7 +423,7 @@ wxHtmlImageCell::wxHtmlImageCell(wxHtmlWindowInterface *windowIface,
 #endif // wxUSE_GIF && wxUSE_TIMER
                 {
                     wxImage image(*s, wxBITMAP_TYPE_ANY);
-                    if ( image.Ok() )
+                    if ( image.IsOk() )
                         SetImage(image);
                 }
             }
@@ -445,7 +452,7 @@ wxHtmlImageCell::wxHtmlImageCell(wxHtmlWindowInterface *windowIface,
 void wxHtmlImageCell::SetImage(const wxImage& img)
 {
 #if !defined(__WXMSW__) || wxUSE_WXDIB
-    if ( img.Ok() )
+    if ( img.IsOk() )
     {
         delete m_bitmap;
 
@@ -473,6 +480,16 @@ void wxHtmlImageCell::SetImage(const wxImage& img)
 #endif
 }
 
+void wxHtmlImageCell::SetAlt(const wxString& alt)
+{
+    m_alt = alt;
+}
+
+wxString wxHtmlImageCell::ConvertToText(wxHtmlSelection* WXUNUSED(sel)) const
+{
+    return m_alt;
+}
+
 #if wxUSE_GIF && wxUSE_TIMER
 void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer)
 {
@@ -533,11 +550,11 @@ void wxHtmlImageCell::Layout(int w)
         if (!m_bmpHpresent && m_bitmap != NULL)
             m_Height = m_bitmap->GetHeight()*m_Width/m_bitmap->GetWidth();
         else
-            m_Height = m_scale*m_bmpH;
+            m_Height = static_cast<int>(m_scale*m_bmpH);
     } else
     {
-        m_Width  = m_scale*m_bmpW;
-        m_Height = m_scale*m_bmpH;
+        m_Width  = static_cast<int>(m_scale*m_bmpW);
+        m_Height = static_cast<int>(m_scale*m_bmpH);
     }
 
     switch (m_align)
@@ -659,16 +676,16 @@ TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
 
                 if (tag.HasParam(wxT("WIDTH")))
                 {
-                    wxString param = tag.GetParam(wxT("WIDTH"));
-                    wxSscanf(param.c_str(), wxT("%i"), &w);
-                    if (param.EndsWith(wxT("%"))) {
-                        if (w < 0)
-                            w = 0;
-                        else if (w > 100)
-                            w = 100;
-                        wpercent = true;
+                    if (tag.GetParamAsIntOrPercent(wxT("WIDTH"), &w, wpercent))
+                    {
+                        if (wpercent)
+                        {
+                            if (w < 0)
+                                w = 0;
+                            else if (w > 100)
+                                w = 100;
+                        }
                     }
-
                 }
 
                 if (tag.HasParam(wxT("HEIGHT")))
@@ -701,7 +718,9 @@ TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
                                           m_WParser->GetPixelScale(),
                                           al, mn);
                 m_WParser->ApplyStateToCell(cel);
+                m_WParser->StopCollapsingSpaces();
                 cel->SetId(tag.GetParam(wxT("id"))); // may be empty
+                cel->SetAlt(tag.GetParam(wxT("alt")));
                 m_WParser->GetContainer()->InsertCell(cel);
                 if (str)
                     delete str;