From 59371a062e9ac325eaaa4440f320c95fc6044d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Tue, 25 Mar 2003 22:35:19 +0000 Subject: [PATCH] Introduce TEXTMETRICSA and TEXTMETRICSW svn path=/trunk/; revision=4431 --- reactos/include/ascii.h | 4 +- reactos/include/defines.h | 1 + reactos/include/structs.h | 167 ++++++++++++++++++++++++--- reactos/include/unicode.h | 4 +- reactos/include/win32k/text.h | 4 +- reactos/lib/gdi32/misc/stubsa.c | 4 +- reactos/lib/gdi32/misc/stubsw.c | 4 +- reactos/lib/gdi32/objects/text.c | 6 +- reactos/subsys/win32k/eng/objects.h | 2 +- reactos/subsys/win32k/objects/text.c | 6 +- 10 files changed, 170 insertions(+), 32 deletions(-) diff --git a/reactos/include/ascii.h b/reactos/include/ascii.h index be57851bc91..e2e7cf4260f 100644 --- a/reactos/include/ascii.h +++ b/reactos/include/ascii.h @@ -1917,7 +1917,7 @@ GetMetaFileA(LPCSTR); UINT STDCALL -GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRIC); +GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); WINBOOL STDCALL @@ -1979,7 +1979,7 @@ GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR ); WINBOOL STDCALL -GetTextMetricsA(HDC, LPTEXTMETRIC); +GetTextMetricsA(HDC, LPTEXTMETRICA); int STDCALL diff --git a/reactos/include/defines.h b/reactos/include/defines.h index dd07cf32f2b..4c8ab4fe417 100644 --- a/reactos/include/defines.h +++ b/reactos/include/defines.h @@ -957,6 +957,7 @@ extern "C" { #define DT_TOP (0) #define DT_VCENTER (4) #define DT_WORDBREAK (16) +#define DT_WORD_ELLIPSIS (262144) #define DT_INTERNAL (4096) diff --git a/reactos/include/structs.h b/reactos/include/structs.h index 5cae0a4a86f..23d9e5c35f3 100644 --- a/reactos/include/structs.h +++ b/reactos/include/structs.h @@ -2715,7 +2715,7 @@ typedef struct tagNEWCPLINFO { TCHAR szHelpFile[128]; } NEWCPLINFO; -typedef struct tagNEWTEXTMETRIC { +typedef struct tagNEWTEXTMETRICA { LONG tmHeight; LONG tmAscent; LONG tmDescent; @@ -2740,13 +2740,56 @@ typedef struct tagNEWTEXTMETRIC { UINT ntmSizeEM; UINT ntmCellHeight; UINT ntmAvgWidth; -} NEWTEXTMETRIC; +} NEWTEXTMETRICA; +typedef struct tagNEWTEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} NEWTEXTMETRICW; -typedef struct tagNEWTEXTMETRICEX { - NEWTEXTMETRIC ntmentm; +#ifdef UNICODE +typedef NEWTEXTMETRICA NEWTEXTMETRIC; +#else +typedef NEWTEXTMETRICW NEWTEXTMETRIC; +#endif + +typedef struct tagNEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmentm; FONTSIGNATURE ntmeFontSignature; -} NEWTEXTMETRICEX; +} NEWTEXTMETRICEXA; + +typedef struct tagNEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmentm; + FONTSIGNATURE ntmeFontSignature; +} NEWTEXTMETRICEXW; + +#ifdef UNICODE +typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX; +#else +typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX; +#endif typedef struct tagNM_LISTVIEW { NMHDR hdr; @@ -2974,7 +3017,7 @@ typedef OSVERSIONINFOEXA OSVERSIONINFOEX; typedef OSVERSIONINFOEXW OSVERSIONINFOEX; #endif -typedef struct tagTEXTMETRIC { +typedef struct tagTEXTMETRICA { LONG tmHeight; LONG tmAscent; LONG tmDescent; @@ -2995,11 +3038,42 @@ typedef struct tagTEXTMETRIC { BYTE tmStruckOut; BYTE tmPitchAndFamily; BYTE tmCharSet; -} TEXTMETRIC, *LPTEXTMETRIC; +} TEXTMETRICA, *LPTEXTMETRICA; -typedef struct _OUTLINETEXTMETRIC { +typedef struct tagTEXTMETRICW { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + BCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRICW, *LPTEXTMETRICW; + +#ifdef UNICODE +typedef TEXTMETRICA TEXTMETRIC; +typedef LPTEXTMETRICA LPTEXTMETRIC; +#else +typedef TEXTMETRICW TEXTMETRIC; +typedef LPTEXTMETRICA LPTEXTMETRIC; +#endif + +typedef struct _OUTLINETEXTMETRICA { UINT otmSize; - TEXTMETRIC otmTextMetrics; + TEXTMETRICA otmTextMetrics; BYTE otmFiller; PANOSE otmPanoseNumber; UINT otmfsSelection; @@ -3030,7 +3104,50 @@ typedef struct _OUTLINETEXTMETRIC { PSTR otmpFaceName; PSTR otmpStyleName; PSTR otmpFullName; -} OUTLINETEXTMETRIC, *LPOUTLINETEXTMETRIC; +} OUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA; + +typedef struct _OUTLINETEXTMETRICW { + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} OUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW; + +#ifdef UNICODE +typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC; +typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC; +#else +typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC; +typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC; +#endif typedef struct _OVERLAPPED { DWORD Internal; @@ -4181,11 +4298,31 @@ typedef int CALLBACK (*ENUMMETAFILEPROC) (HDC, HANDLETABLE, typedef int CALLBACK (*ENHMETAFILEPROC) (HDC, HANDLETABLE, ENHMETARECORD, int, LPARAM); -typedef int CALLBACK (*ENUMFONTSPROC) (LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM); -typedef int CALLBACK (*FONTENUMPROC) (ENUMLOGFONT *, NEWTEXTMETRIC *, - int, LPARAM); -typedef int CALLBACK (*FONTENUMEXPROC) (ENUMLOGFONTEX *, NEWTEXTMETRICEX *, - int, LPARAM); +typedef int CALLBACK (*ENUMFONTSPROCA) (LPLOGFONT, LPTEXTMETRICA, DWORD, LPARAM); +typedef int CALLBACK (*ENUMFONTSPROCW) (LPLOGFONT, LPTEXTMETRICW, DWORD, LPARAM); +#ifdef UNICODE +typedef ENUMFONTSPROCW ENUMFONTSPROC; +#else +typedef ENUMFONTSPROCA ENUMFONTSPROC; +#endif +typedef int CALLBACK (*FONTENUMPROCA) (ENUMLOGFONT *, NEWTEXTMETRICA *, + int, LPARAM); +typedef int CALLBACK (*FONTENUMPROCW) (ENUMLOGFONT *, NEWTEXTMETRICW *, + int, LPARAM); +#ifdef UNICODE +typedef FONTENUMPROCW FONTENUMPROC; +#else +typedef FONTENUMPROCA FONTENUMPROC; +#endif +typedef int CALLBACK (*FONTENUMEXPROCA) (ENUMLOGFONTEX *, NEWTEXTMETRICEXA *, + int, LPARAM); +typedef int CALLBACK (*FONTENUMEXPROCW) (ENUMLOGFONTEX *, NEWTEXTMETRICEXW *, + int, LPARAM); +#ifdef UNICODE +typedef FONTENUMEXPROCW FONTENUMEXPROC; +#else +typedef FONTENUMEXPROCA FONTENUMEXPROC; +#endif typedef VOID CALLBACK (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, LPOVERLAPPED); diff --git a/reactos/include/unicode.h b/reactos/include/unicode.h index dcf22bb23d5..d5e3bb37811 100644 --- a/reactos/include/unicode.h +++ b/reactos/include/unicode.h @@ -1925,7 +1925,7 @@ GetMetaFileW(LPCWSTR); UINT STDCALL -GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRIC); +GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); WINBOOL STDCALL GetTextExtentPointW( @@ -1986,7 +1986,7 @@ GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR ); WINBOOL STDCALL -GetTextMetricsW(HDC, LPTEXTMETRIC); +GetTextMetricsW(HDC, LPTEXTMETRICW); int STDCALL diff --git a/reactos/include/win32k/text.h b/reactos/include/win32k/text.h index fc1be707317..3ac8c4e213a 100644 --- a/reactos/include/win32k/text.h +++ b/reactos/include/win32k/text.h @@ -160,7 +160,7 @@ UINT STDCALL W32kGetOutlineTextMetrics(HDC hDC, UINT Data, - LPOUTLINETEXTMETRIC otm); + LPOUTLINETEXTMETRICW otm); BOOL STDCALL @@ -210,7 +210,7 @@ W32kGetTextFace(HDC hDC, BOOL STDCALL W32kGetTextMetrics(HDC hDC, - LPTEXTMETRIC tm); + LPTEXTMETRICW tm); BOOL STDCALL diff --git a/reactos/lib/gdi32/misc/stubsa.c b/reactos/lib/gdi32/misc/stubsa.c index 22b3cdaa990..8d8ce514801 100644 --- a/reactos/lib/gdi32/misc/stubsa.c +++ b/reactos/lib/gdi32/misc/stubsa.c @@ -1,4 +1,4 @@ -/* $Id: stubsa.c,v 1.8 2002/09/08 10:22:40 chorns Exp $ +/* $Id: stubsa.c,v 1.9 2003/03/25 22:35:19 gvg Exp $ * * reactos/lib/gdi32/misc/stubs.c * @@ -238,7 +238,7 @@ APIENTRY GetOutlineTextMetricsA( HDC a0, UINT a1, - LPOUTLINETEXTMETRIC a2 + LPOUTLINETEXTMETRICA a2 ) { SetLastError(ERROR_CALL_NOT_IMPLEMENTED); diff --git a/reactos/lib/gdi32/misc/stubsw.c b/reactos/lib/gdi32/misc/stubsw.c index da2440edbee..0abc4fb9e4e 100644 --- a/reactos/lib/gdi32/misc/stubsw.c +++ b/reactos/lib/gdi32/misc/stubsw.c @@ -1,4 +1,4 @@ -/* $Id: stubsw.c,v 1.7 2002/09/08 10:22:40 chorns Exp $ +/* $Id: stubsw.c,v 1.8 2003/03/25 22:35:19 gvg Exp $ * * reactos/lib/gdi32/misc/stubs.c * @@ -236,7 +236,7 @@ APIENTRY GetOutlineTextMetricsW( HDC a0, UINT a1, - LPOUTLINETEXTMETRIC a2 + LPOUTLINETEXTMETRICW a2 ) { SetLastError(ERROR_CALL_NOT_IMPLEMENTED); diff --git a/reactos/lib/gdi32/objects/text.c b/reactos/lib/gdi32/objects/text.c index b0e9390ed0f..b176c4c1d01 100644 --- a/reactos/lib/gdi32/objects/text.c +++ b/reactos/lib/gdi32/objects/text.c @@ -55,17 +55,17 @@ BOOL STDCALL GetTextMetricsA( HDC hdc, - LPTEXTMETRIC tm + LPTEXTMETRICA tm ) { - return W32kGetTextMetrics(hdc, tm); + return W32kGetTextMetrics(hdc, (LPTEXTMETRICW) tm); } BOOL STDCALL GetTextMetricsW( HDC hdc, - LPTEXTMETRIC tm + LPTEXTMETRICW tm ) { return W32kGetTextMetrics(hdc, tm); diff --git a/reactos/subsys/win32k/eng/objects.h b/reactos/subsys/win32k/eng/objects.h index 99622120380..bf4149ef5f8 100644 --- a/reactos/subsys/win32k/eng/objects.h +++ b/reactos/subsys/win32k/eng/objects.h @@ -69,7 +69,7 @@ typedef struct _FONTGDI { LPCWSTR Filename; FT_Face face; - TEXTMETRIC TextMetric; + TEXTMETRICW TextMetric; } FONTGDI, *PFONTGDI; typedef struct _PALGDI { diff --git a/reactos/subsys/win32k/objects/text.c b/reactos/subsys/win32k/objects/text.c index 1fe89e72b91..3ee468b507e 100644 --- a/reactos/subsys/win32k/objects/text.c +++ b/reactos/subsys/win32k/objects/text.c @@ -376,7 +376,7 @@ UINT STDCALL W32kGetOutlineTextMetrics(HDC hDC, UINT Data, - LPOUTLINETEXTMETRIC otm) + LPOUTLINETEXTMETRICW otm) { UNIMPLEMENTED; } @@ -485,13 +485,13 @@ W32kGetTextFace(HDC hDC, BOOL STDCALL W32kGetTextMetrics(HDC hDC, - LPTEXTMETRIC tm) + LPTEXTMETRICW tm) { PDC dc = (PDC)AccessUserObject(hDC); PFONTGDI FontGDI; FontGDI = (PFONTGDI)AccessInternalObject(dc->w.hFont); - memcpy(tm, &FontGDI->TextMetric, sizeof(TEXTMETRIC)); + memcpy(tm, &FontGDI->TextMetric, sizeof(TEXTMETRICW)); return TRUE; }