Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef FONT_FILE_DEFINED
#define FONT_FILE_DEFINED
class GpFontTable;
class CacheFaceRealization;
class GpFontFile {
public: GpFontFile() : Next(NULL), Prev(NULL), FamilyName(NULL) {} ~GpFontFile() {}
public: GpFontFile* GetNext(void) const { return Next; } GpFontFile* GetPrev(void) const { return Prev; }
void SetNext(GpFontFile* ff) { Next = ff; }
void SetPrev(GpFontFile* ff) { Prev = ff; } void AllocateNameHolders(WCHAR** hFamilyName, int numFonts) { FamilyName = hFamilyName; // Initialize each name to NULL
for (INT n = 0; n < numFonts; n++) { FamilyName[n] = NULL; } } const WCHAR* GetFamilyName(int i) const { return FamilyName[i]; }
void SetFamilyName(int i, WCHAR* name) { FamilyName[i] = name; }
const WCHAR* GetPathName(void) const { return pwszPathname_; }
const UINT GetPathNameSize(void) const { return cwc; } void SetPathName(WCHAR* name) { pwszPathname_ = name; }
BOOL operator== (GpFontFile const& ff) const { if (this == &ff) return TRUE;
return (wcscmp(pwszPathname_, ff.pwszPathname_) == 0); } ULONG GetNumEntries(void) const { return cFonts; } GpFontFace* GetFontFace(ULONG iFont) { return( &(((GpFontFace*)(&aulData))[iFont]) ); }
FONTFILEVIEW * GetFileView() const { return pfv; } // Data members
public: ULONG SizeOfThis;
private:
// Connects GpFontFile's sharing the same hash bucket
GpFontFile* Next; GpFontFile* Prev;
WCHAR** FamilyName; // Array of family name in this font file
public:
// pwszPathname_ points to the Unicode upper case path
// name of the associated font file which is stored at the
// end of the data structure.
WCHAR * pwszPathname_; ULONG cwc; // total for all strings
// state
FLONG flState; // state (ready to die?)
ULONG cLoaded; // load count
ULONG cRealizedFace; // total number of RealizedFaces
ULONG bRemoved; // TRUE if the font file has been removed
// (RemoveFontFile() )
// CacheFaceRealization list
CacheFaceRealization *prfaceList; // pointer to head of doubly linked list
// driver information
ULONG_PTR hff; // font driver handle to font file, RETURNED by DrvLoadGpFontFile
// fonts in this file (and filename slimed in)
ULONG cFonts; // number of fonts (same as chpfe)
FONTFILEVIEW *pfv; // address of FILEVIEW structure, passed to DrvLoadFontFile
ULONG_PTR aulData[1]; // data buffer for HFontEntry and filename
};
GpFontFile *LoadFontInternal(WCHAR *pwszName, ULONG cwc, FONTFILEVIEW *pffv, BOOL bMem); GpFontFile *LoadFontFile(WCHAR * pwszFontFileName); GpFontFile *LoadFontMemImage(WCHAR* fontImageName, BYTE* fontMemoryImage, INT fontImageSize); VOID UnloadFontFile(GpFontFile *pFontFile);
BOOL MakePathName(WCHAR *dst, WCHAR *src);
#endif
|