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.
|
|
/*
* Font Cache */
#ifndef DUI_BASE_FONTCACHE_H_INCLUDED
#define DUI_BASE_FONTCACHE_H_INCLUDED
#pragma once
namespace DirectUI {
// Supported styles
#define FS_None 0x00000000
#define FS_Italic 0x00000001
#define FS_Underline 0x00000002
#define FS_StrikeOut 0x00000004
class FontCache { public:
static HRESULT Create(UINT uCacheSize, OUT FontCache** ppCache); void Destroy();
HFONT CheckOutFont(LPWSTR szFamily, int dSize, int dWeight, int dStyle, int dAngle); void CheckInFont() { _fLock = false; }
struct FontRecord { HFONT hFont;
WCHAR szFamily[LF_FACESIZE]; int dSize; int dWeight; int dStyle; int dAngle;
UINT uHits; };
struct RecordIdx // Array sorted by frequency of use
{ FontCache* pfcContext; // Context used for global sort routine
UINT idx; // Refers to a FontRecord location
}; UINT _GetRecordHits(UINT uRec) { return (_pDB + uRec)->uHits; }
FontCache() {} HRESULT Initialize(UINT uCacheSize); virtual ~FontCache();
private: bool _fLock; UINT _uCacheSize; FontRecord* _pDB; // Array of cached records
RecordIdx* _pFreq; // Array of sorted record indicies by frequency of use
};
} // namespace DirectUI
#endif // DUI_BASE_FONTCACHE_H_INCLUDED
|