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 _MIMEDB_H_
#define _MIMEDB_H_
#define ALLOC_BLOCK 10
typedef struct tagMIMECODEPAGE { UINT uiCodePage; LPWSTR wszHeaderCharset; LPWSTR wszBodyCharset; LPWSTR wszWebCharset; UINT uidFixedWidthFont; UINT uidProportionalFont; UINT uidDescription; UINT uiFamilyCodePage; DWORD dwFlags; } MIMECODEPAGE;
typedef struct tagMIMEREGCHARSET { LPCWSTR szCharset; UINT uiCodePage; UINT uiInternetEncoding; DWORD dwFlags; } MIMECHARSET;
typedef struct tagMIMERFC1766 { LCID LcId; LPCWSTR szRfc1766; UINT uidLCID; DWORD dwFlags; } MIMERFC1766;
extern MIMECODEPAGE MimeCodePage[]; extern const MIMERFC1766 MimeRfc1766[]; extern const MIMECHARSET MimeCharSet[];
#ifdef __cplusplus
//
// CMimeDatabase declaration without IMimeDatabase Interface
//
class CMimeDatabase // This would support IMimeDatabase when available
{ MIMECONTF dwMimeSource; public: // Possible IMimeDatabase methods
STDMETHODIMP GetNumberOfCodePageInfo(UINT *pcCodePage); STDMETHODIMP EnumCodePageInfo(void); STDMETHODIMP GetCodePageInfo(UINT uiCodePage, LANGID LangId, PMIMECPINFO pcpInfo); STDMETHODIMP GetCodePageInfoWithIndex(UINT uidx, LANGID LangId, PMIMECPINFO pcpInfo); STDMETHODIMP GetCharsetInfo(BSTR Charset, PMIMECSETINFO pcsetInfo); STDMETHODIMP ValidateCP(UINT uiCodePage); STDMETHODIMP SetMimeDBSource(MIMECONTF dwSource) { if ((dwSource != MIMECONTF_MIME_IE4) && (dwSource != MIMECONTF_MIME_LATEST) && (dwSource != MIMECONTF_MIME_REGISTRY)) { return E_INVALIDARG; } dwMimeSource = dwSource; return S_OK; } CMimeDatabase(void) { dwMimeSource = MIMECONTF_MIME_LATEST; }
protected: void FreeMimeDatabase(void); BOOL CheckFont(BYTE bGDICharset);
};
//
// Globals
//
extern CMimeDatabase *g_pMimeDatabase; //
// CMimeDatabase declaration without IMimeDatabase Interface
//
class CMimeDatabaseReg // This would support IMimeDatabase when available
{ public: // Possible IMimeDatabase methods
STDMETHODIMP GetNumberOfCodePageInfo(UINT *pcCodePage); STDMETHODIMP EnumCodePageInfo(void); STDMETHODIMP GetCodePageInfo(UINT uiCodePage, PMIMECPINFO pcpInfo); STDMETHODIMP GetCodePageInfoWithIndex(UINT uidx, PMIMECPINFO pcpInfo); STDMETHODIMP GetCharsetInfo(BSTR Charset, PMIMECSETINFO pcsetInfo); STDMETHODIMP ValidateCP(UINT uiCodePage); STDMETHODIMP LcidToRfc1766A(LCID Locale, LPSTR pszRfc1766, int iMaxLength); STDMETHODIMP LcidToRfc1766W(LCID Locale, LPWSTR pwszRfc1766, int nChar); STDMETHODIMP Rfc1766ToLcidA(PLCID pLocale, LPCSTR pszRfc1766); STDMETHODIMP Rfc1766ToLcidW(PLCID pLocale, LPCWSTR pwszRfc1766); void EnsureRfc1766Table(void);
// Constructor & Destructor
CMimeDatabaseReg(); ~CMimeDatabaseReg();
protected: void BuildCodePageMimeDatabase(void); void BuildCharsetMimeDatabase(void); void FreeMimeDatabase(void); int FindCodePageFromCache(UINT uiCodePage); BOOL FindCodePageFromRegistry(UINT uiCodePage, MIMECPINFO *pCPInfo); int FindCharsetFromCache(BSTR Charset); int FindCharsetFromRegistry(BSTR Charset, BOOL fFromAlias); BOOL CheckFont(BYTE bGDICharset); void QSortCodePageInfo(LONG left, LONG right); void QSortCharsetInfo(LONG left, LONG right); void BuildRfc1766Table(void); void FreeRfc1766Table(void);
CRITICAL_SECTION _cs;
BOOL _fAllCPCached; PMIMECPINFO _pCodePage; UINT _cCodePage; UINT _cMaxCodePage; PMIMECSETINFO _pCharset; UINT _cCharset; UINT _cMaxCharset; };
extern CMimeDatabaseReg *g_pMimeDatabaseReg;
#endif // __cplusplus
#endif // _MIMEDB_H_
|