Just a note - nativegdi engine
Robert Collins
robert.collins@itdomain.com.au
Tue Apr 9 08:48:00 GMT 2002
I've made serious progress, but I'm having trouble with two things.
1) The mouse - I'm not getting any WM_MOUSEMOVE messages to the app
windows. Anyone seen this before?
2) I've broken fillspans for DRAWABLE_WINDOWs. I can fix it by drawing
into the root window hdc always,
but that's defeating the purpose - all we gain is the pretty task bar
entries :[.
2) I'm working on, I suspect it's a coordinate translation thing. I get
lovely background stipple but not (AFAICT solid fills).
Anyway, the reason for the email:
Harold:
I thought you might like to see the little todo: I've added.
Creating a single combined clipping region using CombineRgn will allow
you to move the for (iX= ..)loop from within the while (nbox--) loop,
thus saving multiple selectClipRgn+deleteObject + bitblt calls, which
may make the native engine quite a bit faster. I *will* do this
optimisation here and elsewhere, but only after I get the fills working
for 'native' windows first.
Rob
/* TODO: create a single commbined clipping region */
nbox = REGION_NUM_RECTS (pClip);
pbox = REGION_RECTS (pClip);
while (nbox--)
{
hrgn = CreateRectRgn (pbox->x1, pbox->y1, pbox->x2,
pbox->y2);
SelectClipRgn (pGCPriv->hdcMem, hrgn);
DeleteObject (hrgn);
hrgn = NULL;
for (iX = fullX1; iX < fullX2; iX +=
pStipple->drawable.width)
{
int width;
if ((iX + pStipple->drawable.width) > fullX2)
width = fullX2 - iX;
else
width = pStipple->drawable.width;
BitBlt (pGCPriv->hdcMem,
iX, fullY1,
width, 1,
hdcStipple,
0,
fullY1 % pStipple->drawable.height,
g_copyROP[pGC->alu]);
}
pbox++;
}
More information about the Cygwin-xfree
mailing list