mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
- Sync uxtheme with wine head
svn path=/trunk/; revision=37303
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* uxtheme Double-buffered Drawing API
|
||||
*
|
||||
* Copyright (C) 2008 Reece H. Dunn
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winuser.h"
|
||||
#include "wingdi.h"
|
||||
#include "vfwmsgs.h"
|
||||
#include "uxtheme.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
|
||||
|
||||
/***********************************************************************
|
||||
* BufferedPaintInit (UXTHEME.@)
|
||||
*/
|
||||
HRESULT WINAPI BufferedPaintInit(VOID)
|
||||
{
|
||||
FIXME("Stub ()\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* BufferedPaintUnInit (UXTHEME.@)
|
||||
*/
|
||||
HRESULT WINAPI BufferedPaintUnInit(VOID)
|
||||
{
|
||||
FIXME("Stub ()\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* BeginBufferedPaint (UXTHEME.@)
|
||||
*/
|
||||
HPAINTBUFFER WINAPI BeginBufferedPaint(HDC hdcTarget,
|
||||
const RECT * prcTarget,
|
||||
BP_BUFFERFORMAT dwFormat,
|
||||
BP_PAINTPARAMS *pPaintParams,
|
||||
HDC *phdc)
|
||||
{
|
||||
FIXME("Stub (%p %p %d %p %p)\n", hdcTarget, prcTarget, dwFormat,
|
||||
pPaintParams, phdc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* EndBufferedPaint (UXTHEME.@)
|
||||
*/
|
||||
HRESULT WINAPI EndBufferedPaint(HPAINTBUFFER hPaintBuffer, BOOL fUpdateTarget)
|
||||
{
|
||||
FIXME("Stub (%p %d)\n", hPaintBuffer, fUpdateTarget);
|
||||
return S_OK;
|
||||
}
|
||||
@@ -52,19 +52,18 @@ extern ATOM atDialogThemeEnabled;
|
||||
HRESULT WINAPI EnableThemeDialogTexture(HWND hwnd, DWORD dwFlags)
|
||||
{
|
||||
static const WCHAR szTab[] = { 'T','a','b',0 };
|
||||
HRESULT hr;
|
||||
BOOL res;
|
||||
|
||||
TRACE("(%p,0x%08x\n", hwnd, dwFlags);
|
||||
hr = SetPropW (hwnd, (LPCWSTR)MAKEINTATOM(atDialogThemeEnabled),
|
||||
res = SetPropW (hwnd, (LPCWSTR)MAKEINTATOM(atDialogThemeEnabled),
|
||||
(HANDLE)(dwFlags|0x80000000));
|
||||
/* 0x80000000 serves as a "flags set" flag */
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
if (!res)
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
if (dwFlags & ETDT_USETABTEXTURE)
|
||||
return SetWindowTheme (hwnd, NULL, szTab);
|
||||
else
|
||||
return SetWindowTheme (hwnd, NULL, NULL);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@@ -1178,8 +1177,8 @@ static HRESULT draw_diag_edge (HDC hdc, HTHEME theme, int part, int state,
|
||||
+ (LTRBOuterMono[uType & (BDR_INNER|BDR_OUTER)] != -1 ? 1 : 0);
|
||||
|
||||
/* Init some vars */
|
||||
OuterPen = InnerPen = (HPEN)GetStockObject(NULL_PEN);
|
||||
SavePen = (HPEN)SelectObject(hdc, InnerPen);
|
||||
OuterPen = InnerPen = GetStockObject(NULL_PEN);
|
||||
SavePen = SelectObject(hdc, InnerPen);
|
||||
spx = spy = epx = epy = 0; /* Satisfy the compiler... */
|
||||
|
||||
/* Determine the colors of the edges */
|
||||
@@ -1374,8 +1373,8 @@ static HRESULT draw_diag_edge (HDC hdc, HTHEME theme, int part, int state,
|
||||
HPEN hpsave;
|
||||
HPEN hp = get_edge_pen ((uFlags & BF_MONO) ? EDGE_WINDOW : EDGE_FILL,
|
||||
theme, part, state);
|
||||
hbsave = (HBRUSH)SelectObject(hdc, hb);
|
||||
hpsave = (HPEN)SelectObject(hdc, hp);
|
||||
hbsave = SelectObject(hdc, hb);
|
||||
hpsave = SelectObject(hdc, hp);
|
||||
Polygon(hdc, Points, 4);
|
||||
SelectObject(hdc, hbsave);
|
||||
SelectObject(hdc, hpsave);
|
||||
@@ -1427,8 +1426,8 @@ static HRESULT draw_rect_edge (HDC hdc, HTHEME theme, int part, int state,
|
||||
&& !(uFlags & (BF_FLAT|BF_MONO)) ) ? E_FAIL : S_OK;
|
||||
|
||||
/* Init some vars */
|
||||
LTInnerPen = LTOuterPen = RBInnerPen = RBOuterPen = (HPEN)GetStockObject(NULL_PEN);
|
||||
SavePen = (HPEN)SelectObject(hdc, LTInnerPen);
|
||||
LTInnerPen = LTOuterPen = RBInnerPen = RBOuterPen = GetStockObject(NULL_PEN);
|
||||
SavePen = SelectObject(hdc, LTInnerPen);
|
||||
|
||||
/* Determine the colors of the edges */
|
||||
if(uFlags & BF_MONO)
|
||||
|
||||
@@ -132,14 +132,14 @@ HRESULT MSSTYLES_OpenThemeFile(LPCWSTR lpThemeFile, LPCWSTR pszColorName, LPCWST
|
||||
hr = HRESULT_FROM_WIN32(ERROR_BAD_FORMAT);
|
||||
goto invalid_theme;
|
||||
}
|
||||
pszColors = (LPWSTR)LoadResource(hTheme, hrsc);
|
||||
pszColors = LoadResource(hTheme, hrsc);
|
||||
|
||||
if(!(hrsc = FindResourceW(hTheme, MAKEINTRESOURCEW(1), szSizeNamesResource))) {
|
||||
TRACE("Size names resource not found\n");
|
||||
hr = HRESULT_FROM_WIN32(ERROR_BAD_FORMAT);
|
||||
goto invalid_theme;
|
||||
}
|
||||
pszSizes = (LPWSTR)LoadResource(hTheme, hrsc);
|
||||
pszSizes = LoadResource(hTheme, hrsc);
|
||||
|
||||
/* Validate requested color against what's available from the theme */
|
||||
if(pszColorName) {
|
||||
@@ -298,7 +298,7 @@ static PUXINI_FILE MSSTYLES_GetActiveThemeIni(PTHEME_FILE tf)
|
||||
TRACE("FILERESNAMES map not found\n");
|
||||
return NULL;
|
||||
}
|
||||
tmp = (LPWSTR)LoadResource(tf->hTheme, hrsc);
|
||||
tmp = LoadResource(tf->hTheme, hrsc);
|
||||
dwResourceIndex = (dwSizeCount * dwColorNum) + dwSizeNum;
|
||||
for(i=0; i < dwResourceIndex; i++) {
|
||||
tmp += lstrlenW(tmp)+1;
|
||||
|
||||
@@ -122,7 +122,7 @@ static DWORD query_reg_path (HKEY hKey, LPCWSTR lpszValue,
|
||||
WCHAR cNull = '\0';
|
||||
nBytesToAlloc = dwUnExpDataLen;
|
||||
|
||||
szData = (LPWSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
RegQueryValueExW (hKey, lpszValue, 0, NULL, (LPBYTE)szData, &nBytesToAlloc);
|
||||
dwExpDataLen = ExpandEnvironmentStringsW(szData, &cNull, 1);
|
||||
dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen);
|
||||
@@ -131,7 +131,7 @@ static DWORD query_reg_path (HKEY hKey, LPCWSTR lpszValue,
|
||||
else
|
||||
{
|
||||
nBytesToAlloc = (lstrlenW(pvData) + 1) * sizeof(WCHAR);
|
||||
szData = (LPWSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc );
|
||||
szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc );
|
||||
lstrcpyW(szData, pvData);
|
||||
dwExpDataLen = ExpandEnvironmentStringsW(szData, pvData, MAX_PATH );
|
||||
if (dwExpDataLen > MAX_PATH) dwRet = ERROR_MORE_DATA;
|
||||
@@ -566,6 +566,7 @@ BOOL WINAPI IsAppThemed(void)
|
||||
BOOL WINAPI IsThemeActive(void)
|
||||
{
|
||||
TRACE("\n");
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
return bThemeActive;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ PUXINI_FILE UXINI_LoadINI(HMODULE hTheme, LPCWSTR lpName) {
|
||||
TRACE("Loading resource INI %s\n", debugstr_w(lpName));
|
||||
|
||||
if((hrsc = FindResourceW(hTheme, lpName, szTextFileResource))) {
|
||||
if(!(lpThemesIni = (LPCWSTR)LoadResource(hTheme, hrsc))) {
|
||||
if(!(lpThemesIni = LoadResource(hTheme, hrsc))) {
|
||||
TRACE("%s resource not found\n", debugstr_w(lpName));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<include base="uxtheme">.</include>
|
||||
<include base="ReactOS">include/reactos/wine</include>
|
||||
<define name="__WINESRC__" />
|
||||
<file>buffer.c</file>
|
||||
<file>draw.c</file>
|
||||
<file>main.c</file>
|
||||
<file>metric.c</file>
|
||||
|
||||
@@ -43,6 +43,9 @@
|
||||
63 stub -noname MarkSelection
|
||||
|
||||
# Standard functions
|
||||
@ stdcall BeginBufferedPaint(ptr ptr long ptr ptr)
|
||||
@ stdcall BufferedPaintInit()
|
||||
@ stdcall BufferedPaintUnInit()
|
||||
@ stdcall CloseThemeData(ptr)
|
||||
@ stdcall DrawThemeBackground(ptr ptr long long ptr ptr)
|
||||
@ stdcall DrawThemeBackgroundEx(ptr ptr long long ptr ptr)
|
||||
@@ -52,6 +55,7 @@
|
||||
@ stdcall DrawThemeText(ptr ptr long long wstr long long long ptr)
|
||||
@ stdcall EnableThemeDialogTexture(ptr long)
|
||||
@ stdcall EnableTheming(long)
|
||||
@ stdcall EndBufferedPaint(ptr long)
|
||||
@ stdcall GetCurrentThemeName(wstr long wstr long wstr long)
|
||||
@ stdcall GetThemeAppProperties()
|
||||
@ stdcall GetThemeBackgroundContentRect(ptr ptr long long ptr ptr)
|
||||
|
||||
@@ -11,60 +11,83 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
#define DTBG_CLIPRECT 0x00000001
|
||||
#define DTBG_DRAWSOLID 0x00000002
|
||||
#define DTBG_OMITBORDER 0x00000004
|
||||
#define DTBG_OMITCONTENT 0x00000008
|
||||
#define DTBG_COMPUTINGREGION 0x00000010
|
||||
#define DTBG_MIRRORDC 0x00000020
|
||||
#define DTT_GRAYED 0x00000001
|
||||
#define ETDT_DISABLE 0x00000001
|
||||
#define ETDT_ENABLE 0x00000002
|
||||
#define ETDT_USETABTEXTURE 0x00000004
|
||||
#define ETDT_ENABLETAB (ETDT_ENABLE|ETDT_USETABTEXTURE)
|
||||
#define STAP_ALLOW_NONCLIENT 0x00000001
|
||||
#define STAP_ALLOW_CONTROLS 0x00000002
|
||||
#define STAP_ALLOW_WEBCONTENT 0x00000004
|
||||
#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
|
||||
#define DTBG_CLIPRECT 0x00000001
|
||||
#define DTBG_DRAWSOLID 0x00000002
|
||||
#define DTBG_OMITBORDER 0x00000004
|
||||
#define DTBG_OMITCONTENT 0x00000008
|
||||
#define DTBG_COMPUTINGREGION 0x00000010
|
||||
#define DTBG_MIRRORDC 0x00000020
|
||||
#define DTT_GRAYED 0x00000001
|
||||
#define ETDT_DISABLE 0x00000001
|
||||
#define ETDT_ENABLE 0x00000002
|
||||
#define ETDT_USETABTEXTURE 0x00000004
|
||||
#define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE)
|
||||
#define STAP_ALLOW_NONCLIENT 0x00000001
|
||||
#define STAP_ALLOW_CONTROLS 0x00000002
|
||||
#define STAP_ALLOW_WEBCONTENT 0x00000004
|
||||
#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
|
||||
|
||||
typedef HANDLE HPAINTBUFFER;
|
||||
typedef HANDLE HTHEME;
|
||||
|
||||
typedef enum _BP_BUFFERFORMAT
|
||||
{
|
||||
BPBF_COMPATIBLEBITMAP,
|
||||
BPBF_DIB,
|
||||
BPBF_TOPDOWNDIB,
|
||||
BPBF_TOPDOWNMONODIB
|
||||
} BP_BUFFERFORMAT;
|
||||
|
||||
typedef struct _BP_PAINTPARAMS
|
||||
{
|
||||
DWORD cbSize;
|
||||
DWORD dwFlags;
|
||||
const RECT *prcExclude;
|
||||
const BLENDFUNCTION *pBlendFunction;
|
||||
} BP_PAINTPARAMS, *PBP_PAINTPARAMS;
|
||||
|
||||
typedef enum PROPERTYORIGIN {
|
||||
PO_STATE = 0,
|
||||
PO_PART = 1,
|
||||
PO_CLASS = 2,
|
||||
PO_GLOBAL = 3,
|
||||
PO_NOTFOUND = 4
|
||||
PO_STATE = 0,
|
||||
PO_PART = 1,
|
||||
PO_CLASS = 2,
|
||||
PO_GLOBAL = 3,
|
||||
PO_NOTFOUND = 4
|
||||
} PROPERTYORIGIN;
|
||||
|
||||
typedef enum THEMESIZE {
|
||||
TS_MIN,
|
||||
TS_TRUE,
|
||||
TS_DRAW
|
||||
TS_MIN,
|
||||
TS_TRUE,
|
||||
TS_DRAW
|
||||
} THEMESIZE;
|
||||
|
||||
typedef struct _DTBGOPTS {
|
||||
DWORD dwSize;
|
||||
DWORD dwFlags;
|
||||
RECT rcClip;
|
||||
DWORD dwSize;
|
||||
DWORD dwFlags;
|
||||
RECT rcClip;
|
||||
} DTBGOPTS, *PDTBGOPTS;
|
||||
|
||||
#define MAX_INTLIST_COUNT 10
|
||||
|
||||
typedef struct _INTLIST {
|
||||
int iValueCount;
|
||||
int iValues[MAX_INTLIST_COUNT];
|
||||
int iValueCount;
|
||||
int iValues[MAX_INTLIST_COUNT];
|
||||
} INTLIST, *PINTLIST;
|
||||
|
||||
typedef struct _MARGINS {
|
||||
int cxLeftWidth;
|
||||
int cxRightWidth;
|
||||
int cyTopHeight;
|
||||
int cyBottomHeight;
|
||||
int cxLeftWidth;
|
||||
int cxRightWidth;
|
||||
int cyTopHeight;
|
||||
int cyBottomHeight;
|
||||
} MARGINS, *PMARGINS;
|
||||
typedef HANDLE HTHEME;
|
||||
|
||||
HRESULT WINAPI CloseThemeData(HTHEME);
|
||||
HRESULT WINAPI DrawThemeBackground(HTHEME,HDC,int,int,const RECT*,const RECT*);
|
||||
|
||||
Reference in New Issue
Block a user