Skip to content

Commit 5afe1fb

Browse files
committed
[GDI FONT DRIVER]
- Implement font hash handling (adding fonts only atm) - Don't link win32k to ftfd.dll anymore - Dereference logical font, when deleting a DC svn path=/branches/GSoC_2011/GdiFontDriver/; revision=53099 # Conflicts: # subsystems/win32/win32k/objects/path.c
1 parent 044aa8d commit 5afe1fb

File tree

5 files changed

+319
-75
lines changed

5 files changed

+319
-75
lines changed

win32ss/gdi/font/font.h

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,43 +97,50 @@ typedef struct _PFF
9797
ULONG cFonts;
9898
void *pPvtDataHead;
9999
PFONTFILEVIEW apffv[FD_MAX_FILES];
100-
PFE apfe[1];
100+
PFE apfe[];
101101
} PFF, *PPFF;
102102

103+
typedef struct _PFELINK
104+
{
105+
struct _PFELINK *ppfelNext;
106+
PPFE ppfe;
107+
} PFELINK, *PPFELINK;
108+
103109
typedef struct _HASHBUCKET
104110
{
105111
struct _HASHBUCKET *pbktCollision;
106-
// PFELINK *ppfelEnumHead;
107-
// PFELINK *ppfelEnumTail;
112+
PFELINK *ppfelEnumHead;
113+
PFELINK *ppfelEnumTail;
108114
ULONG cTrueType;
115+
ULONG iHashValue;
109116
FLONG fl;
110117
struct _HASHBUCKET * pbktPrev;
111118
struct _HASHBUCKET * pbktNext;
112119
ULONG ulTime;
113120
union
114121
{
115-
WCHAR wcCapName[1];
122+
WCHAR wcCapName[LF_FACESIZE]; // LF_FULLFACESIZE? dynamic?
116123
UNIVERSAL_FONT_ID ufi;
117124
} u;
118125
} HASHBUCKET, *PHASHBUCKET;
119126

120127
typedef enum _FONT_HASH_TYPE
121128
{
129+
FHT_FACE = 0,
122130
FHT_FAMILY = 1,
123-
FHT_FACE,
124-
FHT_UFI,
131+
FHT_UFI = 2,
125132
} FONT_HASH_TYPE;
126133

127-
typedef struct
134+
typedef struct _FONTHASH
128135
{
129136
DWORD id;
130137
FONT_HASH_TYPE fht;
131138
ULONG cBuckets;
132139
ULONG cUsed;
133140
ULONG cCollisions;
134-
HASHBUCKET * pbktFirst;
135-
HASHBUCKET * pbktLast;
136-
HASHBUCKET * apbkt[];
141+
PHASHBUCKET pbktFirst;
142+
PHASHBUCKET pbktLast;
143+
PHASHBUCKET apbkt[];
137144
} FONTHASH, *PFONTHASH;
138145

139146
#define MAX_FONT_LIST 100
@@ -150,7 +157,7 @@ typedef struct _PFT
150157
HSEMAPHORE hsem;
151158
} PFT, *PPFT;
152159

153-
typedef struct
160+
typedef struct _RFONTLINK
154161
{
155162
PRFONT prfntPrev;
156163
PRFONT prfntNext;
@@ -325,6 +332,13 @@ typedef struct _ESTROBJ
325332
ULONG acFaceNameGlyphs[8];
326333
} ESTROBJ, *PESTROBJ;
327334

335+
VOID
336+
NTAPI
337+
UpcaseString(
338+
OUT PWSTR pwszDest,
339+
IN PWSTR pwszSource,
340+
IN ULONG cwc);
341+
328342
FORCEINLINE
329343
PLFONT
330344
LFONT_ShareLockFont(HFONT hfont)
@@ -398,3 +412,8 @@ GreExtTextOutW(
398412

399413

400414
#define DbgDefaultChannel 0x0
415+
416+
VOID
417+
NTAPI
418+
EngAcquireSemaphoreShared(
419+
IN HSEMAPHORE hsem);

0 commit comments

Comments
 (0)