]> 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 456e93e3d36c259529495c3042361f4d84b3365f..9217a80518736ccdf94a3a97edef950881437bbb 100644 (file)
@@ -190,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
+