private BitmapSource getImage(string fileName, IconSize size)
{
Icon icon;
string key = returnKey(fileName, size);
string lookup = "aaa" + Path.GetExtension(fileName).ToLower();
if (!key.StartsWith("."))
lookup = fileName;
if (isExecutable(fileName))
{
WriteableBitmap bitmap = new WriteableBitmap(addToDic("aaa.exe", size) as BitmapSource);
System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(PollIconCallback), new thumbnailInfo(bitmap, fileName, size));
return bitmap;
}
else
switch (size)
{
case IconSize.thumbnail:
if (isImage(fileName))
{
//Load as jumbo icon first.
WriteableBitmap bitmap = new WriteableBitmap(addToDic(fileName, IconSize.jumbo) as BitmapSource);
//BitmapSource bitmapSource = addToDic(fileName, IconSize.jumbo) as BitmapSource;
//WriteableBitmap bitmap = new WriteableBitmap(256, 256, 96, 96, PixelFormats.Bgra32, null);
//copyBitmap(bitmapSource, bitmap, false);
System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(PollThumbnailCallback), new thumbnailInfo(bitmap, fileName, size));
return bitmap;
}
else
{
return getImage(lookup, IconSize.jumbo);
}
case IconSize.jumbo:
return loadBitmap(loadJumbo(lookup));
case IconSize.extraLarge:
_imgList.ImageListSize = SysImageListSize.extraLargeIcons;
icon = _imgList.Icon(_imgList.IconIndex(lookup, isFolder(fileName)));
return loadBitmap(icon.ToBitmap());
default:
icon = GetFileIcon(lookup, size);
return loadBitmap(icon.ToBitmap());
}
}