summaryrefslogtreecommitdiff
path: root/shared/Thumbnail/thumbnail.h
diff options
context:
space:
mode:
Diffstat (limited to 'shared/Thumbnail/thumbnail.h')
-rw-r--r--shared/Thumbnail/thumbnail.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/shared/Thumbnail/thumbnail.h b/shared/Thumbnail/thumbnail.h
new file mode 100644
index 00000000..ae62cf5d
--- /dev/null
+++ b/shared/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 "../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 - Vista and later; normally 256x256 pixels
+"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 util::is64BitBuild ? L"Thumbnail_x64.dll" : L"Thumbnail_Win32.dll"; }
+}
+
+#endif //TASKBAR_SEVEN_DLL_H
bgstack15