uxtheme: Basic implementation of uxtheme.dll

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Initial implementation of uxtheme.dll, mostly stubbed out for now
Enough is partly implemented to keep theme aware apps from breaking
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.182
diff -u -r1.182 configure.ac
--- configure.ac	3 Oct 2003 04:31:49 -0000	1.182
+++ configure.ac	3 Oct 2003 17:34:27 -0000
@@ -1507,6 +1507,7 @@
 dlls/urlmon/tests/Makefile
 dlls/user/Makefile
 dlls/user/tests/Makefile
+dlls/uxtheme/Makefile
 dlls/version/Makefile
 dlls/win32s/Makefile
 dlls/winaspi/Makefile
Index: dlls/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/Makefile.in,v
retrieving revision 1.185
diff -u -r1.185 Makefile.in
--- dlls/Makefile.in	27 Sep 2003 02:32:54 -0000	1.185
+++ dlls/Makefile.in	3 Oct 2003 17:03:24 -0000
@@ -99,6 +99,7 @@
 	url \
 	urlmon \
 	user \
+	uxtheme \
 	version \
 	win32s \
 	winaspi \
@@ -290,6 +291,7 @@
 	url.dll$(DLLEXT) \
 	urlmon.dll$(DLLEXT) \
 	user32.dll$(DLLEXT) \
+	uxtheme.dll$(DLLEXT) \
 	version.dll$(DLLEXT) \
 	w32skrnl.dll$(DLLEXT) \
 	winealsa.drv$(DLLEXT) \
@@ -615,6 +617,9 @@
   keyboard.drv$(DLLEXT) mouse.drv$(DLLEXT) user.exe$(DLLEXT): user/user32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) user/user32.dll$(DLLEXT) $@
 
+uxtheme.dll$(DLLEXT): uxtheme/uxtheme.dll$(DLLEXT)
+	$(RM) $@ && $(LN_S) uxtheme/uxtheme.dll$(DLLEXT) $@
+
 version.dll$(DLLEXT) ver.dll$(DLLEXT): version/version.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) version/version.dll$(DLLEXT) $@
 
@@ -770,6 +775,7 @@
 	liburl \
 	liburlmon \
 	libuser32 \
+	libuxtheme \
 	libversion \
 	libw32skrnl \
 	libwinedos \
@@ -1211,6 +1217,11 @@
 libuser32.a: user/user32.spec.def
 	$(DLLTOOL) -k -l $@ -d user/user32.spec.def
 
+libuxtheme.def: uxtheme/uxtheme.spec.def
+	$(RM) $@ && $(LN_S) uxtheme/uxtheme.spec.def $@
+libuxtheme.a: uxtheme/uxtheme.spec.def
+	$(DLLTOOL) -k -l $@ -d uxtheme/uxtheme.spec.def
+
 libversion.def: version/version.spec.def
 	$(RM) $@ && $(LN_S) version/version.spec.def $@
 libversion.a: version/version.spec.def
@@ -1371,6 +1382,7 @@
 url/url.spec.def: $(WINEBUILD)
 urlmon/urlmon.spec.def: $(WINEBUILD)
 user/user32.spec.def: $(WINEBUILD)
+uxtheme/uxtheme.spec.def: $(WINEBUILD)
 version/version.spec.def: $(WINEBUILD)
 win32s/w32skrnl.spec.def: $(WINEBUILD)
 winedos/winedos.spec.def: $(WINEBUILD)
@@ -1490,6 +1502,7 @@
 url/url.dll$(DLLEXT): url
 urlmon/urlmon.dll$(DLLEXT): urlmon
 user/user32.dll$(DLLEXT): user
+uxtheme/uxtheme.dll$(DLLEXT): uxtheme
 version/version.dll$(DLLEXT): version
 win32s/w32skrnl.dll$(DLLEXT): win32s
 winmm/winealsa/winealsa.drv$(DLLEXT): winmm/winealsa
