Some people were thinking they could use NtGdiExtTextOut from within Win32k and get...
[reactos.git] / reactos / subsystems / win32 / win32k / include / text.h
1 #ifndef _WIN32K_TEXT_H
2 #define _WIN32K_TEXT_H
3
4 #define TAG_FINF TAG('F', 'I', 'N', 'F')
5 //
6 // EXSTROBJ flags.
7 //
8 #define TO_MEM_ALLOCATED 0x0001
9 #define TO_ALL_PTRS_VALID 0x0002
10 #define TO_VALID 0x0004
11 #define TO_ESC_NOT_ORIENT 0x0008
12 #define TO_PWSZ_ALLOCATED 0x0010
13 #define TSIM_UNDERLINE1 0x0020
14 #define TSIM_UNDERLINE2 0x0040
15 #define TSIM_STRIKEOUT 0x0080
16 #define TO_HIGHRESTEXT 0x0100
17 #define TO_BITMAPS 0x0200
18 #define TO_PARTITION_INIT 0x0400
19 #define TO_ALLOC_FACENAME 0x0800
20 #define TO_SYS_PARTITION 0x1000
21 //
22 // Extended STROBJ
23 //
24 typedef struct _STRGDI
25 {
26 STROBJ StrObj; // Text string object header.
27 FLONG flTO;
28 INT cgposCopied;
29 INT cgposPositionsEnumerated;
30 PVOID prfo; // PRFONT -> PFONTGDI
31 PGLYPHPOS pgpos;
32 POINTFIX ptfxRef;
33 POINTFIX ptfxUpdate;
34 POINTFIX ptfxEscapement;
35 RECTFX rcfx;
36 FIX fxExtent;
37 FIX fxExtra;
38 FIX fxBreakExtra;
39 DWORD dwCodePage;
40 INT cExtraRects;
41 RECTL arclExtra[3];
42 RECTL rclBackGroundSave;
43 PWCHAR pwcPartition;
44 PLONG plPartition;
45 PLONG plNext;
46 PGLYPHPOS pgpNext;
47 PLONG plCurrentFont;
48 POINTL ptlBaseLineAdjust;
49 INT cTTSysGlyphs;
50 INT cSysGlyphs;
51 INT cDefGlyphs;
52 INT cNumFaceNameGlyphs;
53 PVOID pacFaceNameGlyphs;
54 ULONG acFaceNameGlyphs[8];
55 } STRGDI, *PSTRGDI;
56
57 #define TEXTOBJECT_INIT 0x00010000
58
59 /* GDI logical font object */
60 typedef struct
61 {
62 /* Header for all gdi objects in the handle table.
63 Do not (re)move this. */
64 BASEOBJECT BaseObject;
65 LFTYPE lft;
66 FLONG fl;
67 FONTOBJ *Font;
68 WCHAR FullName[LF_FULLFACESIZE];
69 WCHAR Style[LF_FACESIZE];
70 WCHAR FaceName[LF_FACESIZE];
71 DWORD dwOffsetEndArray;
72 // Fixed:
73 ENUMLOGFONTEXDVW logfont;
74 } TEXTOBJ, *PTEXTOBJ;
75
76 /* Internal interface */
77
78 #define TEXTOBJ_AllocText() ((PTEXTOBJ) GDIOBJ_AllocObj(GDIObjType_LFONT_TYPE))
79 #define TEXTOBJ_AllocTextWithHandle() ((PTEXTOBJ) GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_FONT))
80 #define TEXTOBJ_FreeText(pBMObj) GDIOBJ_FreeObj((POBJ) pBMObj, GDILoObjType_LO_FONT_TYPE)
81 #define TEXTOBJ_FreeTextByHandle(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
82 #define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
83 #define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr ((POBJ)pBMObj)
84
85 PTEXTOBJ FASTCALL RealizeFontInit(HFONT);
86 NTSTATUS FASTCALL TextIntRealizeFont(HFONT,PTEXTOBJ);
87 NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont);
88 BOOL FASTCALL InitFontSupport(VOID);
89 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
90 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
91 VOID FASTCALL IntEnableFontRendering(BOOL Enable);
92 INT FASTCALL FontGetObject(PTEXTOBJ TextObj, INT Count, PVOID Buffer);
93 VOID FASTCALL IntLoadSystemFonts(VOID);
94 INT FASTCALL IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics);
95 ULONG FASTCALL ftGdiGetGlyphOutline(PDC,WCHAR,UINT,LPGLYPHMETRICS,ULONG,PVOID,LPMAT2,BOOL);
96 INT FASTCALL IntGetOutlineTextMetrics(PFONTGDI,UINT,OUTLINETEXTMETRICW *);
97 BOOL FASTCALL ftGdiGetRasterizerCaps(LPRASTERIZER_STATUS);
98 BOOL FASTCALL TextIntGetTextExtentPoint(PDC,PTEXTOBJ,LPCWSTR,int,int,LPINT,LPINT,LPSIZE);
99 BOOL FASTCALL ftGdiGetTextMetricsW(HDC,PTMW_INTERNAL);
100 DWORD FASTCALL IntGetFontLanguageInfo(PDC);
101 INT FASTCALL ftGdiGetTextCharsetInfo(PDC,PFONTSIGNATURE,DWORD);
102 DWORD FASTCALL ftGetFontUnicodeRanges(PFONTGDI, PGLYPHSET);
103 DWORD FASTCALL ftGdiGetFontData(PFONTGDI,DWORD,DWORD,PVOID,DWORD);
104 BOOL FASTCALL IntGdiGetFontResourceInfo(PUNICODE_STRING,PVOID,DWORD*,DWORD);
105 BOOL FASTCALL ftGdiRealizationInfo(PFONTGDI,PREALIZATION_INFO);
106 DWORD FASTCALL ftGdiGetKerningPairs(PFONTGDI,DWORD,LPKERNINGPAIR);
107 BOOL NTAPI GreExtTextOutW(IN HDC,IN INT,IN INT,IN UINT,IN OPTIONAL LPRECT,
108 IN LPWSTR, IN INT, IN OPTIONAL LPINT, IN DWORD);
109
110 #define IntLockProcessPrivateFonts(W32Process) \
111 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
112
113 #define IntUnLockProcessPrivateFonts(W32Process) \
114 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&W32Process->PrivateFontListLock)
115
116 #define IntLockGlobalFonts \
117 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FontListLock)
118
119 #define IntUnLockGlobalFonts \
120 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FontListLock)
121
122 #define IntLockFreeType \
123 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FreeTypeLock)
124
125 #define IntUnLockFreeType \
126 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FreeTypeLock)
127
128 #endif /* _WIN32K_TEXT_H */