ClangFormat: apply to source, most of intern
[blender.git] / intern / ghost / intern / GHOST_TaskbarWin32.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16
17 /** \file
18  * \ingroup GHOST
19  */
20 #ifndef __GHOST_TASKBARWIN32_H__
21 #define __GHOST_TASKBARWIN32_H__
22
23 #ifndef WIN32
24 #  error WIN32 only!
25 #endif  // WIN32
26
27 /* require Windows XP or newer */
28 #undef _WIN32_WINNT
29 #define _WIN32_WINNT 0x501
30
31 #define WIN32_LEAN_AND_MEAN
32 #include <windows.h>
33 #include <shlobj.h>
34
35 // ITaskbarList, ITaskbarList2 and ITaskbarList3 might be missing, present here in that case.
36 // Note, ITaskbarList3 is supported only since Windows 7, though. Check for that is done in
37 // GHOST_WindowWin32
38 #ifndef __ITaskbarList_INTERFACE_DEFINED__
39 #  define __ITaskbarList_INTERFACE_DEFINED__
40 extern "C" {
41 const GUID CLSID_TaskbarList = {
42     0x56FDF344, 0xFD6D, 0x11D0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
43 const GUID IID_ITaskbarList = {
44     0x56FDF342, 0xFD6D, 0x11D0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
45 }
46
47 class ITaskbarList : public IUnknown {
48  public:
49   virtual HRESULT STDMETHODCALLTYPE HrInit(void) = 0;
50   virtual HRESULT STDMETHODCALLTYPE AddTab(HWND hwnd) = 0;
51   virtual HRESULT STDMETHODCALLTYPE DeleteTab(HWND hwnd) = 0;
52   virtual HRESULT STDMETHODCALLTYPE ActivateTab(HWND hwnd) = 0;
53   virtual HRESULT STDMETHODCALLTYPE SetActiveAlt(HWND hwnd) = 0;
54 };
55 #endif /* ITaskbarList */
56
57 #ifndef __ITaskbarList2_INTERFACE_DEFINED__
58 #  define __ITaskbarList2_INTERFACE_DEFINED__
59 extern "C" {
60 const GUID IID_ITaskbarList2 = {
61     0x602D4995, 0xB13A, 0x429b, {0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17}};
62 }
63 class ITaskbarList2 : public ITaskbarList {
64  public:
65   virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(HWND hwnd, BOOL fFullscreen) = 0;
66 };
67 #endif /* ITaskbarList2 */
68
69 #ifndef __ITaskbarList3_INTERFACE_DEFINED__
70 #  define __ITaskbarList3_INTERFACE_DEFINED__
71 typedef enum THUMBBUTTONFLAGS {
72   THBF_ENABLED = 0,
73   THBF_DISABLED = 0x1,
74   THBF_DISMISSONCLICK = 0x2,
75   THBF_NOBACKGROUND = 0x4,
76   THBF_HIDDEN = 0x8,
77   THBF_NONINTERACTIVE = 0x10,
78 } THUMBBUTTONFLAGS;
79
80 typedef enum THUMBBUTTONMASK {
81   THB_BITMAP = 0x1,
82   THB_ICON = 0x2,
83   THB_TOOLTIP = 0x4,
84   THB_FLAGS = 0x8,
85 } THUMBBUTTONMASK;
86
87 typedef struct THUMBBUTTON {
88   THUMBBUTTONMASK dwMask;
89   UINT iId;
90   UINT iBitmap;
91   HICON hIcon;
92   WCHAR szTip[260];
93   THUMBBUTTONFLAGS dwFlags;
94 } THUMBBUTTON;
95
96 typedef enum TBPFLAG {
97   TBPF_NOPROGRESS = 0,
98   TBPF_INDETERMINATE = 0x1,
99   TBPF_NORMAL = 0x2,
100   TBPF_ERROR = 0x4,
101   TBPF_PAUSED = 0x8,
102 } TBPFLAG;
103
104 #  define THBN_CLICKED 0x1800
105
106 extern "C" {
107 const GUID IID_ITaskList3 = {
108     0xEA1AFB91, 0x9E28, 0x4B86, {0x90, 0xE9, 0x9E, 0x9F, 0x8A, 0x5E, 0xEF, 0xAF}};
109 }
110
111 class ITaskbarList3 : public ITaskbarList2 {
112  public:
113   virtual HRESULT STDMETHODCALLTYPE SetProgressValue(HWND hwnd,
114                                                      ULONGLONG ullCompleted,
115                                                      ULONGLONG ullTotal) = 0;
116   virtual HRESULT STDMETHODCALLTYPE SetProgressState(HWND hwnd, TBPFLAG tbpFlags) = 0;
117   virtual HRESULT STDMETHODCALLTYPE RegisterTab(HWND hwndTab, HWND hwndMDI) = 0;
118   virtual HRESULT STDMETHODCALLTYPE UnregisterTab(HWND hwndTab) = 0;
119   virtual HRESULT STDMETHODCALLTYPE SetTabOrder(HWND hwndTab, HWND hwndInsertBefore) = 0;
120   virtual HRESULT STDMETHODCALLTYPE SetTabActive(HWND hwndTab, HWND hwndMDI, DWORD dwReserved) = 0;
121   virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(HWND hwnd,
122                                                        UINT cButtons,
123                                                        THUMBBUTTON *pButton) = 0;
124   virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(HWND hwnd,
125                                                           UINT cButtons,
126                                                           THUMBBUTTON *pButton) = 0;
127   virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(HWND hwnd, HIMAGELIST himl) = 0;
128   virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(HWND hwnd,
129                                                    HICON hIcon,
130                                                    LPCWSTR pszDescription) = 0;
131   virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(HWND hwnd, LPCWSTR pszTip) = 0;
132   virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(HWND hwnd, RECT *prcClip) = 0;
133 };
134 #endif /* ITaskbarList3 */
135
136 #endif /*__GHOST_TASKBARWIN32_H__*/