Update FontGetObject, point out required modifications to support ENUMLOGFONTEXDVW for font objects.

svn path=/trunk/; revision=26511
This commit is contained in:
James Tabor 2007-04-26 04:34:46 +00:00
parent cd5a11a313
commit 25e902187c

View file

@ -4108,12 +4108,39 @@ FontGetObject(PTEXTOBJ Font, INT Count, PVOID Buffer)
{
if( Buffer == NULL ) return sizeof(LOGFONTW);
/* fixme SetLastWin32Error(ERROR_BUFFER_OVERFLOW); in count<0*/
if (Count < sizeof(LOGFONTW)) return 0;
if (Count > sizeof(LOGFONTW)) Count = sizeof(LOGFONTW);
switch (Count)
{
/* Everything will need to be converted over to ENUMLOGFONTEXDVW.
case sizeof(ENUMLOGFONTEXDVW):
RtlCopyMemory( (LPENUMLOGFONTEXDVW) Buffer.elfDesignVector,
&Font->logFont.elfDesignVector,
sizeof(DESIGNVECTOR));
case sizeof(ENUMLOGFONTEXW):
RtlCopyMemory( (LPENUMLOGFONTEXW) Buffer,
&Font->logFont.elfEnumLogfontEx,
sizeof(ENUMLOGFONTEXW));
break;
RtlCopyMemory(Buffer, &Font->logfont, sizeof(LOGFONTW));
return sizeof(LOGFONTW);
case sizeof(EXTLOGFONTW):
case sizeof(ENUMLOGFONTW):
RtlCopyMemory((LPENUMLOGFONTW) Buffer,
(LPENUMLOGFONTW) &Font->logfont.elfEnumLogfontEx.elfLogFont,
sizeof(ENUMLOGFONTW));
break;
*/
case sizeof(LOGFONTW):
/* RtlCopyMemory((LPLOGFONTW) Buffer,
&Font->logFont.elfEnumLogfontEx.elfLogFont,
sizeof(LOGFONTW));
*/
RtlCopyMemory(Buffer, &Font->logfont, sizeof(LOGFONTW));
break;
default:
SetLastWin32Error(ERROR_BUFFER_OVERFLOW);
return 0;
}
return Count;
}