* $Id$
*/
-#include <w32k.h>
+#include <win32k.h>
#define NDEBUG
#include <debug.h>
PBRUSH
FASTCALL
-PEN_LockPen(HGDIOBJ hBMObj)
+PEN_ShareLockPen(HGDIOBJ hobj)
{
- if (GDI_HANDLE_GET_TYPE(hBMObj) == GDI_OBJECT_TYPE_EXTPEN)
- return GDIOBJ_LockObj( hBMObj, GDI_OBJECT_TYPE_EXTPEN);
- else
- return GDIOBJ_LockObj( hBMObj, GDI_OBJECT_TYPE_PEN);
-}
+ if (GDI_HANDLE_GET_TYPE(hobj) != GDILoObjType_LO_PEN_TYPE &&
+ GDI_HANDLE_GET_TYPE(hobj) != GDILoObjType_LO_EXTPEN_TYPE)
+ {
+ return NULL;
+ }
-PBRUSH
-FASTCALL
-PEN_ShareLockPen(HGDIOBJ hBMObj)
-{
- if (GDI_HANDLE_GET_TYPE(hBMObj) == GDI_OBJECT_TYPE_EXTPEN)
- return GDIOBJ_ShareLockObj( hBMObj, GDI_OBJECT_TYPE_EXTPEN);
- else
- return GDIOBJ_ShareLockObj( hBMObj, GDI_OBJECT_TYPE_PEN);
+ return (PBRUSH)GDIOBJ_ReferenceObjectByHandle(hobj, GDIObjType_BRUSH_TYPE);
}
HPEN APIENTRY
{
HPEN hPen;
PBRUSH pbrushPen;
- static const BYTE PatternAlternate[] = {0x55, 0x55, 0x55};
- static const BYTE PatternDash[] = {0xFF, 0xFF, 0xC0};
- static const BYTE PatternDot[] = {0xE3, 0x8E, 0x38};
- static const BYTE PatternDashDot[] = {0xFF, 0x81, 0xC0};
- static const BYTE PatternDashDotDot[] = {0xFF, 0x8E, 0x38};
+ static const BYTE PatternAlternate[] = {0x55, 0x55, 0x55, 0};
+ static const BYTE PatternDash[] = {0xFF, 0xFF, 0xC0, 0};
+ static const BYTE PatternDot[] = {0xE3, 0x8E, 0x38, 0};
+ static const BYTE PatternDashDot[] = {0xFF, 0x81, 0xC0, 0};
+ static const BYTE PatternDashDotDot[] = {0xFF, 0x8E, 0x38, 0};
dwWidth = abs(dwWidth);
if (!pbrushPen)
{
- SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+ EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
DPRINT("Can't allocate pen\n");
return 0;
}
case PS_ALTERNATE:
pbrushPen->flAttrs |= GDIBRUSH_IS_BITMAP;
- pbrushPen->hbmPattern = IntGdiCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternAlternate);
+ pbrushPen->hbmPattern = GreCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternAlternate);
break;
case PS_DOT:
pbrushPen->flAttrs |= GDIBRUSH_IS_BITMAP;
- pbrushPen->hbmPattern = IntGdiCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDot);
+ pbrushPen->hbmPattern = GreCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDot);
break;
case PS_DASH:
pbrushPen->flAttrs |= GDIBRUSH_IS_BITMAP;
- pbrushPen->hbmPattern = IntGdiCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDash);
+ pbrushPen->hbmPattern = GreCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDash);
break;
case PS_DASHDOT:
pbrushPen->flAttrs |= GDIBRUSH_IS_BITMAP;
- pbrushPen->hbmPattern = IntGdiCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDashDot);
+ pbrushPen->hbmPattern = GreCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDashDot);
break;
case PS_DASHDOTDOT:
pbrushPen->flAttrs |= GDIBRUSH_IS_BITMAP;
- pbrushPen->hbmPattern = IntGdiCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDashDotDot);
+ pbrushPen->hbmPattern = GreCreateBitmap(24, 1, 1, 1, (LPBYTE)PatternDashDotDot);
break;
case PS_INSIDEFRAME:
return hPen;
ExitCleanup:
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
pbrushPen->pStyle = NULL;
- PEN_UnlockPen(pbrushPen);
- if (bOldStylePen)
- PEN_FreePenByHandle(hPen);
- else
- PEN_FreeExtPenByHandle(hPen);
+ GDIOBJ_vDeleteObject(&pbrushPen->BaseObject);
return NULL;
}
VOID FASTCALL
IntGdiSetSolidPenColor(HPEN hPen, COLORREF Color)
{
- PBRUSH pbrushPen;
+ PBRUSH pbrPen;
- pbrushPen = PEN_LockPen(hPen);
- if (pbrushPen)
+ pbrPen = PEN_ShareLockPen(hPen);
+ if (pbrPen)
{
- if (pbrushPen->flAttrs & GDIBRUSH_IS_SOLID)
+ if (pbrPen->flAttrs & GDIBRUSH_IS_SOLID)
{
- pbrushPen->BrushAttr.lbColor = Color & 0xFFFFFF;
+ pbrPen->BrushAttr.lbColor = Color & 0xFFFFFF;
}
- PEN_UnlockPen(pbrushPen);
+ PEN_ShareUnlockPen(pbrPen);
}
}
if (cbCount < cbRetCount) return 0;
- if ( (pbrushPen->ulPenStyle & PS_STYLE_MASK) == PS_NULL &&
+ if ( (pbrushPen->ulPenStyle & PS_STYLE_MASK) == PS_NULL &&
cbCount == sizeof(EXTLOGPEN))
{
- pExtLogPen = (PEXTLOGPEN)pBuffer;
+ pExtLogPen = (PEXTLOGPEN)pBuffer;
pExtLogPen->elpPenStyle = pbrushPen->ulPenStyle;
pExtLogPen->elpWidth = 0;
pExtLogPen->elpBrushStyle = pbrushPen->ulStyle;
{
if ( PenStyle < PS_SOLID || PenStyle > PS_INSIDEFRAME )
{
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
return NULL;
}
if ((int)dwStyleCount < 0) return 0;
if (dwStyleCount > 16)
{
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
return 0;
}
if (dwStyleCount > 0)
{
- pSafeStyle = ExAllocatePoolWithTag(NonPagedPool, dwStyleCount * sizeof(DWORD), TAG_PENSTYLES);
+ pSafeStyle = ExAllocatePoolWithTag(NonPagedPool, dwStyleCount * sizeof(DWORD), GDITAG_PENSTYLE);
if (!pSafeStyle)
{
SetLastNtError(ERROR_NOT_ENOUGH_MEMORY);
if(!NT_SUCCESS(Status))
{
SetLastNtError(Status);
- ExFreePoolWithTag(pSafeStyle, TAG_PENSTYLES);
+ ExFreePoolWithTag(pSafeStyle, GDITAG_PENSTYLE);
return 0;
}
}
if(!NT_SUCCESS(Status))
{
SetLastNtError(Status);
- if (pSafeStyle) ExFreePoolWithTag(pSafeStyle, TAG_PENSTYLES);
+ if (pSafeStyle) ExFreePoolWithTag(pSafeStyle, GDITAG_PENSTYLE);
return 0;
}
}
if (!hPen && pSafeStyle)
{
- ExFreePoolWithTag(pSafeStyle, TAG_PENSTYLES);
+ ExFreePoolWithTag(pSafeStyle, GDITAG_PENSTYLE);
}
return hPen;
}