From 4c2f6e8647a1f99e9f3144fc8424545068cd1d42 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Mon, 25 Sep 2006 20:12:43 +0000 Subject: [PATCH] implement PEN_GetObject, we can now get pen from GetopjectType. and manger pass some new wine test svn path=/trunk/; revision=24270 --- reactos/subsystems/win32/win32k/include/pen.h | 2 ++ reactos/subsystems/win32/win32k/objects/dc.c | 6 +++--- reactos/subsystems/win32/win32k/objects/pen.c | 19 ++++++++++++++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/reactos/subsystems/win32/win32k/include/pen.h b/reactos/subsystems/win32/win32k/include/pen.h index e8c2a51c2de..01cb035a686 100644 --- a/reactos/subsystems/win32/win32k/include/pen.h +++ b/reactos/subsystems/win32/win32k/include/pen.h @@ -11,4 +11,6 @@ #define PENOBJ_LockPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN)) #define PENOBJ_UnlockPen(pPenObj) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pPenObj) +INT STDCALL PEN_GetObject(PGDIBRUSHOBJ hPen, INT Count, PLOGPEN Buffer); + #endif diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index 72c9b51a6fb..cb7b0278103 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -1734,11 +1734,11 @@ IntGdiGetObject(HANDLE Handle, INT Count, LPVOID Buffer) ObjectType = GDIOBJ_GetObjectType(Handle); switch (ObjectType) { -#if 0 + case GDI_OBJECT_TYPE_PEN: - Result = PEN_GetObject((PENOBJ *) GdiObject, Count, Buffer); + Result = PEN_GetObject((PGDIBRUSHOBJ) GdiObject, Count, (PLOGPEN) Buffer); // IntGdiCreatePenIndirect break; -#endif + case GDI_OBJECT_TYPE_BRUSH: Result = BRUSH_GetObject((PGDIBRUSHOBJ ) GdiObject, Count, (LPLOGBRUSH)Buffer); break; diff --git a/reactos/subsystems/win32/win32k/objects/pen.c b/reactos/subsystems/win32/win32k/objects/pen.c index 7ba325fbefb..795b94086cb 100644 --- a/reactos/subsystems/win32/win32k/objects/pen.c +++ b/reactos/subsystems/win32/win32k/objects/pen.c @@ -84,7 +84,7 @@ IntGdiCreatePenIndirect(PLOGPEN LogPen) break; default: - DPRINT1("FIXME: IntGdiCreatePenIndirect is UNIMPLEMENTED\n"); + DPRINT1("FIXME: IntGdiCreatePenIndirect is UNIMPLEMENTED pen %x\n",LogPen->lopnStyle); } PENOBJ_UnlockPen(PenObject); @@ -92,6 +92,23 @@ IntGdiCreatePenIndirect(PLOGPEN LogPen) return hPen; } +INT STDCALL +PEN_GetObject(PGDIBRUSHOBJ PenObject, INT Count, PLOGPEN Buffer) +{ + + LOGPEN LogPen; + + if( Buffer == NULL ) return sizeof(LOGPEN); + + LogPen.lopnWidth = PenObject->ptPenWidth; + LogPen.lopnStyle = PenObject->ulPenStyle; + LogPen.lopnColor = PenObject->BrushAttr.lbColor; + memcpy(Buffer, &LogPen, Count); + + return Count; + +} + /* PUBLIC FUNCTIONS ***********************************************************/ HPEN STDCALL