- Rename GDIOBJ_AllocObj to GDIOBJ_allocObjWithHandle and make it return a pointer...
[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 /* Header for all gdi objects in the handle table.
61 Do not (re)move this. */
62 BASEOBJECT BaseObject;
63
64 ENUMLOGFONTEXDVW logfont; //LOGFONTW logfont;
65 FONTOBJ *Font;
66 BOOLEAN Initialized; /* Don't reinitialize for each DC */
67 } TEXTOBJ, *PTEXTOBJ;
68
69 /* Internal interface */
70
71 #define TEXTOBJ_AllocText() ((PTEXTOBJ) GDIOBJ_AllocObj(GDIObjType_LFONT_TYPE))
72 #define TEXTOBJ_AllocTextWithHandle() ((PTEXTOBJ) GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_FONT))
73 #define TEXTOBJ_AllocTextDepricated() ((HFONT) GDIOBJ_AllocObj(GDI_OBJECT_TYPE_FONT))
74 #define TEXTOBJ_FreeText(pBMObj) GDIOBJ_FreeObj((POBJ) pBMObj, GDILoObjType_LO_FONT_TYPE)
75 #define TEXTOBJ_FreeTextByHandle(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
76 #define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
77 #define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr ((POBJ)pBMObj)
78
79 NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle);
80 NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont);
81 BOOL FASTCALL InitFontSupport(VOID);
82 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
83 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
84 VOID FASTCALL IntEnableFontRendering(BOOL Enable);
85 INT FASTCALL FontGetObject(PTEXTOBJ TextObj, INT Count, PVOID Buffer);
86 VOID FASTCALL IntLoadSystemFonts(VOID);
87 INT FASTCALL IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics);
88
89 #define IntLockProcessPrivateFonts(W32Process) \
90 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
91
92 #define IntUnLockProcessPrivateFonts(W32Process) \
93 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&W32Process->PrivateFontListLock)
94
95 #define IntLockGlobalFonts \
96 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FontListLock)
97
98 #define IntUnLockGlobalFonts \
99 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FontListLock)
100
101 #define IntLockFreeType \
102 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FreeTypeLock)
103
104 #define IntUnLockFreeType \
105 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FreeTypeLock)
106
107 #endif /* _WIN32K_TEXT_H */