5 * Copyright 1996 Thomas Sandford t.d.g.sandford@prds-grn.demon.co.uk
17 int WIN32_GetObject( HANDLE handle
, int count
, LPVOID buffer
)
19 /* largely a copy of GetObject, but with size mangling capabilities to
20 convert between win16 and win32 objects. Yeuch! */
23 void *temp
= alloca(count
);
24 GDIOBJHDR
* ptr
= NULL
;
26 dprintf_win32(stddeb
, "WIN32_GetObject: %d %d %p\n", handle
, count
, buffer
);
28 if ((!count
) || (temp
== NULL
))
31 ptr
= GDI_GetObjPtr(handle
, MAGIC_DONTCARE
);
34 /* FIXME: only bitmaps fixed so far */
39 return PEN_GetObject( (PENOBJ
*)ptr
, count
, buffer
);
41 return BRUSH_GetObject( (BRUSHOBJ
*)ptr
, count
, buffer
);
43 BITMAP
*pbm
= (BITMAP
*)temp
;
44 int *pdest
= (int *)buffer
;
49 BITMAP_GetObject( (BITMAPOBJ
*)ptr
, count
, temp
);
51 pdest
[0] = pbm
->bmType
;
53 pdest
[1] = pbm
->bmWidth
;
55 pdest
[2] = pbm
->bmHeight
;
57 pdest
[3] = pbm
->bmWidthBytes
;
59 pdest
[4] = pbm
->bmPlanes
;
61 pdest
[5] = pbm
->bmBitsPixel
;
63 pdest
[6] = pbm
->bmBits
;
65 return (count
> 28) ? 28 : count
- (count
% 4);
68 return FONT_GetObject( (FONTOBJ
*)ptr
, count
, buffer
);
70 return PALETTE_GetObject( (PALETTEOBJ
*)ptr
, count
, buffer
);