From: Václav Slavík Date: Wed, 17 Jan 2001 00:31:58 +0000 (+0000) Subject: Bitmaps are no longer rescaled to reflect printerPPI/screenPPI ratio. Instead, we... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b5c01940ac51d3dff5229221ae2531e167471041 Bitmaps are no longer rescaled to reflect printerPPI/screenPPI ratio. Instead, we change user scale before drawing them and then restore it back. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9114 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/html/m_image.cpp b/src/html/m_image.cpp index 4534d61719..4f94570ff0 100644 --- a/src/html/m_image.cpp +++ b/src/html/m_image.cpp @@ -272,6 +272,7 @@ class wxHtmlImageCell : public wxHtmlCell { public: wxBitmap *m_Image; + double m_Scale; 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; - int ww, hh; + int ww, hh, bw, bh; wxInputStream *s = input->GetStream(); - + + m_Scale = scale; img = new wxImage(*s, wxBITMAP_TYPE_ANY); - 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 @@ -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) -// 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, (x + m_PosX) / m_Scale, + (y + m_PosY) / m_Scale, TRUE); + dc.SetUserScale(us_x, us_y); + } wxHtmlCell::Draw(dc, x, y, view_y1, view_y2); }