comctl32/listview: Reuse cached control style.
[wine] / dlls / uxtheme / msstyles.h
index 38e611d..6cd73ac 100644 (file)
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
 #ifndef __WINE_MSSTYLES_H
 #define __WINE_MSSTYLES_H
 
+#define TMT_ENUM 200
+
+#define MAX_THEME_APP_NAME 60
+#define MAX_THEME_CLASS_NAME 60
+#define MAX_THEME_VALUE_NAME 60
+
+typedef struct _THEME_PROPERTY {
+    int iPrimitiveType;
+    int iPropertyId;
+    PROPERTYORIGIN origin;
+
+    LPCWSTR lpValue;
+    DWORD dwValueLen;
+
+    struct _THEME_PROPERTY *next;
+} THEME_PROPERTY, *PTHEME_PROPERTY;
+
+typedef struct _THEME_PARTSTATE {
+    int iPartId;
+    int iStateId;
+    PTHEME_PROPERTY properties;
+
+    struct _THEME_PARTSTATE *next;
+} THEME_PARTSTATE, *PTHEME_PARTSTATE;
+
+struct _THEME_FILE;
+
+typedef struct _THEME_CLASS {
+    HMODULE hTheme;
+    struct _THEME_FILE* tf;
+    WCHAR szAppName[MAX_THEME_APP_NAME];
+    WCHAR szClassName[MAX_THEME_CLASS_NAME];
+    PTHEME_PARTSTATE partstate;
+    struct _THEME_CLASS *overrides;
+
+    struct _THEME_CLASS *next;
+} THEME_CLASS, *PTHEME_CLASS;
+
+typedef struct _THEME_IMAGE {
+    WCHAR name[MAX_PATH];
+    HBITMAP image;
+    BOOL hasAlpha;
+    
+    struct _THEME_IMAGE *next;
+} THEME_IMAGE, *PTHEME_IMAGE;
+
 typedef struct _THEME_FILE {
+    DWORD dwRefCount;
     HMODULE hTheme;
+    WCHAR szThemeFile[MAX_PATH];
     LPWSTR pszAvailColors;
     LPWSTR pszAvailSizes;
 
     LPWSTR pszSelectedColor;
     LPWSTR pszSelectedSize;
+
+    PTHEME_CLASS classes;
+    PTHEME_PROPERTY metrics;
+    PTHEME_IMAGE images;
 } THEME_FILE, *PTHEME_FILE;
 
+typedef struct _UXINI_FILE *PUXINI_FILE;
+
 HRESULT MSSTYLES_OpenThemeFile(LPCWSTR lpThemeFile, LPCWSTR pszColorName, LPCWSTR pszSizeName, PTHEME_FILE *tf);
 void MSSTYLES_CloseThemeFile(PTHEME_FILE tf);
+HRESULT MSSTYLES_SetActiveTheme(PTHEME_FILE tf, BOOL setMetrics);
+PTHEME_CLASS MSSTYLES_OpenThemeClass(LPCWSTR pszAppName, LPCWSTR pszClassList);
+HRESULT MSSTYLES_CloseThemeClass(PTHEME_CLASS tc);
+BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId);
+BOOL MSSTYLES_LookupEnum(LPCWSTR pszValueName, int dwEnum, int *dwValue);
+BOOL MSSTYLES_LookupPartState(LPCWSTR pszClass, LPCWSTR pszPart, LPCWSTR pszState, int *iPartId, int *iStateId);
+PUXINI_FILE MSSTYLES_GetThemeIni(PTHEME_FILE tf);
+PTHEME_PARTSTATE MSSTYLES_FindPartState(PTHEME_CLASS tc, int iPartId, int iStateId, PTHEME_CLASS *tcNext);
+PTHEME_PROPERTY MSSTYLES_FindProperty(PTHEME_CLASS tc, int iPartId, int iStateId, int iPropertyPrimitive, int iPropertyId);
+PTHEME_PROPERTY MSSTYLES_FindMetric(int iPropertyPrimitive, int iPropertyId);
+HBITMAP MSSTYLES_LoadBitmap(PTHEME_CLASS tc, LPCWSTR lpFilename, BOOL* hasAlpha);
+
+HRESULT MSSTYLES_GetPropertyBool(PTHEME_PROPERTY tp, BOOL *pfVal);
+HRESULT MSSTYLES_GetPropertyColor(PTHEME_PROPERTY tp, COLORREF *pColor);
+HRESULT MSSTYLES_GetPropertyFont(PTHEME_PROPERTY tp, HDC hdc, LOGFONTW *pFont);
+HRESULT MSSTYLES_GetPropertyInt(PTHEME_PROPERTY tp, int *piVal);
+HRESULT MSSTYLES_GetPropertyIntList(PTHEME_PROPERTY tp, INTLIST *pIntList);
+HRESULT MSSTYLES_GetPropertyPosition(PTHEME_PROPERTY tp, POINT *pPoint);
+HRESULT MSSTYLES_GetPropertyString(PTHEME_PROPERTY tp, LPWSTR pszBuff, int cchMaxBuffChars);
+HRESULT MSSTYLES_GetPropertyRect(PTHEME_PROPERTY tp, RECT *pRect);
+HRESULT MSSTYLES_GetPropertyMargins(PTHEME_PROPERTY tp, RECT *prc, MARGINS *pMargins);
 
+PUXINI_FILE UXINI_LoadINI(HMODULE hTheme, LPCWSTR lpName);
+void UXINI_CloseINI(PUXINI_FILE uf);
+LPCWSTR UXINI_GetNextSection(PUXINI_FILE uf, DWORD *dwLen);
+BOOL UXINI_FindSection(PUXINI_FILE uf, LPCWSTR lpName);
+LPCWSTR UXINI_GetNextValue(PUXINI_FILE uf, DWORD *dwNameLen, LPCWSTR *lpValue, DWORD *dwValueLen);
+BOOL UXINI_FindValue(PUXINI_FILE uf, LPCWSTR lpName, LPCWSTR *lpValue, DWORD *dwValueLen);
 
 #endif