18 UNICODE_STRING StringU
;
23 RtlInitAnsiString(&StringA
, (LPSTR
)lpString
);
24 RtlAnsiStringToUnicodeString(&StringU
, &StringA
, TRUE
);
26 StringU
.Buffer
= NULL
;
28 ret
= TextOutW(hdc
, nXStart
, nYStart
, StringU
.Buffer
, cbString
);
29 RtlFreeUnicodeString(&StringU
);
46 return NtGdiTextOut(hdc
, nXStart
, nYStart
, lpString
, cbString
);
59 /* MSDN docs say this is equivalent */
60 return GetTextCharsetInfo(hdc
, NULL
, 0);
71 LPFONTSIGNATURE lpSig
,
75 return NtGdiGetTextCharsetInfo(hdc
, lpSig
, dwFlags
);
91 if (! NtGdiGetTextMetrics(hdc
, &tmw
))
96 return TextMetricW2A(lptm
, &tmw
);
110 return NtGdiGetTextMetrics(hdc
, lptm
);
127 UNICODE_STRING StringU
;
130 RtlInitAnsiString(&StringA
, (LPSTR
)lpString
);
131 RtlAnsiStringToUnicodeString(&StringU
, &StringA
, TRUE
);
133 ret
= GetTextExtentPointW(hdc
, StringU
.Buffer
, cbString
, lpSize
);
135 RtlFreeUnicodeString(&StringU
);
153 return NtGdiGetTextExtent(hdc
, (LPWSTR
)lpString
, cbString
, lpSize
, 0);
162 GetTextExtentExPointW(
172 return NtGdiGetTextExtentExPoint (
173 hdc
, lpszStr
, cchString
, nMaxExtent
, lpnFit
, alpDx
, lpSize
);
182 GetTextExtentExPointA(
196 Status
= HEAP_strdupA2W ( &lpszStrW
, lpszStr
);
197 if (!NT_SUCCESS (Status
))
198 SetLastError (RtlNtStatusToDosError(Status
));
201 rc
= NtGdiGetTextExtentExPoint (
202 hdc
, lpszStrW
, cchString
, nMaxExtent
, lpnFit
, alpDx
, lpSize
);
204 HEAP_free ( lpszStrW
);
216 GetTextExtentPoint32A(
224 UNICODE_STRING StringU
;
227 RtlInitAnsiString(&StringA
, (LPSTR
)lpString
);
228 RtlAnsiStringToUnicodeString(&StringU
, &StringA
, TRUE
);
230 ret
= GetTextExtentPoint32W(hdc
, StringU
.Buffer
, cbString
, lpSize
);
232 RtlFreeUnicodeString(&StringU
);
243 GetTextExtentPoint32W(
250 return NtGdiGetTextExtentPoint32(hdc
, lpString
, cbString
, lpSize
);
271 UNICODE_STRING StringU
;
274 RtlInitAnsiString(&StringA
, (LPSTR
)lpString
);
275 RtlAnsiStringToUnicodeString(&StringU
, &StringA
, TRUE
);
277 ret
= ExtTextOutW(hdc
, X
, Y
, fuOptions
, lprc
, StringU
.Buffer
, cbCount
, lpDx
);
279 RtlFreeUnicodeString(&StringU
);
301 return NtGdiExtTextOut(hdc
, X
, Y
, fuOptions
, lprc
, lpString
, cbCount
, lpDx
);
316 return NtGdiGetTextFace(a0
, a1
, a2
);
325 GetTextFaceA( HDC hdc
, INT count
, LPSTR name
)
327 INT res
= GetTextFaceW(hdc
, 0, NULL
);
328 LPWSTR nameW
= HeapAlloc( GetProcessHeap(), 0, res
* 2 );
329 GetTextFaceW( hdc
, res
, nameW
);
333 if (count
&& !WideCharToMultiByte( CP_ACP
, 0, nameW
, -1, name
, count
, NULL
, NULL
))
338 res
= WideCharToMultiByte( CP_ACP
, 0, nameW
, -1, NULL
, 0, NULL
, NULL
);
339 HeapFree( GetProcessHeap(), 0, nameW
);