[GDI32][NTGDI][SDK] Font/Text: Fix SAL2 annotations and const-ness (#7865)

I want to work in correct type info.
JIRA issue: CORE-17684
- Add and fix SAL2 annotations.
- Fix const-ness of function
  parameters.
- Delete needless type casts.
This commit is contained in:
Katayama Hirofumi MZ 2025-05-06 15:13:04 +09:00 committed by GitHub
parent 530d26a1f4
commit 0ca6002b4f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 312 additions and 300 deletions

View file

@ -1087,12 +1087,12 @@ NtGdiGetSpoolMessage(
DWORD
APIENTRY
NtGdiGetGlyphIndicesWInternal(
IN HDC hdc,
IN OPTIONAL LPWSTR pwc,
IN INT cwc,
OUT OPTIONAL LPWORD pgi,
IN DWORD iMode,
IN BOOL bSubset)
_In_ HDC hdc,
_In_reads_opt_(cwc) PCWCH pwc,
_In_ INT cwc,
_Out_writes_opt_(cwc) PWORD pgi,
_In_ DWORD iMode,
_In_ BOOL bSubset)
{
UNIMPLEMENTED;
return 0;

View file

@ -672,7 +672,7 @@ NewGetCharacterPlacementW(
nSet = lpResults->nGlyphs;
return NtGdiGetCharacterPlacementW( hdc,
(LPWSTR)lpString,
lpString,
nSet,
nMaxExtent,
lpResults,
@ -699,9 +699,9 @@ GetCharABCWidthsFloatW(HDC hdc,
return NtGdiGetCharABCWidthsW( hdc,
FirstChar,
(ULONG)(LastChar - FirstChar + 1),
(PWCHAR) NULL,
NULL,
0,
(PVOID)abcF);
abcF);
}
/*
@ -724,9 +724,9 @@ GetCharWidthFloatW(HDC hdc,
return NtGdiGetCharWidthW( hdc,
iFirstChar,
(ULONG)(iLastChar - iFirstChar + 1),
(PWCHAR) NULL,
NULL,
0,
(PVOID) pxBuffer);
pxBuffer);
}
/*
@ -749,9 +749,9 @@ GetCharWidthW(HDC hdc,
return NtGdiGetCharWidthW( hdc,
iFirstChar,
(ULONG)(iLastChar - iFirstChar + 1),
(PWCHAR) NULL,
NULL,
GCW_NOFLOAT,
(PVOID) lpBuffer);
lpBuffer);
}
/*
@ -774,9 +774,9 @@ GetCharWidth32W(HDC hdc,
return NtGdiGetCharWidthW( hdc,
iFirstChar,
(ULONG)(iLastChar - iFirstChar + 1),
(PWCHAR) NULL,
NULL,
GCW_NOFLOAT|GCW_WIN32,
(PVOID) lpBuffer);
lpBuffer);
}
@ -800,9 +800,9 @@ GetCharABCWidthsW(HDC hdc,
return NtGdiGetCharABCWidthsW( hdc,
FirstChar,
(ULONG)(LastChar - FirstChar + 1),
(PWCHAR) NULL,
NULL,
GCABCW_NOFLOAT,
(PVOID)lpabc);
lpabc);
}
/*
@ -837,10 +837,10 @@ GetCharWidthA(
ret = NtGdiGetCharWidthW( hdc,
wstr[0],
(ULONG) count,
(PWCHAR) wstr,
count,
wstr,
GCW_NOFLOAT,
(PVOID) lpBuffer);
lpBuffer);
HeapFree(GetProcessHeap(), 0, str);
HeapFree(GetProcessHeap(), 0, wstr);
@ -880,10 +880,10 @@ GetCharWidth32A(
ret = NtGdiGetCharWidthW( hdc,
wstr[0],
(ULONG) count,
(PWCHAR) wstr,
count,
wstr,
GCW_NOFLOAT|GCW_WIN32,
(PVOID) lpBuffer);
lpBuffer);
HeapFree(GetProcessHeap(), 0, str);
HeapFree(GetProcessHeap(), 0, wstr);
@ -920,7 +920,7 @@ GetCharWidthFloatA(
HeapFree(GetProcessHeap(), 0, str);
return FALSE;
}
ret = NtGdiGetCharWidthW( hdc, wstr[0], (ULONG) count, (PWCHAR) wstr, 0, (PVOID) pxBuffer);
ret = NtGdiGetCharWidthW(hdc, wstr[0], count, wstr, 0, pxBuffer);
HeapFree(GetProcessHeap(), 0, str);
HeapFree(GetProcessHeap(), 0, wstr);
@ -1000,7 +1000,7 @@ GetCharABCWidthsFloatA(
HeapFree( GetProcessHeap(), 0, str );
return FALSE;
}
ret = NtGdiGetCharABCWidthsW( hdc,wstr[0],(ULONG)count, (PWCHAR)wstr, 0, (PVOID)lpABCF);
ret = NtGdiGetCharABCWidthsW(hdc, wstr[0], count, wstr, 0, lpABCF);
HeapFree( GetProcessHeap(), 0, str );
HeapFree( GetProcessHeap(), 0, wstr );
@ -1666,7 +1666,7 @@ CreateFontIndirectExA(const ENUMLOGFONTEXDVA *elfexd)
&Logfont.elfEnumLogfontEx );
RtlCopyMemory( &Logfont.elfDesignVector,
(PVOID) &elfexd->elfDesignVector,
&elfexd->elfDesignVector,
sizeof(DESIGNVECTOR));
return NtGdiHfontCreate( &Logfont, 0, 0, 0, NULL);
@ -1864,7 +1864,7 @@ CreateFontA(
UNICODE_STRING StringU;
HFONT ret;
RtlInitAnsiString(&StringA, (LPSTR)lpszFace);
RtlInitAnsiString(&StringA, lpszFace);
RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
ret = CreateFontW(nHeight,

View file

@ -249,7 +249,8 @@ GetTextExtentPointA(
UNICODE_STRING StringU;
BOOL ret;
RtlInitAnsiString(&StringA, (LPSTR)lpString);
/* FIXME: lpString can be non-NUL-terminated */
RtlInitAnsiString(&StringA, lpString);
RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
ret = GetTextExtentPointW(hdc, StringU.Buffer, cchString, lpsz);
@ -271,7 +272,7 @@ GetTextExtentPointW(
_In_ INT cchString,
_Out_ LPSIZE lpsz)
{
return NtGdiGetTextExtent(hdc, (LPWSTR)lpString, cchString, lpsz, 0);
return NtGdiGetTextExtent(hdc, lpString, cchString, lpsz, 0);
}
@ -289,7 +290,6 @@ GetTextExtentExPointW(
_Out_writes_to_opt_(cchString, *lpnFit) LPINT lpnDx,
_Out_ LPSIZE lpSize)
{
/* Windows doesn't check nMaxExtent validity in unicode version */
if (nMaxExtent < -1)
{
@ -299,8 +299,7 @@ GetTextExtentExPointW(
if (LoadLPK(LPK_GTEP))
return LpkGetTextExtentExPoint(hdc, lpszString, cchString, nMaxExtent, lpnFit, lpnDx, lpSize, 0, 0);
return NtGdiGetTextExtentExW (
hdc, (LPWSTR)lpszString, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)lpnDx, lpSize, 0 );
return NtGdiGetTextExtentExW(hdc, lpszString, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)lpnDx, lpSize, 0);
}
@ -311,14 +310,14 @@ BOOL
WINAPI
GetTextExtentExPointWPri(
_In_ HDC hdc,
_In_reads_(cwc) LPCWSTR lpwsz,
_In_reads_(cwc) PCWCH lpwsz,
_In_ INT cwc,
_In_ INT dxMax,
_Out_opt_ LPINT pcCh,
_Out_writes_to_opt_(cwc, *pcCh) LPINT pdxOut,
_In_ LPSIZE psize)
{
return NtGdiGetTextExtentExW(hdc, (LPWSTR)lpwsz, cwc, dxMax, (PULONG)pcCh, (PULONG)pdxOut, psize, 0);
return NtGdiGetTextExtentExW(hdc, lpwsz, cwc, dxMax, (PULONG)pcCh, (PULONG)pdxOut, psize, 0);
}
/*
@ -405,7 +404,7 @@ GetTextExtentPoint32W(
_In_ int cchString,
_Out_ LPSIZE lpSize)
{
return NtGdiGetTextExtent(hdc, (LPWSTR)lpString, cchString, lpSize, 0);
return NtGdiGetTextExtent(hdc, lpString, cchString, lpSize, 0);
}
/*

View file

@ -1,11 +1,10 @@
/*
* PROJECT: ReactOS win32 kernel mode subsystem
* LICENSE: GPL - See COPYING in the top level directory
* FILE: win32ss/gdi/ntgdi/font.c
* PURPOSE: Font
* PROGRAMMERS: James Tabor <james.tabor@reactos.org>
* Timo Kreuzer <timo.kreuzer@reactos.org>
* Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
* PROJECT: ReactOS win32 kernel mode subsystem
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Font
* COPYRIGHT: Copyright (C) James Tabor <james.tabor@reactos.org>
* Copyright (C) Timo Kreuzer <timo.kreuzer@reactos.org>
* Copyright (C) Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
*/
/** Includes ******************************************************************/
@ -15,12 +14,18 @@
#define NDEBUG
#include <debug.h>
HFONT APIENTRY HfontCreate( IN PENUMLOGFONTEXDVW pelfw,IN ULONG cjElfw,IN LFTYPE lft,IN FLONG fl,IN PVOID pvCliData );
HFONT APIENTRY
HfontCreate(
_In_ const ENUMLOGFONTEXDVW *pelfw,
_In_ ULONG cjElfw,
_In_ LFTYPE lft,
_In_ FLONG fl,
_In_opt_ PVOID pvCliData);
/** Internal ******************************************************************/
HFONT FASTCALL
GreCreateFontIndirectW( LOGFONTW *lplf )
GreCreateFontIndirectW(_In_ const LOGFONTW *lplf)
{
if (lplf)
{
@ -38,7 +43,7 @@ GreCreateFontIndirectW( LOGFONTW *lplf )
RtlZeroMemory( &Logfont.elfDesignVector, sizeof(DESIGNVECTOR));
return HfontCreate((PENUMLOGFONTEXDVW)&Logfont, 0, 0, 0, NULL );
return HfontCreate(&Logfont, 0, 0, 0, NULL);
}
else return NULL;
}
@ -46,9 +51,9 @@ GreCreateFontIndirectW( LOGFONTW *lplf )
DWORD
FASTCALL
GreGetKerningPairs(
HDC hDC,
ULONG NumPairs,
LPKERNINGPAIR krnpair)
_In_ HDC hDC,
_In_ ULONG NumPairs,
_Out_writes_(NumPairs) LPKERNINGPAIR krnpair)
{
PDC dc;
PDC_ATTR pdcattr;
@ -102,7 +107,6 @@ GreGetKerningPairs(
}
/*
It is recommended that an application use the GetFontLanguageInfo function
to determine whether the GCP_DIACRITIC, GCP_DBCS, GCP_USEKERNING, GCP_LIGATE,
GCP_REORDER, GCP_GLYPHSHAPE, and GCP_KASHIDA values are valid for the
@ -112,18 +116,17 @@ GreGetKerningPairs(
MS must use a preset "compiled in" support for each language based releases.
ReactOS uses FreeType, this will need to be supported. ATM this is hard coded
for GCPCLASS_LATIN!
*/
#if 0
DWORD
FASTCALL
GreGetCharacterPlacementW(
HDC hdc,
LPCWSTR pwsz,
INT nCount,
INT nMaxExtent,
LPGCP_RESULTSW pgcpw,
DWORD dwFlags)
_In_ HDC hdc,
_In_reads_(nCount) PCWCH pwsz,
_In_ INT nCount,
_In_ INT nMaxExtent,
_Inout_opt_ LPGCP_RESULTSW pgcpw,
_In_ DWORD dwFlags)
{
GCP_RESULTSW gcpwSave;
UINT i, nSet, cSet;
@ -290,7 +293,10 @@ GreGetCharacterPlacementW(
ULONG
FASTCALL
FontGetObject(PTEXTOBJ plfont, ULONG cjBuffer, PVOID pvBuffer)
FontGetObject(
_Inout_ PTEXTOBJ plfont,
_In_ ULONG cjBuffer,
_Out_ PVOID pvBuffer)
{
ULONG cjMaxSize;
ENUMLOGFONTEXDVW *plf;
@ -326,7 +332,10 @@ FontGetObject(PTEXTOBJ plfont, ULONG cjBuffer, PVOID pvBuffer)
DWORD
FASTCALL
IntGetCharDimensions(HDC hdc, PTEXTMETRICW ptm, PDWORD height)
IntGetCharDimensions(
_In_ HDC hdc,
_Out_opt_ PTEXTMETRICW ptm,
_Out_opt_ PDWORD height)
{
PDC pdc;
PDC_ATTR pdcattr;
@ -354,7 +363,7 @@ IntGetCharDimensions(HDC hdc, PTEXTMETRICW ptm, PDWORD height)
DC_UnlockDc(pdc);
return 0;
}
Good = TextIntGetTextExtentPoint(pdc, TextObj, alphabet, 52, 0, NULL, 0, &sz, 0);
Good = TextIntGetTextExtentPoint(pdc, TextObj, alphabet, 52, 0, NULL, NULL, &sz, 0);
TEXTOBJ_UnlockText(TextObj);
DC_UnlockDc(pdc);
@ -368,7 +377,7 @@ IntGetCharDimensions(HDC hdc, PTEXTMETRICW ptm, PDWORD height)
DWORD
FASTCALL
IntGetFontLanguageInfo(PDC Dc)
IntGetFontLanguageInfo(_In_ PDC Dc)
{
PDC_ATTR pdcattr;
FONTSIGNATURE fontsig;
@ -419,7 +428,7 @@ IntGetFontLanguageInfo(PDC Dc)
PTEXTOBJ
FASTCALL
RealizeFontInit(HFONT hFont)
RealizeFontInit(_In_ HFONT hFont)
{
NTSTATUS Status = STATUS_SUCCESS;
PTEXTOBJ pTextObj;
@ -440,7 +449,7 @@ RealizeFontInit(HFONT hFont)
static BOOL
IntCheckFontPathNames(
_In_reads_(cwc) WCHAR *pwcFiles,
_In_reads_(cwc) PCWCH pwcFiles,
_In_ ULONG cFiles,
_In_ ULONG cwc)
{
@ -463,12 +472,12 @@ IntCheckFontPathNames(
INT
APIENTRY
NtGdiAddFontResourceW(
_In_reads_(cwc) WCHAR *pwcFiles,
_In_reads_(cwc) PCWCH pwcFiles,
_In_ ULONG cwc,
_In_ ULONG cFiles,
_In_ FLONG fl,
_In_ DWORD dwPidTid,
_In_opt_ DESIGNVECTOR *pdv)
_In_opt_ const DESIGNVECTOR *pdv)
{
UNICODE_STRING SafeFileName;
INT Ret;
@ -517,12 +526,12 @@ NtGdiAddFontResourceW(
BOOL
APIENTRY
NtGdiRemoveFontResourceW(
_In_reads_(cwc) WCHAR *pwszFiles,
_In_reads_(cwc) PCWCH pwszFiles,
_In_ ULONG cwc,
_In_ ULONG cFiles,
_In_ ULONG fl,
_In_ DWORD dwPidTid,
_In_opt_ DESIGNVECTOR *pdv)
_In_opt_ const DESIGNVECTOR *pdv)
{
UNICODE_STRING SafeFileName;
BOOL Ret;
@ -571,11 +580,11 @@ NtGdiRemoveFontResourceW(
HANDLE
APIENTRY
NtGdiAddFontMemResourceEx(
IN PVOID pvBuffer,
IN DWORD cjBuffer,
IN DESIGNVECTOR *pdv,
IN ULONG cjDV,
OUT DWORD *pNumFonts)
_In_reads_bytes_(cjBuffer) const VOID *pvBuffer,
_In_ DWORD cjBuffer,
_In_reads_bytes_opt_(cjDV) const DESIGNVECTOR *pdv,
_In_ ULONG cjDV,
_Out_ PDWORD pNumFonts)
{
_SEH2_VOLATILE PVOID Buffer = NULL;
HANDLE Ret;
@ -627,7 +636,7 @@ NtGdiAddFontMemResourceEx(
BOOL
APIENTRY
NtGdiRemoveFontMemResourceEx(
IN HANDLE hMMFont)
_In_ HANDLE hMMFont)
{
return IntGdiRemoveFontMemResource(hMMFont);
}
@ -639,12 +648,12 @@ NtGdiRemoveFontMemResourceEx(
DWORD
APIENTRY
NtGdiGetCharacterPlacementW(
IN HDC hdc,
IN LPWSTR pwsz,
IN INT nCount,
IN INT nMaxExtent,
IN OUT LPGCP_RESULTSW pgcpw,
IN DWORD dwFlags)
_In_ HDC hdc,
_In_reads_(nCount) PCWCH pwsz,
_In_ INT nCount,
_In_ INT nMaxExtent,
_Inout_opt_ LPGCP_RESULTSW pgcpw,
_In_ DWORD dwFlags)
{
UNIMPLEMENTED;
return 0;
@ -661,11 +670,11 @@ NtGdiGetCharacterPlacementW(
DWORD
APIENTRY
NtGdiGetFontData(
HDC hDC,
DWORD Table,
DWORD Offset,
LPVOID Buffer,
DWORD Size)
_In_ HDC hDC,
_In_ DWORD Table,
_In_ DWORD Offset,
_Out_writes_bytes_(Size) PVOID Buffer,
_In_ DWORD Size)
{
PDC Dc;
PDC_ATTR pdcattr;
@ -717,14 +726,12 @@ NtGdiGetFontData(
return Result;
}
/*
* @implemented
*/
/* @implemented */
DWORD
APIENTRY
NtGdiGetFontUnicodeRanges(
IN HDC hdc,
OUT OPTIONAL LPGLYPHSET pgs)
_In_ HDC hdc,
_Out_opt_ LPGLYPHSET pgs)
{
PDC pDc;
PDC_ATTR pdcattr;
@ -794,14 +801,14 @@ Exit:
ULONG
APIENTRY
NtGdiGetGlyphOutline(
IN HDC hdc,
IN WCHAR wch,
IN UINT iFormat,
OUT LPGLYPHMETRICS pgm,
IN ULONG cjBuf,
OUT OPTIONAL PVOID UnsafeBuf,
IN LPMAT2 pmat2,
IN BOOL bIgnoreRotation)
_In_ HDC hdc,
_In_ WCHAR wch,
_In_ UINT iFormat,
_Out_ LPGLYPHMETRICS pgm,
_In_ ULONG cjBuf,
_Out_writes_bytes_opt_(cjBuf) PVOID UnsafeBuf,
_In_opt_ const MAT2 *pmat2,
_In_ BOOL bIgnoreRotation)
{
ULONG Ret = GDI_ERROR;
PDC dc;
@ -878,9 +885,10 @@ Exit:
DWORD
APIENTRY
NtGdiGetKerningPairs(HDC hDC,
ULONG NumPairs,
LPKERNINGPAIR krnpair)
NtGdiGetKerningPairs(
_In_ HDC hDC,
_In_ ULONG NumPairs,
_Out_writes_(NumPairs) LPKERNINGPAIR krnpair)
{
PDC dc;
PDC_ATTR pdcattr;
@ -952,10 +960,11 @@ NtGdiGetKerningPairs(HDC hDC,
*/
ULONG
APIENTRY
NtGdiGetOutlineTextMetricsInternalW (HDC hDC,
ULONG Data,
OUTLINETEXTMETRICW *otm,
TMDIFF *Tmd)
NtGdiGetOutlineTextMetricsInternalW(
_In_ HDC hDC,
_In_ ULONG Data,
_Out_opt_ POUTLINETEXTMETRICW otm,
_In_ PTMDIFF Tmd)
{
PDC dc;
PDC_ATTR pdcattr;
@ -1030,13 +1039,13 @@ W32KAPI
BOOL
APIENTRY
NtGdiGetFontResourceInfoInternalW(
IN LPWSTR pwszFiles,
IN ULONG cwc,
IN ULONG cFiles,
IN UINT cjIn,
IN OUT LPDWORD pdwBytes,
OUT LPVOID pvBuf,
IN DWORD dwType)
_In_reads_(cwc) PCWCH pwszFiles,
_In_ ULONG cwc,
_In_ ULONG cFiles,
_In_ UINT cjIn,
_Inout_ PDWORD pdwBytes,
_Out_writes_bytes_(*pdwBytes) PVOID pvBuf,
_In_ DWORD dwType)
{
NTSTATUS Status = STATUS_SUCCESS;
DWORD dwBytes, dwBytesRequested;
@ -1138,15 +1147,13 @@ NtGdiGetFontResourceInfoInternalW(
return bRet;
}
/*
* @unimplemented
*/
/* @unimplemented */
BOOL
APIENTRY
NtGdiGetRealizationInfo(
IN HDC hdc,
OUT PREALIZATION_INFO pri,
IN HFONT hf)
_In_ HDC hdc,
_Out_ PREALIZATION_INFO pri,
_In_ HFONT hf)
{
PDC pDc;
PTEXTOBJ pTextObj;
@ -1209,15 +1216,14 @@ NtGdiGetRealizationInfo(
return Ret;
}
HFONT
APIENTRY
HfontCreate(
IN PENUMLOGFONTEXDVW pelfw,
IN ULONG cjElfw,
IN LFTYPE lft,
IN FLONG fl,
IN PVOID pvCliData )
const ENUMLOGFONTEXDVW *pelfw,
_In_ ULONG cjElfw,
_In_ LFTYPE lft,
_In_ FLONG fl,
_In_opt_ PVOID pvCliData)
{
HFONT hNewFont;
PLFONT plfont;
@ -1267,11 +1273,11 @@ HfontCreate(
HFONT
APIENTRY
NtGdiHfontCreate(
IN PENUMLOGFONTEXDVW pelfw,
IN ULONG cjElfw,
IN LFTYPE lft,
IN FLONG fl,
IN PVOID pvCliData )
_In_reads_bytes_(cjElfw) const ENUMLOGFONTEXDVW *pelfw,
_In_ ULONG cjElfw,
_In_ LFTYPE lft,
_In_ FLONG fl,
_In_opt_ PVOID pvCliData)
{
ENUMLOGFONTEXDVW SafeLogfont;
NTSTATUS Status = STATUS_SUCCESS;
@ -1303,6 +1309,3 @@ NtGdiHfontCreate(
return HfontCreate(&SafeLogfont, cjElfw, lft, fl, pvCliData);
}
/* EOF */

View file

@ -4630,7 +4630,7 @@ ftGdiGetGlyphOutline(
LPGLYPHMETRICS pgm,
ULONG cjBuf,
PVOID pvBuf,
LPMAT2 pmat2,
const MAT2 *pmat2,
BOOL bIgnoreRotation)
{
PDC_ATTR pdcattr;
@ -5151,15 +5151,16 @@ IntGetRealGlyph(
BOOL
FASTCALL
TextIntGetTextExtentPoint(PDC dc,
PTEXTOBJ TextObj,
LPCWSTR String,
INT Count,
ULONG MaxExtent,
LPINT Fit,
LPINT Dx,
LPSIZE Size,
FLONG fl)
TextIntGetTextExtentPoint(
_In_ PDC dc,
_In_ PTEXTOBJ TextObj,
_In_reads_(Count) PCWCH String,
_In_ INT Count,
_In_ ULONG MaxExtent,
_Out_ PINT Fit,
_Out_writes_to_opt_(Count, *Fit) PINT Dx,
_Out_ PSIZE Size,
_In_ FLONG fl)
{
PFONTGDI FontGDI;
FT_BitmapGlyph realglyph;
@ -6668,10 +6669,11 @@ IntGetFontFamilyInfo(HDC Dc,
}
LONG NTAPI
NtGdiGetFontFamilyInfo(HDC Dc,
const LOGFONTW *UnsafeLogFont,
PFONTFAMILYINFO UnsafeInfo,
LPLONG UnsafeInfoCount)
NtGdiGetFontFamilyInfo(
_In_ HDC Dc,
_In_ const LOGFONTW *UnsafeLogFont,
_Out_ PFONTFAMILYINFO UnsafeInfo,
_Inout_ PLONG UnsafeInfoCount)
{
NTSTATUS Status;
LOGFONTW LogFont;
@ -6786,15 +6788,15 @@ ScaleLong(LONG lValue, PFLOATOBJ pef)
*/
static BOOL
IntGetTextDisposition(
OUT LONGLONG *pX64,
OUT LONGLONG *pY64,
IN LPCWSTR String,
IN INT Count,
IN OPTIONAL LPINT Dx,
IN OUT PFONT_CACHE_ENTRY Cache,
IN UINT fuOptions,
IN BOOL bNoTransform,
IN OUT PFONTLINK_CHAIN pChain)
_Out_ LONGLONG *pX64,
_Out_ LONGLONG *pY64,
_In_reads_(Count) PCWCH String,
_In_ INT Count,
_In_opt_ const INT *Dx,
_Inout_ PFONT_CACHE_ENTRY Cache,
_In_ UINT fuOptions,
_In_ BOOL bNoTransform,
_Inout_ PFONTLINK_CHAIN pChain)
{
LONGLONG X64 = 0, Y64 = 0;
INT i, glyph_index;
@ -6954,15 +6956,15 @@ IntEngFillBox(
BOOL
APIENTRY
IntExtTextOutW(
IN PDC dc,
IN INT XStart,
IN INT YStart,
IN UINT fuOptions,
IN OPTIONAL PRECTL lprc,
IN LPCWSTR String,
IN INT Count,
IN OPTIONAL LPINT Dx,
IN DWORD dwCodePage)
_In_ PDC dc,
_In_ INT XStart,
_In_ INT YStart,
_In_ UINT fuOptions,
_In_opt_ PRECTL lprc,
_In_reads_opt_(Count) PCWCH String,
_In_ INT Count,
_In_opt_ const INT *Dx,
_In_ DWORD dwCodePage)
{
/*
* FIXME:
@ -7273,7 +7275,7 @@ IntExtTextOutW(
{
IntUnLockFreeType();
/* Get the width of the space character */
TextIntGetTextExtentPoint(dc, TextObj, L" ", 1, 0, NULL, 0, &spaceWidth, 0);
TextIntGetTextExtentPoint(dc, TextObj, L" ", 1, 0, NULL, NULL, &spaceWidth, 0);
IntLockFreeType();
glyphSize.cx = spaceWidth.cx;
realglyph->left = 0;
@ -7500,15 +7502,15 @@ Cleanup:
BOOL
APIENTRY
GreExtTextOutW(
IN HDC hDC,
IN INT XStart,
IN INT YStart,
IN UINT fuOptions,
IN OPTIONAL PRECTL lprc,
IN LPCWSTR String,
IN INT Count,
IN OPTIONAL LPINT Dx,
IN DWORD dwCodePage)
_In_ HDC hDC,
_In_ INT XStart,
_In_ INT YStart,
_In_ UINT fuOptions,
_In_opt_ PRECTL lprc,
_In_reads_opt_(Count) PCWCH String,
_In_ INT Count,
_In_opt_ const INT *Dx,
_In_ DWORD dwCodePage)
{
BOOL bResult;
DC *dc;
@ -7542,15 +7544,15 @@ GreExtTextOutW(
BOOL
APIENTRY
NtGdiExtTextOutW(
IN HDC hDC,
IN INT XStart,
IN INT YStart,
IN UINT fuOptions,
IN OPTIONAL LPCRECT UnsafeRect,
IN LPCWSTR UnsafeString,
IN UINT Count,
IN OPTIONAL const INT *UnsafeDx,
IN DWORD dwCodePage)
_In_ HDC hDC,
_In_ INT XStart,
_In_ INT YStart,
_In_ UINT fuOptions,
_In_opt_ LPCRECT UnsafeRect,
_In_reads_opt_(Count) PCWCH UnsafeString,
_In_range_(0, 0xFFFF) UINT Count,
_In_reads_opt_(_Inexpressible_(cwc)) const INT *UnsafeDx,
_In_ DWORD dwCodePage)
{
BOOL Result = FALSE;
NTSTATUS Status = STATUS_SUCCESS;
@ -7558,7 +7560,7 @@ NtGdiExtTextOutW(
BYTE LocalBuffer[STACK_TEXT_BUFFER_SIZE];
PVOID Buffer = LocalBuffer;
LPCWSTR SafeString = NULL;
LPINT SafeDx = NULL;
PINT SafeDx = NULL;
ULONG BufSize, StringSize, DxSize = 0;
/* Check if String is valid */
@ -7667,12 +7669,12 @@ cleanup:
BOOL
APIENTRY
NtGdiGetCharABCWidthsW(
IN HDC hDC,
IN UINT FirstChar,
IN ULONG Count,
IN OPTIONAL PWCHAR UnSafepwch,
IN FLONG fl,
OUT PVOID Buffer)
_In_ HDC hDC,
_In_ UINT FirstChar,
_In_ ULONG Count,
_In_reads_opt_(Count) PCWCH UnSafepwch,
_In_ FLONG fl,
_Out_writes_bytes_(Count * sizeof(ABC)) PVOID Buffer)
{
LPABC SafeBuff;
LPABCFLOAT SafeBuffF = NULL;
@ -7870,12 +7872,12 @@ NtGdiGetCharABCWidthsW(
BOOL
APIENTRY
NtGdiGetCharWidthW(
IN HDC hDC,
IN UINT FirstChar,
IN UINT Count,
IN OPTIONAL PWCHAR UnSafepwc,
IN FLONG fl,
OUT PVOID Buffer)
_In_ HDC hDC,
_In_ UINT FirstChar,
_In_ UINT Count,
_In_reads_opt_(Count) PCWCH UnSafepwc,
_In_ FLONG fl,
_Out_writes_bytes_(Count * sizeof(ULONG)) PVOID Buffer)
{
NTSTATUS Status = STATUS_SUCCESS;
LPINT SafeBuff;
@ -8035,9 +8037,9 @@ DWORD
APIENTRY
NtGdiGetGlyphIndicesW(
_In_ HDC hdc,
_In_reads_opt_(cwc) LPCWSTR pwc,
_In_reads_opt_(cwc) PCWCH pwc,
_In_ INT cwc,
_Out_writes_opt_(cwc) LPWORD pgi,
_Out_writes_opt_(cwc) PWORD pgi,
_In_ DWORD iMode)
{
PDC dc;

View file

@ -5,7 +5,7 @@
#include <debug.h>
BOOL FASTCALL IntPatBlt( PDC,INT,INT,INT,INT,DWORD,PEBRUSHOBJ);
BOOL APIENTRY IntExtTextOutW(IN PDC,IN INT,IN INT,IN UINT,IN OPTIONAL PRECTL,IN LPCWSTR,IN INT,IN OPTIONAL LPINT,IN DWORD);
BOOL APIENTRY IntExtTextOutW(IN PDC,IN INT,IN INT,IN UINT,IN OPTIONAL PRECTL,IN LPCWSTR,IN INT,IN OPTIONAL const INT *,IN DWORD);
//
@ -316,7 +316,7 @@ GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr)
lprc,
(LPCWSTR)&pgO->String[pgO->Size/sizeof(WCHAR)],
pgO->cbCount,
pgO->Size ? (LPINT)&pgO->Buffer : NULL,
pgO->Size ? (const INT *)&pgO->Buffer : NULL,
pgO->iCS_CP );
// Restore attributes and flags

View file

@ -13,7 +13,6 @@
#define NDEBUG
#include <debug.h>
/*
This is a hack. See CORE-1091.
@ -28,8 +27,8 @@
VOID FASTCALL
IntTMWFixUp(
HDC hDC,
TMW_INTERNAL *ptm)
_In_ HDC hDC,
_Inout_ PTMW_INTERNAL ptm)
{
LOGFONTW lf;
HFONT hCurrentFont;
@ -59,11 +58,11 @@ IntTMWFixUp(
BOOL FASTCALL
GreTextOutW(
HDC hdc,
int nXStart,
int nYStart,
LPCWSTR lpString,
int cchString)
_In_ HDC hdc,
_In_ INT nXStart,
_In_ INT nYStart,
_In_reads_(cchString) PCWCH lpString,
_In_ INT cchString)
{
return GreExtTextOutW(hdc, nXStart, nYStart, 0, NULL, lpString, cchString, NULL, 0);
}
@ -76,11 +75,11 @@ GreTextOutW(
BOOL
FASTCALL
GreGetTextExtentW(
HDC hDC,
LPCWSTR lpwsz,
INT cwc,
LPSIZE psize,
UINT flOpts)
_In_ HDC hDC,
_In_reads_(cwc) PCWCH lpwsz,
_In_ INT cwc,
_Out_ PSIZE psize,
_In_ UINT flOpts)
{
PDC pdc;
PDC_ATTR pdcattr;
@ -124,7 +123,6 @@ GreGetTextExtentW(
return Result;
}
/*
fl :
GetTextExtentExPointW = 0 and everything else that uses this.
@ -133,14 +131,14 @@ GreGetTextExtentW(
BOOL
FASTCALL
GreGetTextExtentExW(
HDC hDC,
LPCWSTR String,
ULONG Count,
ULONG MaxExtent,
PULONG Fit,
PULONG Dx,
LPSIZE pSize,
FLONG fl)
_In_ HDC hDC,
_In_ PCWCH String,
_In_ ULONG Count,
_In_ ULONG MaxExtent,
_Out_opt_ PULONG Fit,
_Out_writes_to_opt_(Count, *Fit) PULONG Dx,
_Out_ PSIZE pSize,
_In_ FLONG fl)
{
PDC pdc;
PDC_ATTR pdcattr;
@ -175,8 +173,8 @@ GreGetTextExtentExW(
String,
Count,
MaxExtent,
(LPINT)Fit,
(LPINT)Dx,
(PINT)Fit,
(PINT)Dx,
pSize,
fl);
TEXTOBJ_UnlockText(TextObj);
@ -203,7 +201,7 @@ GreGetTextMetricsW(
DWORD
APIENTRY
NtGdiGetCharSet(HDC hDC)
NtGdiGetCharSet(_In_ HDC hDC)
{
PDC Dc;
PDC_ATTR pdcattr;
@ -226,8 +224,8 @@ NtGdiGetCharSet(HDC hDC)
BOOL
APIENTRY
NtGdiGetRasterizerCaps(
OUT LPRASTERIZER_STATUS praststat,
IN ULONG cjBytes)
_Out_ LPRASTERIZER_STATUS praststat,
_In_ ULONG cjBytes)
{
NTSTATUS Status = STATUS_SUCCESS;
RASTERIZER_STATUS rsSafe;
@ -265,9 +263,9 @@ NtGdiGetRasterizerCaps(
INT
APIENTRY
NtGdiGetTextCharsetInfo(
IN HDC hdc,
OUT OPTIONAL LPFONTSIGNATURE lpSig,
IN DWORD dwFlags)
_In_ HDC hdc,
_Out_opt_ LPFONTSIGNATURE lpSig,
_In_ DWORD dwFlags)
{
PDC Dc;
INT Ret;
@ -324,15 +322,14 @@ W32KAPI
BOOL
APIENTRY
NtGdiGetTextExtentExW(
IN HDC hDC,
IN OPTIONAL LPWSTR UnsafeString,
IN ULONG Count,
IN ULONG MaxExtent,
OUT OPTIONAL PULONG UnsafeFit,
OUT OPTIONAL PULONG UnsafeDx,
OUT LPSIZE UnsafeSize,
IN FLONG fl
)
_In_ HDC hDC,
_In_reads_opt_(Count) PCWCH UnsafeString,
_In_ ULONG Count,
_In_ ULONG MaxExtent,
_Out_opt_ PULONG UnsafeFit,
_Out_writes_to_opt_(Count, *UnsafeFit) PULONG UnsafeDx,
_Out_ PSIZE UnsafeSize,
_In_ FLONG fl)
{
PDC dc;
PDC_ATTR pdcattr;
@ -341,7 +338,7 @@ NtGdiGetTextExtentExW(
NTSTATUS Status;
BOOLEAN Result;
INT Fit;
LPINT Dx;
PINT Dx;
PTEXTOBJ TextObj;
if ((LONG)Count < 0)
@ -489,20 +486,22 @@ NtGdiGetTextExtentExW(
*/
BOOL
APIENTRY
NtGdiGetTextExtent(HDC hdc,
LPWSTR lpwsz,
INT cwc,
LPSIZE psize,
UINT flOpts)
NtGdiGetTextExtent(
_In_ HDC hdc,
_In_reads_(cwc) PCWCH lpwsz,
_In_ INT cwc,
_Out_ PSIZE psize,
_In_ UINT flOpts)
{
return NtGdiGetTextExtentExW(hdc, lpwsz, cwc, 0, NULL, NULL, psize, flOpts);
}
BOOL
APIENTRY
NtGdiSetTextJustification(HDC hDC,
int BreakExtra,
int BreakCount)
NtGdiSetTextJustification(
_In_ HDC hDC,
_In_ INT BreakExtra,
_In_ INT BreakCount)
{
PDC pDc;
PDC_ATTR pdcattr;
@ -528,11 +527,10 @@ W32KAPI
INT
APIENTRY
NtGdiGetTextFaceW(
IN HDC hDC,
IN INT Count,
OUT OPTIONAL LPWSTR FaceName,
IN BOOL bAliasName
)
_In_ HDC hDC,
_In_ INT Count,
_Out_writes_to_opt_(Count, return) PWSTR FaceName,
_In_ BOOL bAliasName)
{
PDC Dc;
PDC_ATTR pdcattr;
@ -588,9 +586,9 @@ W32KAPI
BOOL
APIENTRY
NtGdiGetTextMetricsW(
IN HDC hDC,
OUT TMW_INTERNAL * pUnsafeTmwi,
IN ULONG cj)
_In_ HDC hDC,
_Out_ PTMW_INTERNAL pUnsafeTmwi,
_In_ ULONG cj)
{
TMW_INTERNAL Tmwi;

View file

@ -129,11 +129,11 @@ BOOL FASTCALL IntGdiRemoveFontResource(
_In_ DWORD dwFlags);
HANDLE FASTCALL IntGdiAddFontMemResource(PVOID Buffer, DWORD dwSize, PDWORD pNumAdded);
BOOL FASTCALL IntGdiRemoveFontMemResource(HANDLE hMMFont);
ULONG FASTCALL ftGdiGetGlyphOutline(PDC,WCHAR,UINT,LPGLYPHMETRICS,ULONG,PVOID,LPMAT2,BOOL);
ULONG FASTCALL ftGdiGetGlyphOutline(PDC, WCHAR, UINT, LPGLYPHMETRICS, ULONG, PVOID, const MAT2*, BOOL);
INT FASTCALL IntGetOutlineTextMetrics(PFONTGDI, UINT, OUTLINETEXTMETRICW*, BOOL);
BOOL FASTCALL TextIntUpdateSize(PDC,PTEXTOBJ,PFONTGDI,BOOL);
BOOL FASTCALL ftGdiGetRasterizerCaps(LPRASTERIZER_STATUS);
BOOL FASTCALL TextIntGetTextExtentPoint(PDC,PTEXTOBJ,LPCWSTR,INT,ULONG,LPINT,LPINT,LPSIZE,FLONG);
BOOL FASTCALL TextIntGetTextExtentPoint(PDC, PTEXTOBJ, PCWCH, INT, ULONG, PINT, PINT, PSIZE, FLONG);
BOOL FASTCALL ftGdiGetTextMetricsW(HDC,PTMW_INTERNAL);
DWORD FASTCALL IntGetFontLanguageInfo(PDC);
INT FASTCALL ftGdiGetTextCharsetInfo(PDC,PFONTSIGNATURE,DWORD);
@ -142,13 +142,23 @@ DWORD FASTCALL ftGdiGetFontData(PFONTGDI,DWORD,DWORD,PVOID,DWORD);
BOOL FASTCALL IntGdiGetFontResourceInfo(PUNICODE_STRING,PVOID,DWORD*,DWORD);
BOOL FASTCALL ftGdiRealizationInfo(PFONTGDI,PREALIZATION_INFO);
DWORD FASTCALL ftGdiGetKerningPairs(PFONTGDI,DWORD,LPKERNINGPAIR);
BOOL NTAPI GreExtTextOutW(IN HDC,IN INT,IN INT,IN UINT,IN OPTIONAL RECTL*,
IN LPCWSTR, IN INT, IN OPTIONAL LPINT, IN DWORD);
BOOL
APIENTRY
GreExtTextOutW(
_In_ HDC hDC,
_In_ INT XStart,
_In_ INT YStart,
_In_ UINT fuOptions,
_In_opt_ PRECTL lprc,
_In_reads_opt_(Count) PCWCH String,
_In_ INT Count,
_In_opt_ const INT *Dx,
_In_ DWORD dwCodePage);
DWORD FASTCALL IntGetCharDimensions(HDC, PTEXTMETRICW, PDWORD);
BOOL FASTCALL GreGetTextExtentW(HDC,LPCWSTR,INT,LPSIZE,UINT);
BOOL FASTCALL GreGetTextExtentExW(HDC,LPCWSTR,ULONG,ULONG,PULONG,PULONG,LPSIZE,FLONG);
BOOL FASTCALL GreTextOutW(HDC,int,int,LPCWSTR,int);
HFONT FASTCALL GreCreateFontIndirectW( LOGFONTW * );
BOOL FASTCALL GreGetTextExtentW(HDC, PCWCH, INT, PSIZE, UINT);
BOOL FASTCALL GreGetTextExtentExW(HDC, PCWCH, ULONG, ULONG, PULONG, PULONG, PSIZE, FLONG);
BOOL FASTCALL GreTextOutW(HDC, INT, INT, PCWCH, INT);
HFONT FASTCALL GreCreateFontIndirectW(_In_ const LOGFONTW *lplf);
BOOL WINAPI GreGetTextMetricsW( _In_ HDC hdc, _Out_ LPTEXTMETRICW lptm);
#define IntLockProcessPrivateFonts(W32Process) \