4 #include <include/engobjects.h>
6 #define TAG_FINF 'FNIF'
10 #define TO_MEM_ALLOCATED 0x0001
11 #define TO_ALL_PTRS_VALID 0x0002
12 #define TO_VALID 0x0004
13 #define TO_ESC_NOT_ORIENT 0x0008
14 #define TO_PWSZ_ALLOCATED 0x0010
15 #define TSIM_UNDERLINE1 0x0020
16 #define TSIM_UNDERLINE2 0x0040
17 #define TSIM_STRIKEOUT 0x0080
18 #define TO_HIGHRESTEXT 0x0100
19 #define TO_BITMAPS 0x0200
20 #define TO_PARTITION_INIT 0x0400
21 #define TO_ALLOC_FACENAME 0x0800
22 #define TO_SYS_PARTITION 0x1000
26 typedef struct _STRGDI
28 STROBJ StrObj
; // Text string object header.
31 INT cgposPositionsEnumerated
;
32 PVOID prfo
; // PRFONT -> PFONTGDI
36 POINTFIX ptfxEscapement
;
44 RECTL rclBackGroundSave
;
50 POINTL ptlBaseLineAdjust
;
54 INT cNumFaceNameGlyphs
;
55 PVOID pacFaceNameGlyphs
;
56 ULONG acFaceNameGlyphs
[8];
59 #define TEXTOBJECT_INIT 0x00010000
61 /* GDI logical font object */
64 /* Header for all gdi objects in the handle table.
65 Do not (re)move this. */
66 BASEOBJECT BaseObject
;
70 WCHAR FullName
[LF_FULLFACESIZE
];
71 WCHAR Style
[LF_FACESIZE
];
72 WCHAR FaceName
[LF_FACESIZE
];
73 DWORD dwOffsetEndArray
;
75 ENUMLOGFONTEXDVW logfont
;
78 /* Internal interface */
80 #define TEXTOBJ_AllocText() ((PTEXTOBJ) GDIOBJ_AllocObj(GDIObjType_LFONT_TYPE))
81 #define TEXTOBJ_AllocTextWithHandle() ((PTEXTOBJ) GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_FONT))
82 #define TEXTOBJ_FreeText(pBMObj) GDIOBJ_FreeObj((POBJ) pBMObj, GDILoObjType_LO_FONT_TYPE)
83 #define TEXTOBJ_FreeTextByHandle(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
84 #define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
85 #define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr ((POBJ)pBMObj)
87 PTEXTOBJ FASTCALL
RealizeFontInit(HFONT
);
88 NTSTATUS FASTCALL
TextIntRealizeFont(HFONT
,PTEXTOBJ
);
89 NTSTATUS FASTCALL
TextIntCreateFontIndirect(CONST LPLOGFONTW lf
, HFONT
*NewFont
);
90 BOOL FASTCALL
InitFontSupport(VOID
);
91 BOOL FASTCALL
IntIsFontRenderingEnabled(VOID
);
92 BOOL FASTCALL
IntIsFontRenderingEnabled(VOID
);
93 VOID FASTCALL
IntEnableFontRendering(BOOL Enable
);
94 INT FASTCALL
FontGetObject(PTEXTOBJ TextObj
, INT Count
, PVOID Buffer
);
95 VOID FASTCALL
IntLoadSystemFonts(VOID
);
96 INT FASTCALL
IntGdiAddFontResource(PUNICODE_STRING FileName
, DWORD Characteristics
);
97 ULONG FASTCALL
ftGdiGetGlyphOutline(PDC
,WCHAR
,UINT
,LPGLYPHMETRICS
,ULONG
,PVOID
,LPMAT2
,BOOL
);
98 INT FASTCALL
IntGetOutlineTextMetrics(PFONTGDI
,UINT
,OUTLINETEXTMETRICW
*);
99 BOOL FASTCALL
ftGdiGetRasterizerCaps(LPRASTERIZER_STATUS
);
100 BOOL FASTCALL
TextIntGetTextExtentPoint(PDC
,PTEXTOBJ
,LPCWSTR
,int,int,LPINT
,LPINT
,LPSIZE
);
101 BOOL FASTCALL
ftGdiGetTextMetricsW(HDC
,PTMW_INTERNAL
);
102 DWORD FASTCALL
IntGetFontLanguageInfo(PDC
);
103 INT FASTCALL
ftGdiGetTextCharsetInfo(PDC
,PFONTSIGNATURE
,DWORD
);
104 DWORD FASTCALL
ftGetFontUnicodeRanges(PFONTGDI
, PGLYPHSET
);
105 DWORD FASTCALL
ftGdiGetFontData(PFONTGDI
,DWORD
,DWORD
,PVOID
,DWORD
);
106 BOOL FASTCALL
IntGdiGetFontResourceInfo(PUNICODE_STRING
,PVOID
,DWORD
*,DWORD
);
107 BOOL FASTCALL
ftGdiRealizationInfo(PFONTGDI
,PREALIZATION_INFO
);
108 DWORD FASTCALL
ftGdiGetKerningPairs(PFONTGDI
,DWORD
,LPKERNINGPAIR
);
109 BOOL NTAPI
GreExtTextOutW(IN HDC
,IN INT
,IN INT
,IN UINT
,IN OPTIONAL RECTL
*,
110 IN LPWSTR
, IN INT
, IN OPTIONAL LPINT
, IN DWORD
);
111 DWORD FASTCALL
IntGetCharDimensions(HDC
, PTEXTMETRICW
, PDWORD
);
112 BOOL FASTCALL
GreGetTextExtentW(HDC
,LPWSTR
,INT
,LPSIZE
,UINT
);
113 BOOL FASTCALL
GreGetTextExtentExW(HDC
,LPWSTR
,ULONG
,ULONG
,PULONG
,PULONG
,LPSIZE
,FLONG
);
115 #define IntLockProcessPrivateFonts(W32Process) \
116 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
118 #define IntUnLockProcessPrivateFonts(W32Process) \
119 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&W32Process->PrivateFontListLock)
121 #define IntLockGlobalFonts \
122 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FontListLock)
124 #define IntUnLockGlobalFonts \
125 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FontListLock)
127 #define IntLockFreeType \
128 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&FreeTypeLock)
130 #define IntUnLockFreeType \
131 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FreeTypeLock)
133 #endif /* _WIN32K_TEXT_H */