From f0179f8ce13b6d18aa384e43daeb3550a24ade76 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 6 Apr 2009 03:20:25 +0000 Subject: [PATCH] [FORMATTING] - fix indentation - remove the large file header, fix the small one svn path=/trunk/; revision=40390 --- reactos/subsystems/win32/win32k/eng/mouse.c | 829 ++++++++++---------- 1 file changed, 398 insertions(+), 431 deletions(-) diff --git a/reactos/subsystems/win32/win32k/eng/mouse.c b/reactos/subsystems/win32/win32k/eng/mouse.c index 3e840dd724c..f0470c8e1d4 100644 --- a/reactos/subsystems/win32/win32k/eng/mouse.c +++ b/reactos/subsystems/win32/win32k/eng/mouse.c @@ -1,26 +1,7 @@ -/* - * ReactOS W32 Subsystem - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -/* $Id$ - * - * PROJECT: ReactOS kernel - * PURPOSE: Mouse - * FILE: subsys/win32k/eng/mouse.c +/* + * PROJECT: ReactOS win32 subsystem + * PURPOSE: Mouse pointer functions + * FILE: subsystems/win32k/eng/mouse.c * PROGRAMER: Casper S. Hornstrup (chorns@users.sourceforge.net) * REVISION HISTORY: * 06-06-2001 CSH Created @@ -34,495 +15,481 @@ /* FUNCTIONS *****************************************************************/ -INT INTERNAL_CALL -MouseSafetyOnDrawStart(SURFOBJ *SurfObj, LONG HazardX1, - LONG HazardY1, LONG HazardX2, LONG HazardY2) /* * FUNCTION: Notify the mouse driver that drawing is about to begin in * a rectangle on a particular surface. */ +INT INTERNAL_CALL +MouseSafetyOnDrawStart( + SURFOBJ *SurfObj, + LONG HazardX1, + LONG HazardY1, + LONG HazardX2, + LONG HazardY2) { - LONG tmp; - PDEVOBJ *ppdev; - GDIPOINTER *pgp; + LONG tmp; + PDEVOBJ *ppdev; + GDIPOINTER *pgp; - ASSERT(SurfObj != NULL); + ASSERT(SurfObj != NULL); - ppdev = GDIDEV(SurfObj); - - if(ppdev == NULL) + ppdev = GDIDEV(SurfObj); + if (ppdev == NULL) { - return(FALSE); + return(FALSE); } - pgp = &ppdev->Pointer; + pgp = &ppdev->Pointer; - if (SPS_ACCEPT_NOEXCLUDE == pgp->Status || - pgp->Exclude.right == -1) + if (SPS_ACCEPT_NOEXCLUDE == pgp->Status || + pgp->Exclude.right == -1) { - return(FALSE); + return(FALSE); } - if (HazardX1 > HazardX2) + if (HazardX1 > HazardX2) { - tmp = HazardX2; HazardX2 = HazardX1; HazardX1 = tmp; + tmp = HazardX2; + HazardX2 = HazardX1; + HazardX1 = tmp; } - if (HazardY1 > HazardY2) + if (HazardY1 > HazardY2) { - tmp = HazardY2; HazardY2 = HazardY1; HazardY1 = tmp; + tmp = HazardY2; + HazardY2 = HazardY1; + HazardY1 = tmp; } - if (ppdev->SafetyRemoveLevel != 0) + if (ppdev->SafetyRemoveLevel != 0) { - ppdev->SafetyRemoveCount++; - return FALSE; + ppdev->SafetyRemoveCount++; + return FALSE; } - ppdev->SafetyRemoveCount++; + ppdev->SafetyRemoveCount++; - if (pgp->Exclude.right >= HazardX1 - && pgp->Exclude.left <= HazardX2 - && pgp->Exclude.bottom >= HazardY1 - && pgp->Exclude.top <= HazardY2) + if (pgp->Exclude.right >= HazardX1 + && pgp->Exclude.left <= HazardX2 + && pgp->Exclude.bottom >= HazardY1 + && pgp->Exclude.top <= HazardY2) { - ppdev->SafetyRemoveLevel = ppdev->SafetyRemoveCount; - if (pgp->MovePointer) - pgp->MovePointer(SurfObj, -1, -1, NULL); - else - EngMovePointer(SurfObj, -1, -1, NULL); + ppdev->SafetyRemoveLevel = ppdev->SafetyRemoveCount; + if (pgp->MovePointer) + pgp->MovePointer(SurfObj, -1, -1, NULL); + else + EngMovePointer(SurfObj, -1, -1, NULL); } - return(TRUE); + return(TRUE); } -INT INTERNAL_CALL -MouseSafetyOnDrawEnd(SURFOBJ *SurfObj) /* * FUNCTION: Notify the mouse driver that drawing has finished on a surface. */ +INT INTERNAL_CALL +MouseSafetyOnDrawEnd( + SURFOBJ *SurfObj) { - PDEVOBJ *ppdev; - GDIPOINTER *pgp; + PDEVOBJ *ppdev; + GDIPOINTER *pgp; - ASSERT(SurfObj != NULL); + ASSERT(SurfObj != NULL); - ppdev = GDIDEV(SurfObj); + ppdev = GDIDEV(SurfObj); - if(ppdev == NULL) + if (ppdev == NULL) { - return(FALSE); + return(FALSE); } - pgp = &ppdev->Pointer; + pgp = &ppdev->Pointer; - if(SPS_ACCEPT_NOEXCLUDE == pgp->Status || - pgp->Exclude.right == -1) - { - return FALSE; - } + if (SPS_ACCEPT_NOEXCLUDE == pgp->Status || + pgp->Exclude.right == -1) + { + return FALSE; + } - if (--ppdev->SafetyRemoveCount >= ppdev->SafetyRemoveLevel) - { - return FALSE; - } - if (pgp->MovePointer) - pgp->MovePointer(SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude); - else - EngMovePointer(SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude); + if (--ppdev->SafetyRemoveCount >= ppdev->SafetyRemoveLevel) + { + return FALSE; + } + if (pgp->MovePointer) + pgp->MovePointer(SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude); + else + EngMovePointer(SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude); - ppdev->SafetyRemoveLevel = 0; + ppdev->SafetyRemoveLevel = 0; - return(TRUE); + return(TRUE); } /* SOFTWARE MOUSE POINTER IMPLEMENTATION **************************************/ VOID INTERNAL_CALL -IntHideMousePointer(PDEVOBJ *ppdev, SURFOBJ *psoDest) +IntHideMousePointer( + PDEVOBJ *ppdev, + SURFOBJ *psoDest) { - GDIPOINTER *pgp; - POINTL pt; + GDIPOINTER *pgp; + POINTL pt; - ASSERT(ppdev); - ASSERT(psoDest); + ASSERT(ppdev); + ASSERT(psoDest); - pgp = &ppdev->Pointer; + pgp = &ppdev->Pointer; - if (!pgp->Enabled) - { - return; - } + if (!pgp->Enabled) + { + return; + } + + pgp->Enabled = FALSE; + + /* The mouse is hide from ShowCours and it is frist ?? */ + if (pgp->ShowPointer < 0) + { + return ; + } + + /* Hide the cours */ + pt.x = gpsi->ptCursor.x - pgp->HotSpot.x; + pt.y = gpsi->ptCursor.y - pgp->HotSpot.y; + if (pgp->SaveSurface != NULL) + { + RECTL DestRect; + POINTL SrcPoint; + SURFOBJ *SaveSurface; + SURFOBJ *MaskSurface; - pgp->Enabled = FALSE; + DestRect.left = max(pt.x, 0); + DestRect.top = max(pt.y, 0); + DestRect.right = min( + pt.x + pgp->Size.cx, + psoDest->sizlBitmap.cx); + DestRect.bottom = min( + pt.y + pgp->Size.cy, + psoDest->sizlBitmap.cy); - /* - * The mouse is hide from ShowCours and it is frist ?? - */ - if (pgp->ShowPointer < 0) - { - return ; - } + SrcPoint.x = max(-pt.x, 0); + SrcPoint.y = max(-pt.y, 0); - - /* - * Hide the cours - */ - pt.x = gpsi->ptCursor.x - pgp->HotSpot.x; - pt.y = gpsi->ptCursor.y - pgp->HotSpot.y; - - - if (pgp->SaveSurface != NULL) - { - RECTL DestRect; - POINTL SrcPoint; - SURFOBJ *SaveSurface; - SURFOBJ *MaskSurface; - - DestRect.left = max(pt.x, 0); - DestRect.top = max(pt.y, 0); - DestRect.right = min( - pt.x + pgp->Size.cx, - psoDest->sizlBitmap.cx); - DestRect.bottom = min( - pt.y + pgp->Size.cy, - psoDest->sizlBitmap.cy); - - SrcPoint.x = max(-pt.x, 0); - SrcPoint.y = max(-pt.y, 0); - - if((SaveSurface = EngLockSurface(pgp->SaveSurface))) - { - if((MaskSurface = EngLockSurface(pgp->MaskSurface))) + if ((SaveSurface = EngLockSurface(pgp->SaveSurface))) { - IntEngBitBltEx(psoDest, SaveSurface, MaskSurface, NULL, NULL, - &DestRect, &SrcPoint, &SrcPoint, NULL, NULL, - ROP3_TO_ROP4(SRCCOPY), FALSE); - EngUnlockSurface(MaskSurface); + if ((MaskSurface = EngLockSurface(pgp->MaskSurface))) + { + IntEngBitBltEx(psoDest, SaveSurface, MaskSurface, NULL, NULL, + &DestRect, &SrcPoint, &SrcPoint, NULL, NULL, + ROP3_TO_ROP4(SRCCOPY), FALSE); + EngUnlockSurface(MaskSurface); + } + EngUnlockSurface(SaveSurface); } - EngUnlockSurface(SaveSurface); - } - } + } } VOID INTERNAL_CALL IntShowMousePointer(PDEVOBJ *ppdev, SURFOBJ *psoDest) { - GDIPOINTER *pgp; - SURFOBJ *SaveSurface; - POINTL pt; + GDIPOINTER *pgp; + SURFOBJ *SaveSurface; + POINTL pt; - ASSERT(ppdev); - ASSERT(psoDest); + ASSERT(ppdev); + ASSERT(psoDest); - pgp = &ppdev->Pointer; + pgp = &ppdev->Pointer; - if (pgp->Enabled) - { - return; - } + if (pgp->Enabled) + { + return; + } - pgp->Enabled = TRUE; + pgp->Enabled = TRUE; - /* - * Do not blt the mouse if it in hide - */ - if (pgp->ShowPointer < 0) - { - return ; - } + /* Do not blt the mouse if it in hide */ + if (pgp->ShowPointer < 0) + { + return ; + } - pt.x = gpsi->ptCursor.x - pgp->HotSpot.x; - pt.y = gpsi->ptCursor.y - pgp->HotSpot.y; + pt.x = gpsi->ptCursor.x - pgp->HotSpot.x; + pt.y = gpsi->ptCursor.y - pgp->HotSpot.y; - /* - * Copy the pixels under the cursor to temporary surface. - */ + /* Copy the pixels under the cursor to temporary surface. */ + if (pgp->SaveSurface != NULL && + (SaveSurface = EngLockSurface(pgp->SaveSurface))) + { + RECTL DestRect; + POINTL SrcPoint; - if (pgp->SaveSurface != NULL && - (SaveSurface = EngLockSurface(pgp->SaveSurface))) - { - RECTL DestRect; - POINTL SrcPoint; + SrcPoint.x = max(pt.x, 0); + SrcPoint.y = max(pt.y, 0); - SrcPoint.x = max(pt.x, 0); - SrcPoint.y = max(pt.y, 0); + DestRect.left = SrcPoint.x - pt.x; + DestRect.top = SrcPoint.y - pt.y; + DestRect.right = min( + pgp->Size.cx, + psoDest->sizlBitmap.cx - pt.x); + DestRect.bottom = min( + pgp->Size.cy, + psoDest->sizlBitmap.cy - pt.y); - DestRect.left = SrcPoint.x - pt.x; - DestRect.top = SrcPoint.y - pt.y; - DestRect.right = min( - pgp->Size.cx, - psoDest->sizlBitmap.cx - pt.x); - DestRect.bottom = min( - pgp->Size.cy, - psoDest->sizlBitmap.cy - pt.y); - - IntEngBitBltEx(SaveSurface, psoDest, NULL, NULL, NULL, - &DestRect, &SrcPoint, NULL, NULL, NULL, - ROP3_TO_ROP4(SRCCOPY), FALSE); - EngUnlockSurface(SaveSurface); - } + IntEngBitBltEx(SaveSurface, psoDest, NULL, NULL, NULL, + &DestRect, &SrcPoint, NULL, NULL, NULL, + ROP3_TO_ROP4(SRCCOPY), FALSE); + EngUnlockSurface(SaveSurface); + } - /* - * Blit the cursor on the screen. - */ + /* Blit the cursor on the screen. */ + { + RECTL DestRect; + POINTL SrcPoint; + SURFOBJ *psoColor; + SURFOBJ *psoMask = NULL; - { - RECTL DestRect; - POINTL SrcPoint; - SURFOBJ *psoColor; - SURFOBJ *psoMask = NULL; + DestRect.left = max(pt.x, 0); + DestRect.top = max(pt.y, 0); + DestRect.right = min( + pt.x + pgp->Size.cx, + psoDest->sizlBitmap.cx); + DestRect.bottom = min( + pt.y + pgp->Size.cy, + psoDest->sizlBitmap.cy); - DestRect.left = max(pt.x, 0); - DestRect.top = max(pt.y, 0); - DestRect.right = min( - pt.x + pgp->Size.cx, - psoDest->sizlBitmap.cx); - DestRect.bottom = min( - pt.y + pgp->Size.cy, - psoDest->sizlBitmap.cy); + SrcPoint.x = max(-pt.x, 0); + SrcPoint.y = max(-pt.y, 0); - SrcPoint.x = max(-pt.x, 0); - SrcPoint.y = max(-pt.y, 0); + if (pgp->MaskSurface) + psoMask = EngLockSurface(pgp->MaskSurface); - - if (pgp->MaskSurface) - psoMask = EngLockSurface(pgp->MaskSurface); - - if (psoMask != NULL) - { - if (pgp->ColorSurface != NULL) + if (psoMask != NULL) { - if((psoColor = EngLockSurface(pgp->ColorSurface))) - { - IntEngBitBltEx(psoDest, psoColor, psoMask, NULL, - pgp->XlateObject, &DestRect, &SrcPoint, &SrcPoint, - NULL, NULL, R4_MASK, FALSE); - EngUnlockSurface(psoColor); - } + if (pgp->ColorSurface != NULL) + { + if ((psoColor = EngLockSurface(pgp->ColorSurface))) + { + IntEngBitBltEx(psoDest, psoColor, psoMask, NULL, + pgp->XlateObject, &DestRect, &SrcPoint, &SrcPoint, + NULL, NULL, R4_MASK, FALSE); + EngUnlockSurface(psoColor); + } + } + else + { + IntEngBitBltEx(psoDest, psoMask, NULL, NULL, pgp->XlateObject, + &DestRect, &SrcPoint, NULL, NULL, NULL, + ROP3_TO_ROP4(SRCAND), FALSE); + SrcPoint.y += pgp->Size.cy; + IntEngBitBltEx(psoDest, psoMask, NULL, NULL, pgp->XlateObject, + &DestRect, &SrcPoint, NULL, NULL, NULL, + ROP3_TO_ROP4(SRCINVERT), FALSE); + } + EngUnlockSurface(psoMask); } - else - { - IntEngBitBltEx(psoDest, psoMask, NULL, NULL, pgp->XlateObject, - &DestRect, &SrcPoint, NULL, NULL, NULL, - ROP3_TO_ROP4(SRCAND), FALSE); - SrcPoint.y += pgp->Size.cy; - IntEngBitBltEx(psoDest, psoMask, NULL, NULL, pgp->XlateObject, - &DestRect, &SrcPoint, NULL, NULL, NULL, - ROP3_TO_ROP4(SRCINVERT), FALSE); - } - EngUnlockSurface(psoMask); - } - } + } } /* * @implemented */ - ULONG APIENTRY EngSetPointerShape( - IN SURFOBJ *pso, - IN SURFOBJ *psoMask, - IN SURFOBJ *psoColor, - IN XLATEOBJ *pxlo, - IN LONG xHot, - IN LONG yHot, - IN LONG x, - IN LONG y, - IN RECTL *prcl, - IN FLONG fl) + IN SURFOBJ *pso, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN LONG xHot, + IN LONG yHot, + IN LONG x, + IN LONG y, + IN RECTL *prcl, + IN FLONG fl) { - PDEVOBJ *ppdev; - SURFOBJ *psoTemp; - GDIPOINTER *pgp; + PDEVOBJ *ppdev; + SURFOBJ *psoTemp; + GDIPOINTER *pgp; - ASSERT(pso); + ASSERT(pso); - ppdev = GDIDEV(pso); - pgp = &ppdev->Pointer; + ppdev = GDIDEV(pso); + pgp = &ppdev->Pointer; - IntHideMousePointer(ppdev, pso); + IntHideMousePointer(ppdev, pso); - if (pgp->ColorSurface != NULL) - { - /* FIXME: Is this really needed? */ - if((psoTemp = EngLockSurface(pgp->ColorSurface))) - { - EngFreeMem(psoTemp->pvBits); - psoTemp->pvBits = 0; - EngUnlockSurface(psoTemp); - } + if (pgp->ColorSurface != NULL) + { + /* FIXME: Is this really needed? */ + if ((psoTemp = EngLockSurface(pgp->ColorSurface))) + { + EngFreeMem(psoTemp->pvBits); + psoTemp->pvBits = 0; + EngUnlockSurface(psoTemp); + } - EngDeleteSurface(pgp->ColorSurface); - pgp->MaskSurface = NULL; - } + EngDeleteSurface(pgp->ColorSurface); + pgp->MaskSurface = NULL; + } - if (pgp->MaskSurface != NULL) - { - /* FIXME: Is this really needed? */ - if((psoTemp = EngLockSurface(pgp->MaskSurface))) - { - EngFreeMem(psoTemp->pvBits); - psoTemp->pvBits = 0; - EngUnlockSurface(psoTemp); - } + if (pgp->MaskSurface != NULL) + { + /* FIXME: Is this really needed? */ + if ((psoTemp = EngLockSurface(pgp->MaskSurface))) + { + EngFreeMem(psoTemp->pvBits); + psoTemp->pvBits = 0; + EngUnlockSurface(psoTemp); + } - EngDeleteSurface(pgp->MaskSurface); - pgp->MaskSurface = NULL; - } + EngDeleteSurface(pgp->MaskSurface); + pgp->MaskSurface = NULL; + } - if (pgp->SaveSurface != NULL) - { - EngDeleteSurface(pgp->SaveSurface); - pgp->SaveSurface = NULL; - } + if (pgp->SaveSurface != NULL) + { + EngDeleteSurface(pgp->SaveSurface); + pgp->SaveSurface = NULL; + } - if (pgp->XlateObject != NULL) - { - EngDeleteXlate(pgp->XlateObject); - pgp->XlateObject = NULL; - } + if (pgp->XlateObject != NULL) + { + EngDeleteXlate(pgp->XlateObject); + pgp->XlateObject = NULL; + } - /* - * See if we are being asked to hide the pointer. - */ + /* See if we are being asked to hide the pointer. */ + if (psoMask == NULL) + { + return SPS_ACCEPT_NOEXCLUDE; + } - if (psoMask == NULL) - { - return SPS_ACCEPT_NOEXCLUDE; - } + pgp->HotSpot.x = xHot; + pgp->HotSpot.y = yHot; - pgp->HotSpot.x = xHot; - pgp->HotSpot.y = yHot; + /* Actually this should be set by 'the other side', but it would be + * done right after this. It helps IntShowMousePointer. */ + if (x != -1) + { + gpsi->ptCursor.x = x; + gpsi->ptCursor.y = y; + } - /* Actually this should be set by 'the other side', but it would be - * done right after this. It helps IntShowMousePointer. */ - if (x != -1) - { - gpsi->ptCursor.x = x; - gpsi->ptCursor.y = y; - } + pgp->Size.cx = abs(psoMask->lDelta) << 3; + pgp->Size.cy = (psoMask->cjBits / abs(psoMask->lDelta)) >> 1; - pgp->Size.cx = abs(psoMask->lDelta) << 3; - pgp->Size.cy = (psoMask->cjBits / abs(psoMask->lDelta)) >> 1; + if (psoColor != NULL) + { + PBYTE Bits; - if (psoColor != NULL) - { - PBYTE Bits; + Bits = EngAllocMem(0, psoColor->cjBits, TAG_MOUSE); + if (Bits == NULL) + { + return SPS_ERROR; + } - Bits = EngAllocMem(0, psoColor->cjBits, TAG_MOUSE); - if (Bits == NULL) - { - return SPS_ERROR; - } + memcpy(Bits, psoColor->pvBits, psoColor->cjBits); - memcpy(Bits, psoColor->pvBits, psoColor->cjBits); + pgp->ColorSurface = (HSURF)EngCreateBitmap(pgp->Size, + psoColor->lDelta, psoColor->iBitmapFormat, + psoColor->lDelta < 0 ? 0 : BMF_TOPDOWN, Bits); + } + else + { + pgp->ColorSurface = NULL; + } - pgp->ColorSurface = (HSURF)EngCreateBitmap(pgp->Size, - psoColor->lDelta, psoColor->iBitmapFormat, - psoColor->lDelta < 0 ? 0 : BMF_TOPDOWN, Bits); - } - else - { - pgp->ColorSurface = NULL; - } + { + SIZEL Size; + PBYTE Bits; - { - SIZEL Size; - PBYTE Bits; + Size.cx = pgp->Size.cx; + Size.cy = pgp->Size.cy << 1; + Bits = EngAllocMem(0, psoMask->cjBits, TAG_MOUSE); + if (Bits == NULL) + { + return SPS_ERROR; + } - Size.cx = pgp->Size.cx; - Size.cy = pgp->Size.cy << 1; - Bits = EngAllocMem(0, psoMask->cjBits, TAG_MOUSE); - if (Bits == NULL) - { - return SPS_ERROR; - } + memcpy(Bits, psoMask->pvBits, psoMask->cjBits); - memcpy(Bits, psoMask->pvBits, psoMask->cjBits); + pgp->MaskSurface = (HSURF)EngCreateBitmap(Size, + psoMask->lDelta, psoMask->iBitmapFormat, + psoMask->lDelta < 0 ? 0 : BMF_TOPDOWN, Bits); + } - pgp->MaskSurface = (HSURF)EngCreateBitmap(Size, - psoMask->lDelta, psoMask->iBitmapFormat, - psoMask->lDelta < 0 ? 0 : BMF_TOPDOWN, Bits); - } + /* Create an XLATEOBJ that will be used for drawing masks. + * FIXME: We should get this in pxlo parameter! */ + if (pxlo == NULL) + { + HPALETTE BWPalette, DestPalette; + ULONG BWColors[] = {0, 0xFFFFFF}; - /* - * Create an XLATEOBJ that will be used for drawing masks. - * FIXME: We should get this in pxlo parameter! - */ + BWPalette = EngCreatePalette(PAL_INDEXED, sizeof(BWColors) / sizeof(ULONG), + BWColors, 0, 0, 0); - if (pxlo == NULL) - { - HPALETTE BWPalette, DestPalette; - ULONG BWColors[] = {0, 0xFFFFFF}; + DestPalette = ppdev->DevInfo.hpalDefault; + pgp->XlateObject = IntEngCreateXlate(0, PAL_INDEXED, + DestPalette, BWPalette); + EngDeletePalette(BWPalette); + } + else + { + pgp->XlateObject = pxlo; + } - BWPalette = EngCreatePalette(PAL_INDEXED, sizeof(BWColors) / sizeof(ULONG), - BWColors, 0, 0, 0); + /* Create surface for saving the pixels under the cursor. */ + { + LONG lDelta; - DestPalette = ppdev->DevInfo.hpalDefault; - pgp->XlateObject = IntEngCreateXlate(0, PAL_INDEXED, - DestPalette, BWPalette); - EngDeletePalette(BWPalette); - } - else - { - pgp->XlateObject = pxlo; - } + switch (pso->iBitmapFormat) + { + case BMF_1BPP: + lDelta = pgp->Size.cx >> 3; + break; + case BMF_4BPP: + lDelta = pgp->Size.cx >> 1; + break; + case BMF_8BPP: + lDelta = pgp->Size.cx; + break; + case BMF_16BPP: + lDelta = pgp->Size.cx << 1; + break; + case BMF_24BPP: + lDelta = pgp->Size.cx * 3; + break; + case BMF_32BPP: + lDelta = pgp->Size.cx << 2; + break; + default: + lDelta = 0; + break; + } - /* - * Create surface for saving the pixels under the cursor. - */ + pgp->SaveSurface = (HSURF)EngCreateBitmap(pgp->Size, + lDelta, + pso->iBitmapFormat, + BMF_TOPDOWN | BMF_NOZEROINIT, NULL); + } - { - LONG lDelta; + if (x != -1) + { + IntShowMousePointer(ppdev, pso); - switch (pso->iBitmapFormat) - { - case BMF_1BPP: - lDelta = pgp->Size.cx >> 3; - break; - case BMF_4BPP: - lDelta = pgp->Size.cx >> 1; - break; - case BMF_8BPP: - lDelta = pgp->Size.cx; - break; - case BMF_16BPP: - lDelta = pgp->Size.cx << 1; - break; - case BMF_24BPP: - lDelta = pgp->Size.cx * 3; - break; - case BMF_32BPP: - lDelta = pgp->Size.cx << 2; - break; - default: - lDelta = 0; - break; - } + if (prcl != NULL) + { + prcl->left = x - pgp->HotSpot.x; + prcl->top = y - pgp->HotSpot.x; + prcl->right = prcl->left + pgp->Size.cx; + prcl->bottom = prcl->top + pgp->Size.cy; + } + } else if (prcl != NULL) + prcl->left = prcl->top = prcl->right = prcl->bottom = -1; - pgp->SaveSurface = (HSURF)EngCreateBitmap( - pgp->Size, lDelta, pso->iBitmapFormat, BMF_TOPDOWN | BMF_NOZEROINIT, NULL); - } - - if(x != -1) - { - IntShowMousePointer(ppdev, pso); - - if (prcl != NULL) - { - prcl->left = x - pgp->HotSpot.x; - prcl->top = y - pgp->HotSpot.x; - prcl->right = prcl->left + pgp->Size.cx; - prcl->bottom = prcl->top + pgp->Size.cy; - } - } else if (prcl != NULL) - prcl->left = prcl->top = prcl->right = prcl->bottom = -1; - - return SPS_ACCEPT_EXCLUDE; + return SPS_ACCEPT_EXCLUDE; } /* @@ -531,61 +498,61 @@ EngSetPointerShape( VOID APIENTRY EngMovePointer( - IN SURFOBJ *pso, - IN LONG x, - IN LONG y, - IN RECTL *prcl) + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl) { - PDEVOBJ *ppdev; - GDIPOINTER *pgp; + PDEVOBJ *ppdev; + GDIPOINTER *pgp; - ASSERT(pso); + ASSERT(pso); - ppdev = GDIDEV(pso); + ppdev = GDIDEV(pso); - ASSERT(ppdev); + ASSERT(ppdev); - pgp = &ppdev->Pointer; + pgp = &ppdev->Pointer; - IntHideMousePointer(ppdev, pso); - if (x != -1) - { - /* Actually this should be set by 'the other side', but it would be - * done right after this. It helps IntShowMousePointer. */ - gpsi->ptCursor.x = x; - gpsi->ptCursor.y = y; - IntShowMousePointer(ppdev, pso); - if (prcl != NULL) - { - prcl->left = x - pgp->HotSpot.x; - prcl->top = y - pgp->HotSpot.x; - prcl->right = prcl->left + pgp->Size.cx; - prcl->bottom = prcl->top + pgp->Size.cy; - } - } else if (prcl != NULL) - prcl->left = prcl->top = prcl->right = prcl->bottom = -1; + IntHideMousePointer(ppdev, pso); + if (x != -1) + { + /* Actually this should be set by 'the other side', but it would be + * done right after this. It helps IntShowMousePointer. */ + gpsi->ptCursor.x = x; + gpsi->ptCursor.y = y; + IntShowMousePointer(ppdev, pso); + if (prcl != NULL) + { + prcl->left = x - pgp->HotSpot.x; + prcl->top = y - pgp->HotSpot.x; + prcl->right = prcl->left + pgp->Size.cx; + prcl->bottom = prcl->top + pgp->Size.cy; + } + } else if (prcl != NULL) + prcl->left = prcl->top = prcl->right = prcl->bottom = -1; } VOID APIENTRY IntEngMovePointer( - IN SURFOBJ *pso, - IN LONG x, - IN LONG y, - IN RECTL *prcl) + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl) { - SURFACE *psurf = CONTAINING_RECORD(pso, SURFACE, SurfObj); + SURFACE *psurf = CONTAINING_RECORD(pso, SURFACE, SurfObj); - SURFACE_LockBitmapBits(psurf); - if (GDIDEV(pso)->Pointer.MovePointer) + SURFACE_LockBitmapBits(psurf); + if (GDIDEV(pso)->Pointer.MovePointer) { - GDIDEV(pso)->Pointer.MovePointer(pso, x, y, prcl); + GDIDEV(pso)->Pointer.MovePointer(pso, x, y, prcl); } - else + else { - EngMovePointer(pso, x, y, prcl); + EngMovePointer(pso, x, y, prcl); } - SURFACE_UnlockBitmapBits(psurf); + SURFACE_UnlockBitmapBits(psurf); } /* EOF */