]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dc.cpp
implement wxListBox::EnsureVisible() in wxGTK; add a test for it to the widgets sample
[wxWidgets.git] / src / msw / dc.cpp
index 4c4e2768acbf1f081c242e3dbf29b57ad1488eba..e8bea67baa240daf662849d12f1ead84203aa976 100644 (file)
@@ -84,9 +84,6 @@ IMPLEMENT_ABSTRACT_CLASS(wxMSWDCImpl, wxDCImpl)
 
 static const int VIEWPORT_EXTENT = 1000;
 
-static const int MM_POINTS = 9;
-static const int MM_METRIC = 10;
-
 // ROPs which don't have standard names (see "Ternary Raster Operations" in the
 // MSDN docs for how this and other numbers in wxDC::Blit() are obtained)
 #define DSTCOPY 0x00AA0029      // a.k.a. NOP operation
@@ -1141,13 +1138,13 @@ void wxMSWDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,doub
 
     // Swap start and end positions if the end angle is less than the start angle.
     if (ea < sa) {
-       int temp;
-       temp = rx2;
-       rx2 = rx1;
-       rx1 = temp;
-       temp = ry2;
-       ry2 = ry1;
-       ry1 = temp;
+        int temp;
+        temp = rx2;
+        rx2 = rx1;
+        rx1 = temp;
+        temp = ry2;
+        ry2 = ry1;
+        ry1 = temp;
     }
 
     // draw pie with NULL_PEN first and then outline otherwise a line is
@@ -1890,7 +1887,6 @@ void wxMSWDCImpl::RealizeScaleAndOrigin()
     ::SetViewportOrgEx(GetHdc(), m_deviceOriginX, m_deviceOriginY, NULL);
     ::SetWindowOrgEx(GetHdc(), m_logicalOriginX, m_logicalOriginY, NULL);
 #endif
-
 }
 
 void wxMSWDCImpl::SetMapMode(int mode)
@@ -2032,23 +2028,23 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
 
     WXMICROWIN_CHECK_HDC_RET(false)
 
-    wxDCImpl *impl = source->GetImpl();
-    wxMSWDCImpl *msw_impl = wxDynamicCast( impl, wxMSWDCImpl );
-    if (!msw_impl)
+    wxMSWDCImpl *implSrc = wxDynamicCast( source->GetImpl(), wxMSWDCImpl );
+    if ( !implSrc )
     {
-        // TODO: Do we want to be able to blit
-        //       from other DCs too?
+        // TODO: Do we want to be able to blit from other DCs too?
         return false;
     }
 
+    const HDC hdcSrc = GetHdcOf(*implSrc);
+
     // if either the source or destination has alpha channel, we must use
     // AlphaBlt() as other function don't handle it correctly
-    const wxBitmap& bmpSrc = msw_impl->GetSelectedBitmap();
+    const wxBitmap& bmpSrc = implSrc->GetSelectedBitmap();
     if ( bmpSrc.IsOk() && (bmpSrc.HasAlpha() ||
             (m_selectedBitmap.IsOk() && m_selectedBitmap.HasAlpha())) )
     {
         if ( AlphaBlt(GetHdc(), xdest, ydest, dstWidth, dstHeight,
-                      xsrc, ysrc, srcWidth, srcHeight, GetHdcOf(*msw_impl), bmpSrc) )
+                      xsrc, ysrc, srcWidth, srcHeight, hdcSrc, bmpSrc) )
             return true;
     }
 
@@ -2128,7 +2124,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
                             (
                             GetHdc(),
                             xdest, ydest, dstWidth, dstHeight,
-                            GetHdcOf(*msw_impl),
+                            hdcSrc,
                             xsrc, ysrc,
                             (HBITMAP)mask->GetMaskBitmap(),
                             xsrcMask, ysrcMask,
@@ -2147,7 +2143,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
 
 #if wxUSE_DC_CACHEING
             // create a temp buffer bitmap and DCs to access it and the mask
-            wxDCCacheEntry* dcCacheEntry1 = FindDCInCache(NULL, msw_impl->GetHDC());
+            wxDCCacheEntry* dcCacheEntry1 = FindDCInCache(NULL, hdcSrc);
             dc_mask = (HDC) dcCacheEntry1->m_dc;
 
             wxDCCacheEntry* dcCacheEntry2 = FindDCInCache(dcCacheEntry1, GetHDC());
@@ -2159,7 +2155,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
             buffer_bmap = (HBITMAP) bitmapCacheEntry->m_bitmap;
 #else // !wxUSE_DC_CACHEING
             // create a temp buffer bitmap and DCs to access it and the mask
-            dc_mask = ::CreateCompatibleDC(GetHdcOf(*source));
+            dc_mask = ::CreateCompatibleDC(hdcSrc);
             dc_buffer = ::CreateCompatibleDC(GetHdc());
             buffer_bmap = ::CreateCompatibleBitmap(GetHdc(), dstWidth, dstHeight);
 #endif // wxUSE_DC_CACHEING/!wxUSE_DC_CACHEING
@@ -2179,7 +2175,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
 
             // copy src to buffer using selected raster op
             if ( !::StretchBlt(dc_buffer, 0, 0, (int)dstWidth, (int)dstHeight,
-                           GetHdcOf(*msw_impl), xsrc, ysrc, srcWidth, srcHeight, dwRop) )
+                               hdcSrc, xsrc, ysrc, srcWidth, srcHeight, dwRop) )
             {
                 wxLogLastError(wxT("StretchBlt"));
             }
@@ -2290,7 +2286,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
                     (
                         GetHdc(),
                         xdest, ydest, dstWidth, dstHeight,
-                        GetHdcOf(*msw_impl),
+                        hdcSrc,
                         xsrc, ysrc, srcWidth, srcHeight,
                         dwRop
                     ) )
@@ -2310,7 +2306,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
                         GetHdc(),
                         xdest, ydest,
                         (int)dstWidth, (int)dstHeight,
-                        GetHdcOf(*msw_impl),
+                        hdcSrc,
                         xsrc, ysrc,
                         dwRop
                     ) )