-#ifndef _WIN32K_TEXT_H
-#define _WIN32K_TEXT_H
+#pragma once
+
+#include <include/engobjects.h>
+
+#define TAG_FINF 'FNIF'
+//
+// EXSTROBJ flags.
+//
+#define TO_MEM_ALLOCATED 0x0001
+#define TO_ALL_PTRS_VALID 0x0002
+#define TO_VALID 0x0004
+#define TO_ESC_NOT_ORIENT 0x0008
+#define TO_PWSZ_ALLOCATED 0x0010
+#define TSIM_UNDERLINE1 0x0020
+#define TSIM_UNDERLINE2 0x0040
+#define TSIM_STRIKEOUT 0x0080
+#define TO_HIGHRESTEXT 0x0100
+#define TO_BITMAPS 0x0200
+#define TO_PARTITION_INIT 0x0400
+#define TO_ALLOC_FACENAME 0x0800
+#define TO_SYS_PARTITION 0x1000
+//
+// Extended STROBJ
+//
+typedef struct _STRGDI
+{
+ STROBJ StrObj; // Text string object header.
+ FLONG flTO;
+ INT cgposCopied;
+ INT cgposPositionsEnumerated;
+ PVOID prfo; // PRFONT -> PFONTGDI
+ PGLYPHPOS pgpos;
+ POINTFIX ptfxRef;
+ POINTFIX ptfxUpdate;
+ POINTFIX ptfxEscapement;
+ RECTFX rcfx;
+ FIX fxExtent;
+ FIX fxExtra;
+ FIX fxBreakExtra;
+ DWORD dwCodePage;
+ INT cExtraRects;
+ RECTL arclExtra[3];
+ RECTL rclBackGroundSave;
+ PWCHAR pwcPartition;
+ PLONG plPartition;
+ PLONG plNext;
+ PGLYPHPOS pgpNext;
+ PLONG plCurrentFont;
+ POINTL ptlBaseLineAdjust;
+ INT cTTSysGlyphs;
+ INT cSysGlyphs;
+ INT cDefGlyphs;
+ INT cNumFaceNameGlyphs;
+ PVOID pacFaceNameGlyphs;
+ ULONG acFaceNameGlyphs[8];
+} STRGDI, *PSTRGDI;
+
+#define TEXTOBJECT_INIT 0x00010000
/* GDI logical font object */
typedef struct
{
- LOGFONTW logfont;
- FONTOBJ *Font;
- BOOLEAN Initialized; /* Don't reinitialize for each DC */
+ /* Header for all gdi objects in the handle table.
+ Do not (re)move this. */
+ BASEOBJECT BaseObject;
+ LFTYPE lft;
+ FLONG fl;
+ FONTOBJ *Font;
+ WCHAR FullName[LF_FULLFACESIZE];
+ WCHAR Style[LF_FACESIZE];
+ WCHAR FaceName[LF_FACESIZE];
+ DWORD dwOffsetEndArray;
+// Fixed:
+ ENUMLOGFONTEXDVW logfont;
} TEXTOBJ, *PTEXTOBJ;
/* Internal interface */
-#define TEXTOBJ_AllocText() \
- ((HFONT) GDIOBJ_AllocObj (GdiHandleTable, GDI_OBJECT_TYPE_FONT))
-#define TEXTOBJ_FreeText(hBMObj) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
-#define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj (GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
-#define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr (GdiHandleTable, pBMObj)
+#define TEXTOBJ_AllocText() ((PTEXTOBJ) GDIOBJ_AllocObj(GDIObjType_LFONT_TYPE))
+#define TEXTOBJ_AllocTextWithHandle() ((PTEXTOBJ) GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_FONT))
+#define TEXTOBJ_FreeText(pBMObj) GDIOBJ_FreeObj((POBJ) pBMObj, GDILoObjType_LO_FONT_TYPE)
+#define TEXTOBJ_FreeTextByHandle(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
+#define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
+#define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr ((POBJ)pBMObj)
-NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle);
+PTEXTOBJ FASTCALL RealizeFontInit(HFONT);
+NTSTATUS FASTCALL TextIntRealizeFont(HFONT,PTEXTOBJ);
NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont);
BOOL FASTCALL InitFontSupport(VOID);
BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
BOOL FASTCALL IntIsFontRenderingEnabled(VOID);
VOID FASTCALL IntEnableFontRendering(BOOL Enable);
INT FASTCALL FontGetObject(PTEXTOBJ TextObj, INT Count, PVOID Buffer);
+VOID FASTCALL IntLoadSystemFonts(VOID);
+INT FASTCALL IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics);
+ULONG FASTCALL ftGdiGetGlyphOutline(PDC,WCHAR,UINT,LPGLYPHMETRICS,ULONG,PVOID,LPMAT2,BOOL);
+INT FASTCALL IntGetOutlineTextMetrics(PFONTGDI,UINT,OUTLINETEXTMETRICW *);
+BOOL FASTCALL ftGdiGetRasterizerCaps(LPRASTERIZER_STATUS);
+BOOL FASTCALL TextIntGetTextExtentPoint(PDC,PTEXTOBJ,LPCWSTR,INT,ULONG,LPINT,LPINT,LPSIZE);
+BOOL FASTCALL ftGdiGetTextMetricsW(HDC,PTMW_INTERNAL);
+DWORD FASTCALL IntGetFontLanguageInfo(PDC);
+INT FASTCALL ftGdiGetTextCharsetInfo(PDC,PFONTSIGNATURE,DWORD);
+DWORD FASTCALL ftGetFontUnicodeRanges(PFONTGDI, PGLYPHSET);
+DWORD FASTCALL ftGdiGetFontData(PFONTGDI,DWORD,DWORD,PVOID,DWORD);
+BOOL FASTCALL IntGdiGetFontResourceInfo(PUNICODE_STRING,PVOID,DWORD*,DWORD);
+BOOL FASTCALL ftGdiRealizationInfo(PFONTGDI,PREALIZATION_INFO);
+DWORD FASTCALL ftGdiGetKerningPairs(PFONTGDI,DWORD,LPKERNINGPAIR);
+BOOL NTAPI GreExtTextOutW(IN HDC,IN INT,IN INT,IN UINT,IN OPTIONAL RECTL*,
+ IN LPWSTR, IN INT, IN OPTIONAL LPINT, IN DWORD);
+DWORD FASTCALL IntGetCharDimensions(HDC, PTEXTMETRICW, PDWORD);
+BOOL FASTCALL GreGetTextExtentW(HDC,LPWSTR,INT,LPSIZE,UINT);
+BOOL FASTCALL GreGetTextExtentExW(HDC,LPWSTR,ULONG,ULONG,PULONG,PULONG,LPSIZE,FLONG);
#define IntLockProcessPrivateFonts(W32Process) \
ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
#define IntUnLockFreeType \
ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&FreeTypeLock)
-
-#endif /* _WIN32K_TEXT_H */