Write section access also assumes read access.
[wine] / dlls / 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 typedef struct _THEME_CLASS {
50     HMODULE hTheme;
51     WCHAR szAppName[MAX_THEME_APP_NAME];
52     WCHAR szClassName[MAX_THEME_CLASS_NAME];
53     PTHEME_PARTSTATE partstate;
54     struct _THEME_CLASS *overrides;
55
56     struct _THEME_CLASS *next;
57 } THEME_CLASS, *PTHEME_CLASS;
58
59 typedef struct _THEME_FILE {
60     DWORD dwRefCount;
61     HMODULE hTheme;
62     WCHAR szThemeFile[MAX_PATH];
63     LPWSTR pszAvailColors;
64     LPWSTR pszAvailSizes;
65
66     LPWSTR pszSelectedColor;
67     LPWSTR pszSelectedSize;
68
69     PTHEME_CLASS classes;
70 } THEME_FILE, *PTHEME_FILE;
71
72 typedef void* PUXINI_FILE;
73
74 HRESULT MSSTYLES_OpenThemeFile(LPCWSTR lpThemeFile, LPCWSTR pszColorName, LPCWSTR pszSizeName, PTHEME_FILE *tf);
75 void MSSTYLES_CloseThemeFile(PTHEME_FILE tf);
76 HRESULT MSSTYLES_SetActiveTheme(PTHEME_FILE tf);
77 PTHEME_CLASS MSSTYLES_OpenThemeClass(LPCWSTR pszAppName, LPCWSTR pszClassList);
78 HRESULT MSSTYLES_CloseThemeClass(PTHEME_CLASS tc);
79 BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId);
80 BOOL MSSTYLES_LookupEnum(LPCWSTR pszValueName, int dwEnum, int *dwValue);
81 BOOL MSSTYLES_LookupPartState(LPCWSTR pszClass, LPCWSTR pszPart, LPCWSTR pszState, int *iPartId, int *iStateId);
82 PUXINI_FILE MSSTYLES_GetThemeIni(PTHEME_FILE tf);
83 PTHEME_PARTSTATE MSSTYLES_FindPartState(PTHEME_CLASS tc, int iPartId, int iStateId, PTHEME_CLASS *tcNext);
84 PTHEME_CLASS MSSTYLES_FindClass(PTHEME_FILE tf, LPCWSTR pszAppName, LPCWSTR pszClassName);
85 PTHEME_PROPERTY MSSTYLES_FindProperty(PTHEME_CLASS tc, int iPartId, int iStateId, int iPropertyPrimitive, int iPropertyId);
86 HBITMAP MSSTYLES_LoadBitmap(HDC hdc, PTHEME_CLASS tc, LPCWSTR lpFilename);
87
88 PUXINI_FILE UXINI_LoadINI(HMODULE hTheme, LPCWSTR lpName);
89 void UXINI_CloseINI(PUXINI_FILE uf);
90 void UXINI_ResetINI(PUXINI_FILE uf);
91 LPCWSTR UXINI_GetNextSection(PUXINI_FILE uf, DWORD *dwLen);
92 BOOL UXINI_FindSection(PUXINI_FILE uf, LPCWSTR lpName);
93 LPCWSTR UXINI_GetNextValue(PUXINI_FILE uf, DWORD *dwNameLen, LPCWSTR *lpValue, DWORD *dwValueLen);
94 BOOL UXINI_FindValue(PUXINI_FILE uf, LPCWSTR lpName, LPCWSTR *lpValue, DWORD *dwValueLen);
95
96 #endif