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