Fix a typo in text.h. Implemente NtGdiGetDhpdev.
[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 /* GDI logical font object */
58 typedef struct
59 {
60 ENUMLOGFONTEXDVW logfont; //LOGFONTW logfont;
61 FONTOBJ *Font;
62 BOOLEAN Initialized; /* Don't reinitialize for each DC */
63 } TEXTOBJ, *PTEXTOBJ;
64
65 /* Internal interface */
66
67 #define TEXTOBJ_AllocText() \
68 ((HFONT) GDIOBJ_AllocObj (GdiHandleTable, GDI_OBJECT_TYPE_FONT))
69 #define TEXTOBJ_FreeText(hBMObj) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
70 #define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj (GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
71 #define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr (GdiHandleTable, pBMObj)
72
73 NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle);
74 NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont);
75 BOOL FASTCALL InitFontSupport(VOID);
76 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
77 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
78 VOID FASTCALL IntEnableFontRendering(BOOL Enable);
79 INT FASTCALL FontGetObject(PTEXTOBJ TextObj, INT Count, PVOID Buffer);
80 VOID FASTCALL IntLoadSystemFonts(VOID);
81 INT FASTCALL IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics);
82
83 #define IntLockProcessPrivateFonts(W32Process) \
84 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
85
86 #define IntUnLockProcessPrivateFonts(W32Process) \
87 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&W32Process->PrivateFontListLock)
88
89 #define IntLockGlobalFonts \
90 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FontListLock)
91
92 #define IntUnLockGlobalFonts \
93 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FontListLock)
94
95 #define IntLockFreeType \
96 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FreeTypeLock)
97
98 #define IntUnLockFreeType \
99 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FreeTypeLock)
100
101 #endif /* _WIN32K_TEXT_H */