POINTL vPtlPos;
LONG lColor;
LONG lOptions;
+ LONG lHits;
+ bool bSuccess = FALSE;
vPtlPos.x = vX; // Loads x-coordinate
vPtlPos.y = OS2Y(vY,0); // Loads y-coordinate
if(wxFLOOD_SURFACE == nStyle)
lOptions = FF_SURFACE;
- ::GpiFloodFill(m_hPS, lOptions, lColor);
-
+ if ((lHits = ::GpiFloodFill(m_hPS, lOptions, lColor)) != GPI_ERROR)
+ bSuccess = TRUE;
return TRUE;
} // end of wxDC::DoFloodFill
LONG lBorderColor;
int nIsTRANSPARENT = 0;
- vY = OS2Y(vY,vHeight);
+ //
+ // Might be a memory DC with no Paint rect
+ //
+ if (!(m_vRclPaint.yTop == 0 &&
+ m_vRclPaint.yBottom == 0 &&
+ m_vRclPaint.xRight == 0 &&
+ m_vRclPaint.xLeft == 0))
+ vY = OS2Y(vY,vHeight);
wxCoord vX2 = vX + vWidth;
wxCoord vY2 = vY + vHeight;
,0L
,0L
);
+ //
+ // Debug testing:
+ //
+ if (m_vSelectedBitmap != wxNullBitmap)
+ {
+ BITMAPINFOHEADER2 vHeader;
+ BITMAPINFO2 vInfo;
+
+ vHeader.cbFix = 16L;
+ if (::GpiQueryBitmapInfoHeader(m_hPS, &vHeader))
+ {
+ int nBytesPerLine = vHeader.cBitCount/8;
+ unsigned char* pucData = NULL;
+ unsigned char* pucBits;
+ LONG lScans = 0L;
+
+ vInfo.cbFix = 16;
+ vInfo.cx = vHeader.cx;
+ vInfo.cy = vHeader.cy;
+ vInfo.cPlanes = vHeader.cPlanes;
+ vInfo.cBitCount = vHeader.cBitCount;
+ pucData = (unsigned char*)malloc(nBytesPerLine * vHeight);
+ pucBits = pucData;
+ for (int i = 0; i < vHeight; i++)
+ {
+ if (i <= m_vSelectedBitmap.GetHeight())
+ {
+ for (int j = 0; j < vWidth; j++)
+ {
+ if (j <= m_vSelectedBitmap.GetWidth())
+ {
+ vPoint[0].x = j; vPoint[0].y = i;
+ lColor = ::GpiQueryPel(m_hPS, &vPoint[0]);
+ *(pucBits++) = lColor >> 24;
+ *(pucBits++) = lColor >> 16;
+ *(pucBits++) = lColor >> 8;
+ }
+ }
+ }
+ }
+ lScans = ::GpiSetBitmapBits( m_hPS
+ ,0 // Start at the bottom
+ ,(LONG)vHeight // One line per scan
+ ,(PBYTE)pucData
+ ,&vInfo
+ );
+ }
+ }
}
CalcBoundingBox(vX, vY);
CalcBoundingBox(vX2, vY2);
vY = OS2Y(vY,rBmp.GetHeight());
+ //
+ // Flip the picture as OS/2 is upside-down
+ //
POINTL vPoint[4] = { vX, vY + rBmp.GetHeight()
,vX + rBmp.GetWidth(), vY
,0, 0