summaryrefslogtreecommitdiff
path: root/lib/Thumbnail/thumbnail.h
diff options
context:
space:
mode:
authorDaniel Wilhelm <daniel@wili.li>2014-04-18 17:15:16 +0200
committerDaniel Wilhelm <daniel@wili.li>2014-04-18 17:15:16 +0200
commitbd6336c629841c6db3a6ca53a936d629d34db53b (patch)
tree3721ef997864108df175ce677a8a7d4342a6f1d2 /lib/Thumbnail/thumbnail.h
parent4.0 (diff)
downloadFreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.tar.gz
FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.tar.bz2
FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.zip
4.1
Diffstat (limited to 'lib/Thumbnail/thumbnail.h')
-rw-r--r--lib/Thumbnail/thumbnail.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/Thumbnail/thumbnail.h b/lib/Thumbnail/thumbnail.h
new file mode 100644
index 00000000..3feec275
--- /dev/null
+++ b/lib/Thumbnail/thumbnail.h
@@ -0,0 +1,68 @@
+// **************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
+// * Copyright (C) 2008-2011 ZenJu (zhnmju123 AT gmx.de) *
+// **************************************************************************
+
+#ifndef TASKBAR_SEVEN_DLL_H
+#define TASKBAR_SEVEN_DLL_H
+
+#ifdef THUMBNAIL_DLL_EXPORTS
+#define DLL_FUNCTION_DECLARATION extern "C" __declspec(dllexport)
+#else
+#define DLL_FUNCTION_DECLARATION extern "C" __declspec(dllimport)
+#endif
+
+#include <zen/build_info.h>
+//#include <WinDef.h>
+
+namespace thumb
+{
+/*
+PREREQUISITES:
+
+1. COM must be initialized for the current thread via ::CoInitialize(NULL) or ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED),
+ but NOT ::CoInitializeEx(NULL, COINIT_MULTITHREADED) -> internal access violation crash!
+2. call ::FileIconInit() on app start to remedy obscure errors like SHELL_E_WRONG_BITDEPTH (0x80270102)
+ for certain file types, e.g. lnk, mpg - required on Windows 7 see http://msdn.microsoft.com/en-us/library/ms683212(v=VS.85).aspx
+*/
+
+/*--------------
+ |declarations|
+ --------------*/
+typedef void* HICON;
+
+DLL_FUNCTION_DECLARATION
+HICON getThumbnail(const wchar_t* filename, int requestedSize); //return 0 on failure, caller takes ownership!
+//Note: not all file types support thumbnails! make sure to implement fallback to file icon!
+
+DLL_FUNCTION_DECLARATION
+HICON getIconByIndex(int iconIndex, int shilIconType); //return 0 on failure, caller takes ownership!
+/*
+"iconType" refers to parameter "iImageList" of ::SHGetImageList(); sample values:
+ SHIL_SMALL - 16x16, but the size can be customized by the user.
+ SHIL_EXTRALARGE - 48x48, but the size can be customized by the user.
+ SHIL_JUMBO - 256x256 pixels; Vista and later only
+"iconIndex" as returned by ::SHGetFileInfo()
+*/
+
+/*----------
+ |typedefs|
+ ----------*/
+typedef HICON (*GetThumbnailFct )(const wchar_t* filename, int requestedSize);
+typedef HICON (*GetIconByIndexFct)(int iconIndex, int shilIconType);
+
+/*--------------
+ |symbol names|
+ --------------*/
+//(use const pointers to ensure internal linkage)
+const char getThumbnailFctName [] = "getThumbnail";
+const char getIconByIndexFctName [] = "getIconByIndex";
+
+/*---------------
+ |library names|
+ ---------------*/
+inline const wchar_t* getDllName() { return zen::is64BitBuild ? L"Thumbnail_x64.dll" : L"Thumbnail_Win32.dll"; }
+}
+
+#endif //TASKBAR_SEVEN_DLL_H
bgstack15