93e3cd0b5a36a21c97d4274d31a111b302f0b502
[reactos.git] / reactos / lib / uxtheme / msstyles.h
1 /*
2 * Internal msstyles related 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifndef __WINE_MSSTYLES_H
22 #define __WINE_MSSTYLES_H
23
24 #define TMT_ENUM 200
25
26 #define MAX_THEME_APP_NAME 60
27 #define MAX_THEME_CLASS_NAME 60
28 #define MAX_THEME_VALUE_NAME 60
29
30 typedef struct _THEME_PROPERTY {
31 int iPrimitiveType;
32 int iPropertyId;
33 PROPERTYORIGIN origin;
34
35 LPCWSTR lpValue;
36 DWORD dwValueLen;
37
38 struct _THEME_PROPERTY *next;
39 } THEME_PROPERTY, *PTHEME_PROPERTY;
40
41 typedef struct _THEME_PARTSTATE {
42 int iPartId;
43 int iStateId;
44 PTHEME_PROPERTY properties;
45
46 struct _THEME_PARTSTATE *next;
47 } THEME_PARTSTATE, *PTHEME_PARTSTATE;
48
49 struct _THEME_FILE;
50
51 typedef struct _THEME_CLASS {
52 HMODULE hTheme;
53 struct _THEME_FILE* tf;
54 WCHAR szAppName[MAX_THEME_APP_NAME];
55 WCHAR szClassName[MAX_THEME_CLASS_NAME];
56 PTHEME_PARTSTATE partstate;
57 struct _THEME_CLASS *overrides;
58
59 struct _THEME_CLASS *next;
60 } THEME_CLASS, *PTHEME_CLASS;
61
62 typedef struct _THEME_FILE {
63 DWORD dwRefCount;
64 HMODULE hTheme;
65 WCHAR szThemeFile[MAX_PATH];
66 LPWSTR pszAvailColors;
67 LPWSTR pszAvailSizes;
68
69 LPWSTR pszSelectedColor;
70 LPWSTR pszSelectedSize;
71
72 PTHEME_CLASS classes;
73 PTHEME_PROPERTY metrics;
74 } THEME_FILE, *PTHEME_FILE;
75
76 typedef void* PUXINI_FILE;
77
78 HRESULT MSSTYLES_OpenThemeFile(LPCWSTR lpThemeFile, LPCWSTR pszColorName, LPCWSTR pszSizeName, PTHEME_FILE *tf);
79 void MSSTYLES_CloseThemeFile(PTHEME_FILE tf);
80 HRESULT MSSTYLES_SetActiveTheme(PTHEME_FILE tf);
81 PTHEME_CLASS MSSTYLES_OpenThemeClass(LPCWSTR pszAppName, LPCWSTR pszClassList);
82 HRESULT MSSTYLES_CloseThemeClass(PTHEME_CLASS tc);
83 BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId);
84 BOOL MSSTYLES_LookupEnum(LPCWSTR pszValueName, int dwEnum, int *dwValue);
85 BOOL MSSTYLES_LookupPartState(LPCWSTR pszClass, LPCWSTR pszPart, LPCWSTR pszState, int *iPartId, int *iStateId);
86 PUXINI_FILE MSSTYLES_GetThemeIni(PTHEME_FILE tf);
87 PTHEME_PARTSTATE MSSTYLES_FindPartState(PTHEME_CLASS tc, int iPartId, int iStateId, PTHEME_CLASS *tcNext);
88 PTHEME_CLASS MSSTYLES_FindClass(PTHEME_FILE tf, LPCWSTR pszAppName, LPCWSTR pszClassName);
89 PTHEME_PROPERTY MSSTYLES_FindProperty(PTHEME_CLASS tc, int iPartId, int iStateId, int iPropertyPrimitive, int iPropertyId);
90 PTHEME_PROPERTY MSSTYLES_FindMetric(int iPropertyPrimitive, int iPropertyId);
91 HBITMAP MSSTYLES_LoadBitmap(HDC hdc, PTHEME_CLASS tc, LPCWSTR lpFilename);
92
93 HRESULT MSSTYLES_GetPropertyBool(PTHEME_PROPERTY tp, BOOL *pfVal);
94 HRESULT MSSTYLES_GetPropertyColor(PTHEME_PROPERTY tp, COLORREF *pColor);
95 HRESULT MSSTYLES_GetPropertyFont(PTHEME_PROPERTY tp, HDC hdc, LOGFONTW *pFont);
96 HRESULT MSSTYLES_GetPropertyInt(PTHEME_PROPERTY tp, int *piVal);
97 HRESULT MSSTYLES_GetPropertyIntList(PTHEME_PROPERTY tp, INTLIST *pIntList);
98 HRESULT MSSTYLES_GetPropertyPosition(PTHEME_PROPERTY tp, POINT *pPoint);
99 HRESULT MSSTYLES_GetPropertyString(PTHEME_PROPERTY tp, LPWSTR pszBuff, int cchMaxBuffChars);
100 HRESULT MSSTYLES_GetPropertyRect(PTHEME_PROPERTY tp, RECT *pRect);
101 HRESULT MSSTYLES_GetPropertyMargins(PTHEME_PROPERTY tp, RECT *prc, MARGINS *pMargins);
102
103 PUXINI_FILE UXINI_LoadINI(HMODULE hTheme, LPCWSTR lpName);
104 void UXINI_CloseINI(PUXINI_FILE uf);
105 void UXINI_ResetINI(PUXINI_FILE uf);
106 LPCWSTR UXINI_GetNextSection(PUXINI_FILE uf, DWORD *dwLen);
107 BOOL UXINI_FindSection(PUXINI_FILE uf, LPCWSTR lpName);
108 LPCWSTR UXINI_GetNextValue(PUXINI_FILE uf, DWORD *dwNameLen, LPCWSTR *lpValue, DWORD *dwValueLen);
109 BOOL UXINI_FindValue(PUXINI_FILE uf, LPCWSTR lpName, LPCWSTR *lpValue, DWORD *dwValueLen);
110
111 #endif