Mathias Kosch wrote:
This path fixes Bug#13344.
The function "StretchDIBits" behaves odd in case of "top-down" bitmaps with values of zero for "xSrc" and "ySrc". Tests using Windows Server 2003 shew that in this particular case the source rectangle is selected starting at the upper left corner of the bitmap. In all other cases the rectangle is aligned to the bottom of the bitmap.
I provided a test case which tests several combinations, especially those with some of the values set to zero. It passes under "Windows Server 2003 R2 SP2" and Wine 1.1.5 (only) with this path applied.
General note - Wine uses 4-spaces indentation, tabs = 8 spaces. Use of tabs discouraged. Mixing spaces and tabs highly not recommended.
+#include <stdbool.h> +#include <inttypes.h>
Please use windows types instead
- struct PIXEL
- {
uint8_t blue;
uint8_t green;
uint8_t red;
- } __attribute__ ((__packed__));
You should use RGBTRIPLE instead.
- HDC hDC = NULL, hMemDC = NULL;
- HBITMAP hBitmap = NULL, hOldBitmap = NULL;
What's the point initializing something you will overwrite anyway? Don't do this, it hides bugs.
- pBitmapData = (struct PIXEL*)malloc(nBitmapWidth*nBitmapHeight*sizeof(struct PIXEL));
Malloc should not be used in winelib apps. Use HeapAlloc/HeapFree.
- if (!pBitmapData)
ok(0, "Memory allocation failed.\n");
Don't do this. If allocation failed assert or skip the test entirely.
Vitaliy.