Commit r20366:20368 again.
[reactos.git] / reactos / subsys / win32k / include / text.h
1 #ifndef _WIN32K_TEXT_H
2 #define _WIN32K_TEXT_H
3
4 /* GDI logical font object */
5 typedef struct
6 {
7 LOGFONTW logfont;
8 FONTOBJ *Font;
9 BOOLEAN Initialized; /* Don't reinitialize for each DC */
10 } TEXTOBJ, *PTEXTOBJ;
11
12 /* Internal interface */
13
14 #define TEXTOBJ_AllocText() \
15 ((HFONT) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_FONT))
16 #define TEXTOBJ_FreeText(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
17 #define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
18 #define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr (pBMObj)
19
20 NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle);
21 NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont);
22 BOOL FASTCALL InitFontSupport(VOID);
23 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
24 BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
25 VOID FASTCALL IntEnableFontRendering(BOOL Enable);
26 INT FASTCALL FontGetObject(PTEXTOBJ TextObj, INT Count, PVOID Buffer);
27
28 #define IntLockProcessPrivateFonts(W32Process) \
29 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
30
31 #define IntUnLockProcessPrivateFonts(W32Process) \
32 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&W32Process->PrivateFontListLock)
33
34 #define IntLockGlobalFonts \
35 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FontListLock)
36
37 #define IntUnLockGlobalFonts \
38 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FontListLock)
39
40 #define IntLockFreeType \
41 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FreeTypeLock)
42
43 #define IntUnLockFreeType \
44 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FreeTypeLock)
45
46 #endif /* _WIN32K_TEXT_H */