Alexandre Julliard ha scritto:
- descr.bits = bits;
+ descr.bits = (BYTE *)bits + widthBytes * (tmpheight > 0 ? (height -
startscan - lines) : startscan);
You shouldn't need to change the bits address.
After a deeper look at it, I think there's no other (simple) way to do it.
Using ySrc parameter and changing the behaviour inside X11DRV_DIB_SetImageBits()
will work for SetDIBits() BUT will break SetDIBitsToDevice() on which ySrc has
a completely different meaning, as:
- in SetDIBits, ySrc is not needed and it should be 0; startscan and lines
specify
the start line and number of lines to copy from dib
- in SetDIBitsToDevice ySrc IS needed and represent the start line of DIB that
must be
transfered, and startscan and lines are useful just for banding the transfer
in
repeating calls.
So, as both use X11DRV_SetImageBits(), we can't fix one without breaking the
other if
we do using ySrc and working from inside X11DRV_DIB_SetImageBits().
A cleaner way would mean extend the X11DRV_DIB_IMAGEBITS_DESCR descriptor adding
startscan and scanlines parameters, and fiddle with about ALL
X11DRV_DIB_SetImageBits_xxx
functions and others.... not worth the effort, IMHO.
Ciao
Max