#ifndef _FILETBL_H #define _FILETBL_H #define SHIL_COUNT (SHIL_LAST + 1) // fileicon.c STDAPI_(int) SHAddIconsToCache(HICON rghicon[SHIL_COUNT], LPCTSTR pszIconPath, int iIconIndex, UINT uIconFlags); STDAPI AddToIconTable(LPCTSTR szFile, int iIconIndex, UINT uFlags, int iIndex); STDAPI_(void) RemoveFromIconTable(LPCTSTR szFile); STDAPI_(void) FlushIconCache(void); STDAPI_(int) GetFreeImageIndex(void); STDAPI_(void) IconCacheFlush(BOOL fForce); STDAPI_(BOOL) IconCacheSave(void); STDAPI_(BOOL) IconCacheRestore(SIZE rgsize[SHIL_COUNT], UINT flags); STDAPI_(void) _IconCacheDump(void); // DEBUG ONLY STDAPI_(int) LookupIconIndex(LPCTSTR pszFile, int iIconIndex, UINT uFlags); STDAPI_(DWORD) LookupFileClass(LPCTSTR szClass); STDAPI_(void) AddFileClass(LPCTSTR szClass, DWORD dw); STDAPI_(void) FlushFileClass(void); STDAPI_(BOOL) IconIndexInFileClassTable(int iIndex); STDAPI_(LPCTSTR) LookupFileClassName(LPCTSTR szClass); STDAPI_(LPCTSTR) AddFileClassName(LPCTSTR szClass, LPCTSTR szClassName); STDAPI_(UINT) LookupFileSCIDs(LPCTSTR pszClass, SHCOLUMNID *pascidOut[]); STDAPI_(void) AddFileSCIDs(LPCTSTR pszClass, SHCOLUMNID ascidIn[], UINT cProps); // OpenAsTypes typedef enum { GEN_CUSTOM = -3, GEN_UNSPECIFIED = -2, GEN_FOLDER = -1, GEN_UNKNOWN = 0, GEN_TEXT, GEN_IMAGE, GEN_AUDIO, GEN_VIDEO, GEN_COMPRESSED, } PERCEIVED; STDAPI_(PERCEIVED) LookupFilePerceivedType(LPCTSTR pszClass); STDAPI_(void) AddFilePerceivedType(LPCTSTR pszClass, PERCEIVED gen); PERCEIVED GetPerceivedType(IShellFolder *psf, LPCITEMIDLIST pidl); // g_MaxIcons is limit on the number of icons in the cache // when we reach this limit we will start to throw icons away. // extern int g_MaxIcons; // panic limit for cache size #ifdef DEBUG #define DEF_MAX_ICONS 200 // to test the flush code more offten #else #define DEF_MAX_ICONS 500 // normal end user number #endif // refreshes g_MaxIcons from registry. returns TRUE if value changed. BOOL QueryNewMaxIcons(void); // g_iLastSysIcon is an indicator that is used to help determine which icons // should be flushed and which icons shouldn't. In the EXPLORER.EXE process, // the first 40 or so icons should be saved. On all other processes, only // the icon overlay's should be saved. extern UINT g_iLastSysIcon; typedef struct { SIZE size; // icon size HIMAGELIST himl; } SHIMAGELIST; EXTERN_C SHIMAGELIST g_rgshil[SHIL_COUNT]; BOOL _IsSHILInited(); int _GetSHILImageCount(); void _DestroyIcons(HICON *phicons, int cIcons); // NOTE these are the size of the icons in our ImageList, not the system // icon size. #define g_cxIcon ((int)g_rgshil[SHIL_LARGE].size.cx) #define g_cyIcon ((int)g_rgshil[SHIL_LARGE].size.cy) #define g_cxSmIcon ((int)g_rgshil[SHIL_SMALL].size.cx) #define g_cySmIcon ((int)g_rgshil[SHIL_SMALL].size.cy) #endif // _FILETBL_H