88 lines
2.9 KiB
C
88 lines
2.9 KiB
C
|
#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
|