New FONT_GetObject32W(), GetObject32W().
diff --git a/include/font.h b/include/font.h
index e629126..a1bc16a 100644
--- a/include/font.h
+++ b/include/font.h
@@ -58,7 +58,7 @@
extern BOOL32 FONT_Init( UINT16* pTextCaps );
extern INT16 FONT_GetObject16( FONTOBJ * font, INT16 count, LPSTR buffer );
extern INT32 FONT_GetObject32A( FONTOBJ * font, INT32 count, LPSTR buffer );
-
+extern INT32 FONT_GetObject32W( FONTOBJ * font, INT32 count, LPSTR buffer );
extern void FONT_LogFont32ATo16( const LOGFONT32A* font32, LPLOGFONT16 font16 );
extern void FONT_LogFont32WTo16( const LOGFONT32W* font32, LPLOGFONT16 font16 );
extern void FONT_LogFont16To32A( const LPLOGFONT16 font16, LPLOGFONT32A font32 );
diff --git a/objects/font.c b/objects/font.c
index a51b7b8..7c966f1 100644
--- a/objects/font.c
+++ b/objects/font.c
@@ -343,6 +343,19 @@
memcpy( buffer, &fnt32, count );
return count;
}
+/***********************************************************************
+ * FONT_GetObject32W
+ */
+INT32 FONT_GetObject32W( FONTOBJ *font, INT32 count, LPSTR buffer )
+{
+ LOGFONT32W fnt32;
+
+ FONT_LogFont16To32W( &font->logfont, &fnt32 );
+
+ if (count > sizeof(fnt32)) count = sizeof(fnt32);
+ memcpy( buffer, &fnt32, count );
+ return count;
+}
/***********************************************************************
diff --git a/objects/gdiobj.c b/objects/gdiobj.c
index fce6c50..88242e4 100644
--- a/objects/gdiobj.c
+++ b/objects/gdiobj.c
@@ -478,6 +478,47 @@
GDI_HEAP_UNLOCK( handle );
return result;
}
+/***********************************************************************
+ * GetObject32W (GDI32.206)
+ */
+INT32 WINAPI GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer )
+{
+ GDIOBJHDR * ptr = NULL;
+ INT32 result = 0;
+ TRACE(gdi, "%08x %d %p\n", handle, count, buffer );
+ if (!count) return 0;
+
+ if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
+ ptr = StockObjects[handle - FIRST_STOCK_HANDLE];
+ else
+ ptr = (GDIOBJHDR *) GDI_HEAP_LOCK( handle );
+ if (!ptr) return 0;
+
+ switch(ptr->wMagic)
+ {
+ case PEN_MAGIC:
+ result = PEN_GetObject32( (PENOBJ *)ptr, count, buffer );
+ break;
+ case BRUSH_MAGIC:
+ result = BRUSH_GetObject32( (BRUSHOBJ *)ptr, count, buffer );
+ break;
+ case BITMAP_MAGIC:
+ result = BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer );
+ break;
+ case FONT_MAGIC:
+ result = FONT_GetObject32W( (FONTOBJ *)ptr, count, buffer );
+ break;
+ case PALETTE_MAGIC:
+ result = PALETTE_GetObject( (PALETTEOBJ *)ptr, count, buffer );
+ break;
+ default:
+ FIXME(gdi, "Magic %04x not implemented\n",
+ ptr->wMagic );
+ break;
+ }
+ GDI_HEAP_UNLOCK( handle );
+ return result;
+}
/***********************************************************************
* GetObjectType (GDI32.205)
@@ -537,14 +578,6 @@
}
/***********************************************************************
- * GetObject32W (GDI32.206)
- */
-INT32 WINAPI GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer )
-{
- return GetObject32A( handle, count, buffer );
-}
-
-/***********************************************************************
* GetCurrentObject (GDI32.166)
*/
HANDLE32 WINAPI GetCurrentObject(HDC32 hdc,UINT32 type)