winex11: Add an implementation for the PutImage entry point.
[wine] / dlls / uxtheme / uxthemedll.h
1 /*
2  * Internal uxtheme defines & declarations
3  *
4  * Copyright (C) 2003 Kevin Koltzau
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #ifndef __WINE_UXTHEMEDLL_H
22 #define __WINE_UXTHEMEDLL_H
23
24 typedef HANDLE HTHEMEFILE;
25
26 /**********************************************************************
27  *              EnumThemeProc
28  *
29  * Callback function for EnumThemes.
30  *
31  * RETURNS
32  *     TRUE to continue enumeration, FALSE to stop
33  *
34  * PARAMS
35  *     lpReserved          Always 0
36  *     pszThemeFileName    Full path to theme msstyles file
37  *     pszThemeName        Display name for theme
38  *     pszToolTip          Tooltip name for theme
39  *     lpReserved2         Always 0
40  *     lpData              Value passed through lpData from EnumThemes
41  */
42 typedef BOOL (CALLBACK *EnumThemeProc)(LPVOID lpReserved, LPCWSTR pszThemeFileName,
43                                        LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2,
44                                        LPVOID lpData);
45
46 /**********************************************************************
47  *              ParseThemeIniFileProc
48  *
49  * Callback function for ParseThemeIniFile.
50  *
51  * RETURNS
52  *     TRUE to continue enumeration, FALSE to stop
53  *
54  * PARAMS
55  *     dwType              Entry type
56  *     pszParam1           Use defined by entry type
57  *     pszParam2           Use defined by entry type
58  *     pszParam3           Use defined by entry type
59  *     dwParam             Use defined by entry type
60  *     lpData              Value passed through lpData from ParseThemeIniFile
61  *
62  * NOTES
63  * I don't know what the valid entry types are
64  */
65 typedef BOOL (CALLBACK*ParseThemeIniFileProc)(DWORD dwType, LPWSTR pszParam1,
66                                               LPWSTR pszParam2, LPWSTR pszParam3,
67                                               DWORD dwParam, LPVOID lpData);
68
69 /* Structure filled in by EnumThemeColors() and EnumeThemeSizes() with the
70  * various strings for a theme color or size. */
71 typedef struct tagTHEMENAMES
72 {
73     WCHAR szName[MAX_PATH+1];
74     WCHAR szDisplayName[MAX_PATH+1];
75     WCHAR szTooltip[MAX_PATH+1];
76 } THEMENAMES, *PTHEMENAMES;
77
78 /* Declarations for undocumented functions for use internally */
79 DWORD WINAPI QueryThemeServices(void) DECLSPEC_HIDDEN;
80 HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName,
81                              LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile,
82                              DWORD unknown) DECLSPEC_HIDDEN;
83 HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile) DECLSPEC_HIDDEN;
84 HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd) DECLSPEC_HIDDEN;
85 HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR pszColorName,
86                                 DWORD dwColorNameLen, LPWSTR pszSizeName,
87                                 DWORD dwSizeNameLen) DECLSPEC_HIDDEN;
88 HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, EnumThemeProc callback,
89                           LPVOID lpData) DECLSPEC_HIDDEN;
90 HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName,
91                                DWORD dwColorNum, PTHEMENAMES pszColorNames) DECLSPEC_HIDDEN;
92 HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
93                               DWORD dwSizeNum, PTHEMENAMES pszColorNames) DECLSPEC_HIDDEN;
94 HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
95                                  ParseThemeIniFileProc callback, LPVOID lpData) DECLSPEC_HIDDEN;
96
97 extern void UXTHEME_InitSystem(HINSTANCE hInst) DECLSPEC_HIDDEN;
98
99 /* No alpha blending */
100 #define ALPHABLEND_NONE             0
101 /* "Cheap" binary alpha blending - but possibly faster */
102 #define ALPHABLEND_BINARY           1
103 /* Full alpha blending */
104 #define ALPHABLEND_FULL             2
105
106 #endif /* __WINE_UXTHEMEDLL_H */