]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/dcmemory.cpp
clean up of memory debugging macros and chanegs to compile with CW7 (patch 548408)
[wxWidgets.git] / src / os2 / dcmemory.cpp
index a6af12eb9090e97f42e27fc0da6c0d30bccb2915..9217a80518736ccdf94a3a97edef950881437bbb 100644 (file)
@@ -55,6 +55,7 @@ void wxMemoryDC::Init()
         // DrawText() to OPAQUE as required, otherwise always TRANSPARENT
         ::GpiSetBackMix( GetHPS(), BM_LEAVEALONE );
     }
+    memset(&m_vRclPaint, 0, sizeof(m_vRclPaint));
 } // end of wxMemoryDC::Init
 
 bool wxMemoryDC::CreateCompatible(
@@ -147,7 +148,7 @@ void wxMemoryDC::SelectObject(
 
     m_vSelectedBitmap = rBitmap;
 
-    WXHBITMAP                       hBmp = m_vSelectedBitmap.GetHBITMAP();
+    WXHBITMAP                       hBmp = rBitmap.GetHBITMAP();
 
     if (!hBmp)
         return;
@@ -189,4 +190,81 @@ void wxMemoryDC::DoDrawRectangle(
 )
 {
     wxDC::DoDrawRectangle(vX, vY, vWidth, vHeight);
+
+    //
+    // Debug testing:
+    //
+    if (m_vSelectedBitmap.GetHBITMAP() != NULLHANDLE)
+    {
+        BITMAPINFOHEADER2           vHeader;
+        BITMAPINFO2                 vInfo;
+
+        vHeader.cbFix = 16L;
+        if (::GpiQueryBitmapInfoHeader(m_vSelectedBitmap.GetHBITMAP(), &vHeader))
+        {
+            unsigned char*          pucData = NULL;
+            unsigned char*          pucBits;
+            int                     nBytesPerLine = m_vSelectedBitmap.GetWidth() * 3;
+            LONG                    lScans = 0L;
+            POINTL                  vPoint;
+            LONG                    lColor;
+
+            vInfo.cbFix     = 16;
+            vInfo.cx        = vHeader.cx;
+            vInfo.cy        = vHeader.cy;
+            vInfo.cPlanes   = vHeader.cPlanes;
+            vInfo.cBitCount = 24;
+            pucData = (unsigned char*)malloc(nBytesPerLine * m_vSelectedBitmap.GetHeight());
+            if ((lScans = ::GpiQueryBitmapBits( m_hPS
+                                               ,0L
+                                               ,(LONG)m_vSelectedBitmap.GetHeight()
+                                               ,(PBYTE)pucData
+                                               ,&vInfo
+                                              )) == GPI_ALTERROR)
+            {
+                ERRORID                     vError;
+                wxString                    sError;
+
+                vError = ::WinGetLastError(vHabmain);
+                sError = wxPMErrorToStr(vError);
+            }
+            pucBits = pucData;
+            for (int i = 0; i < m_vSelectedBitmap.GetHeight(); i++)
+            {
+                for (int j = 0; j < m_vSelectedBitmap.GetWidth(); j++)
+                {
+                    if (i >= vY && j >= vX && i < vHeight && j < vWidth)
+                    {
+                        if (i == vY || j == vX ||
+                            i == m_vSelectedBitmap.GetWidth() -1 ||
+                            j == m_vSelectedBitmap.GetHeight() - 1
+                           )
+                            lColor = m_pen.GetColour().GetPixel();
+                        else
+                            lColor = m_brush.GetColour().GetPixel();
+                        *(pucBits++) = (unsigned char)lColor;
+                        *(pucBits++) = (unsigned char)(lColor >> 8);
+                        *(pucBits++) = (unsigned char)(lColor >> 16);
+                    }
+                    else
+                        pucBits += 3;
+                }
+            }
+            if ((lScans = ::GpiSetBitmapBits( m_hPS
+                                             ,0
+                                             ,(LONG)m_vSelectedBitmap.GetHeight()
+                                             ,(PBYTE)pucData
+                                             ,&vInfo
+                                            )) == GPI_ALTERROR)
+            {
+                ERRORID             vError;
+                wxString            sError;
+
+                vError = ::WinGetLastError(vHabmain);
+                sError = wxPMErrorToStr(vError);
+            }
+            free(pucData);
+        }
+    }
 } // end of wxMemoryDC::DoDrawRectangle
+