Index: include/Makefile.in
===================================================================
RCS file: /home/wine/wine/include/Makefile.in,v
retrieving revision 1.107
diff -u -r1.107 Makefile.in
--- include/Makefile.in	3 Oct 2003 03:33:15 -0000	1.107
+++ include/Makefile.in	3 Oct 2003 17:03:25 -0000
@@ -167,6 +167,7 @@
 	tlhelp32.h \
 	tmschema.h \
 	uuids.h \
+	uxtheme.h \
 	ver.h \
 	vfw.h \
 	vfwmsgs.h \
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ include/uxtheme.h	2003-10-03 11:42:13.000000000 -0400
@@ -0,0 +1,156 @@
+/*
+ * Win32 5.1 theme definitions
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * 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
+ */
+
+#ifndef __WINE_UXTHEME_H
+#define __WINE_UXTHEME_H
+
+#include <commctrl.h>
+
+typedef HANDLE HTHEME;
+
+HRESULT WINAPI CloseThemeData(HTHEME hTheme);
+HRESULT WINAPI DrawThemeBackground(HTHEME,HDC,int,int,const RECT*,const RECT*);
+
+typedef struct _DTBGOPTS {
+    DWORD dwSize;
+    DWORD dwFlags;
+    RECT rcClip;
+} DTBGOPTS, *PDTBGOPTS;
+
+HRESULT WINAPI DrawThemeBackgroundEx(HTHEME,HDC,int,int,const RECT*,
+                                     const DTBGOPTS*);
+HRESULT WINAPI DrawThemeEdge(HTHEME,HDC,int,int,const RECT*,UINT,UINT,
+                             RECT*);
+HRESULT WINAPI DrawThemeIcon(HTHEME,HDC,int,int,const RECT*,HIMAGELIST,int);
+HRESULT WINAPI DrawThemeParentBackground(HWND,HDC,RECT*);
+
+#define DTT_GRAYED      0x1
+
+HRESULT WINAPI DrawThemeText(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,
+                             const RECT*);
+
+#define ETDT_DISABLE       0x00000001
+#define ETDT_ENABLE        0x00000002
+#define ETDT_USETABTEXTURE 0x00000004
+#define ETDT_ENABLETAB     (ETDT_ENABLE|ETDT_USETABTEXTURE)
+
+HRESULT WINAPI EnableThemeDialogTexture(HWND,DWORD);
+HRESULT WINAPI EnableTheming(BOOL);
+HRESULT WINAPI GetCurrentThemeName(LPWSTR,int,LPWSTR,int,LPWSTR,int);
+
+#define STAP_ALLOW_NONCLIENT    (1<<0)
+#define STAP_ALLOW_CONTROLS     (1<<1)
+#define STAP_ALLOW_WEBCONTENT   (1<<2)
+
+DWORD WINAPI GetThemeAppProperties();
+HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME,HDC,int,int,
+                                             const RECT*,RECT*);
+HRESULT WINAPI GetThemeBackgroundExtent(HTHEME,HDC,int,int,const RECT*,RECT*);
+HRESULT WINAPI GetThemeBackgroundRegion(HTHEME,HDC,int,int,const RECT*,HRGN*);
+HRESULT WINAPI GetThemeBool(HTHEME,int,int,int,BOOL*);
+HRESULT WINAPI GetThemeColor(HTHEME,int,int,int,COLORREF*);
+
+#define SZ_THDOCPROP_DISPLAYNAME   L"DisplayName"
+#define SZ_THDOCPROP_CANONICALNAME L"ThemeName"
+#define SZ_THDOCPROP_TOOLTIP       L"ToolTip"
+#define SZ_THDOCPROP_AUTHOR        L"author"
+
+HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR,LPCWSTR,LPWSTR,int);
+HRESULT WINAPI GetThemeEnumValue(HTHEME,int,int,int,int*);
+HRESULT WINAPI GetThemeFilename(HTHEME,int,int,int,LPWSTR,int);
+HRESULT WINAPI GetThemeFont(HTHEME,HDC,int,int,int,LOGFONTW*);
+HRESULT WINAPI GetThemeInt(HTHEME,int,int,int,int*);
+
+#define MAX_INTLIST_COUNT 10
+typedef struct _INTLIST {
+    int iValueCount;
+    int iValues[MAX_INTLIST_COUNT];
+} INTLIST, *PINTLIST;
+
+HRESULT WINAPI GetThemeIntList(HTHEME,int,int,int,INTLIST*);
+
+typedef struct _MARGINS {
+    int cxLeftWidth;
+    int cxRightWidth;
+    int cyTopHeight;
+    int cyBottomHeight;
+} MARGINS, *PMARGINS;
+
+HRESULT WINAPI GetThemeMargins(HTHEME,HDC,int,int,int,RECT*,MARGINS*);
+HRESULT WINAPI GetThemeMetric(HTHEME,HDC,int,int,int,int*);
+
+typedef enum {
+    TS_MIN,
+    TS_TRUE,
+    TS_DRAW
+} THEMESIZE;
+
+HRESULT WINAPI GetThemePartSize(HTHEME,HDC,int,int,RECT*,THEMESIZE,SIZE*);
+HRESULT WINAPI GetThemePosition(HTHEME,int,int,int,POINT*);
+
+typedef enum {
+    PO_STATE,
+    PO_PART,
+    PO_CLASS,
+    PO_GLOBAL,
+    PO_NOTFOUND
+} PROPERTYORIGIN;
+
+HRESULT WINAPI GetThemePropertyOrigin(HTHEME,int,int,int,PROPERTYORIGIN*);
+HRESULT WINAPI GetThemeRect(HTHEME,int,int,int,RECT*);
+HRESULT WINAPI GetThemeString(HTHEME,int,int,int,LPWSTR,int);
+BOOL WINAPI GetThemeSysBool(HTHEME,int);
+COLORREF WINAPI GetThemeSysColor(HTHEME,int);
+HBRUSH WINAPI GetThemeSysColorBrush(HTHEME,int);
+HRESULT WINAPI GetThemeSysFont(HTHEME,int,LOGFONTW*);
+HRESULT WINAPI GetThemeSysInt(HTHEME,int,int*);
+int WINAPI GetThemeSysSize(HTHEME,int);
+HRESULT WINAPI GetThemeSysString(HTHEME,int,LPWSTR,int);
+HRESULT WINAPI GetThemeTextExtent(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,
+                                  const RECT*,RECT*);
+HRESULT WINAPI GetThemeTextMetrics(HTHEME,HDC,int,int,TEXTMETRICW*);
+HTHEME WINAPI GetWindowTheme(HWND);
+
+#define HTTB_BACKGROUNDSEG          0x0000
+#define HTTB_FIXEDBORDER            0x0002
+#define HTTB_CAPTION                0x0004
+#define HTTB_RESIZINGBORDER_LEFT    0x0010
+#define HTTB_RESIZINGBORDER_TOP     0x0020
+#define HTTB_RESIZINGBORDER_RIGHT   0x0040
+#define HTTB_RESIZINGBORDER_BOTTOM  0x0080
+#define HTTB_RESIZINGBORDER \
+    (HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP|\
+     HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM)
+#define HTTB_SIZINGTEMPLATE         0x0100
+#define HTTB_SYSTEMSIZINGMARGINS    0x0200
+
+HRESULT WINAPI HitTestThemeBackground(HTHEME,HDC,int,int,DWORD,const RECT*,
+                                      HRGN,POINT,WORD*);
+BOOL WINAPI IsAppThemed();
+BOOL WINAPI IsThemeActive();
+BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME,int,int);
+BOOL WINAPI IsThemeDialogTextureEnabled();
+BOOL WINAPI IsThemePartDefined(HTHEME,int,int);
+HTHEME WINAPI OpenThemeData(HWND,LPCWSTR);
+void WINAPI SetThemeAppProperties(DWORD);
+HRESULT WINAPI SetWindowTheme(HWND,LPCWSTR,LPCWSTR);
+
+
+#endif
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/.cvsignore	2003-10-03 12:50:09.000000000 -0400
@@ -0,0 +1,5 @@
+Makefile
+uxtheme.spec.c
+uxtheme.dll.dbg.c
+uxtheme.spec.c
+uxtheme.spec.def
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/Makefile.in	2003-10-02 23:25:14.000000000 -0400
@@ -0,0 +1,17 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = uxtheme.dll
+IMPORTS   = gdi32 user32 advapi32 kernel32 ntdll
+EXTRALIBS = $(LIBUNICODE)
+
+LDDLLFLAGS = @LDDLLFLAGS@
+SYMBOLFILE = $(MODULE).tmp.o
+
+C_SRCS = \
+	main.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/main.c	2003-10-03 11:39:56.000000000 -0400
@@ -0,0 +1,79 @@
+/*
+ * Win32 5.1 Themes
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * 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
+ */
+		  
+#include "config.h"
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "uxtheme.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
+
+/* For the moment, do nothing here. */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
+{
+    switch(fdwReason) {
+        case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
+	    break;
+	case DLL_PROCESS_DETACH:
+	    break;
+    }
+    return TRUE;
+}
+
+BOOL WINAPI IsAppThemed() {
+    FIXME("\n");
+    return FALSE;
+}
+
+BOOL WINAPI IsThemeActive() {
+    FIXME("\n");
+    return FALSE;
+}
+
+HRESULT WINAPI EnableThemeDialogTexture(HWND hwnd, DWORD dwFlags) {
+    FIXME("%p 0x%081x\n", hwnd, dwFlags);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+HRESULT WINAPI EnableTheming(BOOL fEnable) {
+    FIXME("%d\n", fEnable);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR pszClassList) {
+    FIXME("%p %s\n", hwnd, debugstr_w(pszClassList));
+    return NULL;
+}
+
+HRESULT WINAPI SetWindowTheme(HWND hwnd, LPCWSTR pszSubAppName,
+                              LPCWSTR pszSubIdList) {
+    FIXME("%p %s %s\n", hwnd, debugstr_w(pszSubAppName),
+          debugstr_w(pszSubIdList));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/uxtheme.spec	2003-10-03 11:53:17.000000000 -0400
@@ -0,0 +1,49 @@
+
+@ stub CloseThemeData
+@ stub DrawThemeBackground
+@ stub DrawThemeBackgroundEx
+@ stub DrawThemeEdge
+@ stub DrawThemeIcon
+@ stub DrawThemeParentBackground
+@ stub DrawThemeText
+@ stdcall EnableThemeDialogTexture(ptr long)
+@ stdcall EnableTheming(long)
+@ stub GetCurrentThemeName
+@ stub GetThemeAppProperties
+@ stub GetThemeBackgroundContentRect
+@ stub GetThemeBackgroundExtent
+@ stub GetThemeBackgroundRegion
+@ stub GetThemeBool
+@ stub GetThemeColor
+@ stub GetThemeDocumentationProperty
+@ stub GetThemeEnumValue
+@ stub GetThemeFilename
+@ stub GetThemeFont
+@ stub GetThemeInt
+@ stub GetThemeIntList
+@ stub GetThemeMargins
+@ stub GetThemeMetric
+@ stub GetThemePartSize
+@ stub GetThemePosition
+@ stub GetThemePropertyOrigin
+@ stub GetThemeRect
+@ stub GetThemeString
+@ stub GetThemeSysBool
+@ stub GetThemeSysColor
+@ stub GetThemeSysColorBrush
+@ stub GetThemeSysFont
+@ stub GetThemeSysInt
+@ stub GetThemeSysSize
+@ stub GetThemeSysString
+@ stub GetThemeTextExtent
+@ stub GetThemeTextMetrics
+@ stub GetWindowTheme
+@ stub HitTestThemeBackground
+@ stdcall IsAppThemed()
+@ stdcall IsThemeActive()
+@ stub IsThemeBackgroundPartiallyTransparent
+@ stub IsThemeDialogTextureEnabled
+@ stub IsThemePartDefined
+@ stdcall OpenThemeData(ptr wstr)
+@ stub SetThemeAppProperties
+@ stdcall SetWindowTheme(ptr wstr wstr)

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux