]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_image.cpp
Added some missing tests; replaced scrolwin.cpp with scrlwng.cpp
[wxWidgets.git] / src / html / m_image.cpp
index 4534d617199d6eafed63fbbaa7785c63a6fe4e9c..8edf713086b090211f5b992c7e86aacff8241de9 100644 (file)
@@ -272,6 +272,7 @@ class wxHtmlImageCell : public wxHtmlCell
 {
     public:
         wxBitmap *m_Image;
 {
     public:
         wxBitmap *m_Image;
+        double m_Scale;
         wxHtmlImageMapCell *m_ImageMap;
         wxString m_MapName;
 
         wxHtmlImageMapCell *m_ImageMap;
         wxString m_MapName;
 
@@ -291,25 +292,25 @@ class wxHtmlImageCell : public wxHtmlCell
 wxHtmlImageCell::wxHtmlImageCell(wxFSFile *input, int w, int h, double scale, int align, wxString mapname) : wxHtmlCell()
 {
     wxImage *img;
 wxHtmlImageCell::wxHtmlImageCell(wxFSFile *input, int w, int h, double scale, int align, wxString mapname) : wxHtmlCell()
 {
     wxImage *img;
-    int ww, hh;
+    int ww, hh, bw, bh;
     wxInputStream *s = input->GetStream();
     wxInputStream *s = input->GetStream();
-
+    
+    m_Scale = scale;
     img = new wxImage(*s, wxBITMAP_TYPE_ANY);
     img = new wxImage(*s, wxBITMAP_TYPE_ANY);
-
     m_Image = NULL;
     if (img && (img->Ok())) 
     {
         ww = img->GetWidth();
         hh = img->GetHeight();
     m_Image = NULL;
     if (img && (img->Ok())) 
     {
         ww = img->GetWidth();
         hh = img->GetHeight();
-        if (w != -1) m_Width = w; else m_Width = ww;
-        if (h != -1) m_Height = h; else m_Height = hh;
+        if (w != -1) bw = w; else bw = ww;
+        if (h != -1) bh = h; else bh = hh;
 
 
-        m_Width = (int)(scale * (double)m_Width);
-        m_Height = (int)(scale * (double)m_Height);
+        m_Width = (int)(scale * (double)bw);
+        m_Height = (int)(scale * (double)bh);
 
 
-        if ((m_Width != ww) || (m_Height != hh)) 
+        if ((bw != ww) || (bh != hh)) 
            {
            {
-            wxImage img2 = img->Scale(m_Width, m_Height);
+            wxImage img2 = img->Scale(bw, bh);
             m_Image = new wxBitmap(img2.ConvertToBitmap());
         } 
            else
             m_Image = new wxBitmap(img2.ConvertToBitmap());
         } 
            else
@@ -340,8 +341,16 @@ wxHtmlImageCell::wxHtmlImageCell(wxFSFile *input, int w, int h, double scale, in
 void wxHtmlImageCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
 {
     if (m_Image)
 void wxHtmlImageCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
 {
     if (m_Image)
-//        dc.DrawBitmap(*m_Image, x + m_PosX, y + m_PosY, (m_Image->GetMask() != (wxMask*) 0));
-        dc.DrawBitmap(*m_Image, x + m_PosX, y + m_PosY, TRUE);
+    {
+        double us_x, us_y;
+        dc.GetUserScale(&us_x, &us_y);
+        dc.SetUserScale(us_x * m_Scale, us_y * m_Scale);
+    
+//      dc.DrawBitmap(*m_Image, x + m_PosX, y + m_PosY, (m_Image->GetMask() != (wxMask*) 0));
+        dc.DrawBitmap(*m_Image, (int) ((x + m_PosX) / m_Scale), 
+                                (int) ((y + m_PosY) / m_Scale), TRUE);
+        dc.SetUserScale(us_x, us_y);
+    }
     wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
 }
 
     wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
 }
 
@@ -395,20 +404,24 @@ TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
                 wxString mn = wxEmptyString;
 
                 str = m_WParser->GetFS()->OpenFile(tmp);
                 wxString mn = wxEmptyString;
 
                 str = m_WParser->GetFS()->OpenFile(tmp);
-                if (tag.HasParam(wxT("WIDTH"))) tag.ScanParam(wxT("WIDTH"), wxT("%i"), &w);
-                if (tag.HasParam(wxT("HEIGHT"))) tag.ScanParam(wxT("HEIGHT"), wxT("%i"), &h);
+                if (tag.HasParam(wxT("WIDTH"))) 
+                    tag.GetParamAsInt(wxT("WIDTH"), &w);
+                if (tag.HasParam(wxT("HEIGHT"))) 
+                    tag.GetParamAsInt(wxT("HEIGHT"), &h);
                 al = wxHTML_ALIGN_BOTTOM;
                 if (tag.HasParam(wxT("ALIGN"))) 
                        {
                     wxString alstr = tag.GetParam(wxT("ALIGN"));
                     alstr.MakeUpper();  // for the case alignment was in ".."
                 al = wxHTML_ALIGN_BOTTOM;
                 if (tag.HasParam(wxT("ALIGN"))) 
                        {
                     wxString alstr = tag.GetParam(wxT("ALIGN"));
                     alstr.MakeUpper();  // for the case alignment was in ".."
-                    if (alstr == wxT("TEXTTOP")) al = wxHTML_ALIGN_TOP;
-                    else if ((alstr == wxT("CENTER")) || (alstr == wxT("ABSCENTER"))) al = wxHTML_ALIGN_CENTER;
+                    if (alstr == wxT("TEXTTOP")) 
+                        al = wxHTML_ALIGN_TOP;
+                    else if ((alstr == wxT("CENTER")) || (alstr == wxT("ABSCENTER"))) 
+                        al = wxHTML_ALIGN_CENTER;
                 }
                 if (tag.HasParam(wxT("USEMAP"))) 
                        {
                     mn = tag.GetParam( wxT("USEMAP") );
                 }
                 if (tag.HasParam(wxT("USEMAP"))) 
                        {
                     mn = tag.GetParam( wxT("USEMAP") );
-                    if (mn[ (unsigned int) 0 ] == wxT('#')) 
+                    if (mn.GetChar(0) == wxT('#')) 
                            {
                         mn = mn.Mid( 1 );
                     }
                            {
                         mn = mn.Mid( 1 );
                     }