mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 18:35:41 +00:00
Implement BRUSH_GetObject it is not perfect, it return wrong color in some case. But we get down from 20 to 11 fails in wine test.
Wine say GetObject (HANDLE obj, INT Count, PVOID * Buffer) if Buffer is NULL return the requeuer size in bytes svn path=/trunk/; revision=24229
This commit is contained in:
parent
391e807b81
commit
cfe10b7a75
4 changed files with 29 additions and 9 deletions
|
@ -72,6 +72,8 @@ typedef struct
|
|||
#define BRUSHOBJ_FreeBrush(hBrush) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH)
|
||||
#define BRUSHOBJ_LockBrush(hBrush) ((PGDIBRUSHOBJ)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH))
|
||||
#define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pBrush)
|
||||
|
||||
INT FASTCALL BRUSH_GetObject (PGDIBRUSHOBJ GdiObject, INT Count, BRUSHOBJ * Buffer);
|
||||
BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -49,6 +49,19 @@ BRUSH_Cleanup(PVOID ObjectBody)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
INT FASTCALL
|
||||
BRUSH_GetObject (PGDIBRUSHOBJ BrushObj, INT Count, BRUSHOBJ * Buffer)
|
||||
{
|
||||
if (Buffer)
|
||||
{
|
||||
Buffer->iSolidColor = BrushObj->BrushAttr.lbColor;
|
||||
Buffer->pvRbrush = BrushObj->ulRealization;
|
||||
Buffer->flColorType = 0;
|
||||
}
|
||||
return sizeof(BRUSHOBJ);
|
||||
}
|
||||
|
||||
|
||||
XLATEOBJ* FASTCALL
|
||||
IntGdiCreateBrushXlate(PDC Dc, GDIBRUSHOBJ *BrushObj, BOOLEAN *Failed)
|
||||
{
|
||||
|
|
|
@ -1716,6 +1716,7 @@ NtGdiGetDeviceCaps(HDC hDC,
|
|||
DC_GET_VAL( INT, NtGdiGetMapMode, w.MapMode )
|
||||
DC_GET_VAL( INT, NtGdiGetPolyFillMode, w.polyFillMode )
|
||||
|
||||
|
||||
INT FASTCALL
|
||||
IntGdiGetObject(HANDLE Handle, INT Count, LPVOID Buffer)
|
||||
{
|
||||
|
@ -1737,10 +1738,11 @@ IntGdiGetObject(HANDLE Handle, INT Count, LPVOID Buffer)
|
|||
case GDI_OBJECT_TYPE_PEN:
|
||||
Result = PEN_GetObject((PENOBJ *) GdiObject, Count, Buffer);
|
||||
break;
|
||||
case GDI_OBJECT_TYPE_BRUSH:
|
||||
Result = BRUSH_GetObject((BRUSHOBJ *) GdiObject, Count, Buffer);
|
||||
break;
|
||||
#endif
|
||||
case GDI_OBJECT_TYPE_BRUSH:
|
||||
Result = BRUSH_GetObject((PGDIBRUSHOBJ ) GdiObject, Count, (BRUSHOBJ *)Buffer);
|
||||
break;
|
||||
|
||||
case GDI_OBJECT_TYPE_BITMAP:
|
||||
Result = BITMAP_GetObject((BITMAPOBJ *) GdiObject, Count, Buffer);
|
||||
break;
|
||||
|
|
|
@ -3916,6 +3916,8 @@ TextIntRealizeFont(HFONT FontHandle)
|
|||
|
||||
INT FASTCALL
|
||||
FontGetObject(PTEXTOBJ Font, INT Count, PVOID Buffer)
|
||||
{
|
||||
if (Buffer)
|
||||
{
|
||||
if (Count < sizeof(LOGFONTW))
|
||||
{
|
||||
|
@ -3924,6 +3926,7 @@ FontGetObject(PTEXTOBJ Font, INT Count, PVOID Buffer)
|
|||
}
|
||||
|
||||
RtlCopyMemory(Buffer, &Font->logfont, sizeof(LOGFONTW));
|
||||
}
|
||||
|
||||
return sizeof(LOGFONTW);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue