uxtheme: Implement DrawThemeIcon().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51589 Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6db55005c7
commit
ea430bf2b7
|
@ -2,6 +2,7 @@
|
||||||
* Win32 5.1 Theme drawing
|
* Win32 5.1 Theme drawing
|
||||||
*
|
*
|
||||||
* Copyright (C) 2003 Kevin Koltzau
|
* Copyright (C) 2003 Kevin Koltzau
|
||||||
|
* Copyright 2021 Zhiyi Zhang for CodeWeavers
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -18,6 +19,8 @@
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define COBJMACROS
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
@ -25,6 +28,8 @@
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "wingdi.h"
|
#include "wingdi.h"
|
||||||
|
#include "commctrl.h"
|
||||||
|
#include "commoncontrols.h"
|
||||||
#include "vfwmsgs.h"
|
#include "vfwmsgs.h"
|
||||||
#include "uxtheme.h"
|
#include "uxtheme.h"
|
||||||
#include "tmschema.h"
|
#include "tmschema.h"
|
||||||
|
@ -1649,10 +1654,57 @@ HRESULT WINAPI DrawThemeEdge(HTHEME hTheme, HDC hdc, int iPartId,
|
||||||
HRESULT WINAPI DrawThemeIcon(HTHEME hTheme, HDC hdc, int iPartId, int iStateId,
|
HRESULT WINAPI DrawThemeIcon(HTHEME hTheme, HDC hdc, int iPartId, int iStateId,
|
||||||
const RECT *pRect, HIMAGELIST himl, int iImageIndex)
|
const RECT *pRect, HIMAGELIST himl, int iImageIndex)
|
||||||
{
|
{
|
||||||
FIXME("%d %d: stub\n", iPartId, iStateId);
|
INT effect = ICE_NONE, saturation = 0, alpha = 128;
|
||||||
if(!hTheme)
|
IImageList *image_list = (IImageList *)himl;
|
||||||
|
IMAGELISTDRAWPARAMS params = {0};
|
||||||
|
COLORREF color = 0;
|
||||||
|
|
||||||
|
TRACE("%p %p %d %d %s %p %d\n", hTheme, hdc, iPartId, iStateId, wine_dbgstr_rect(pRect), himl,
|
||||||
|
iImageIndex);
|
||||||
|
|
||||||
|
if (!hTheme)
|
||||||
return E_HANDLE;
|
return E_HANDLE;
|
||||||
return E_NOTIMPL;
|
|
||||||
|
GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_ICONEFFECT, &effect);
|
||||||
|
switch (effect)
|
||||||
|
{
|
||||||
|
case ICE_NONE:
|
||||||
|
params.fState = ILS_NORMAL;
|
||||||
|
break;
|
||||||
|
case ICE_GLOW:
|
||||||
|
GetThemeColor(hTheme, iPartId, iStateId, TMT_GLOWCOLOR, &color);
|
||||||
|
params.fState = ILS_GLOW;
|
||||||
|
params.crEffect = color;
|
||||||
|
break;
|
||||||
|
case ICE_SHADOW:
|
||||||
|
GetThemeColor(hTheme, iPartId, iStateId, TMT_SHADOWCOLOR, &color);
|
||||||
|
params.fState = ILS_SHADOW;
|
||||||
|
params.crEffect = color;
|
||||||
|
break;
|
||||||
|
case ICE_PULSE:
|
||||||
|
GetThemeInt(hTheme, iPartId, iStateId, TMT_SATURATION, &saturation);
|
||||||
|
params.fState = ILS_SATURATE;
|
||||||
|
params.Frame = saturation;
|
||||||
|
break;
|
||||||
|
case ICE_ALPHA:
|
||||||
|
GetThemeInt(hTheme, iPartId, iStateId, TMT_ALPHALEVEL, &alpha);
|
||||||
|
params.fState = ILS_ALPHA;
|
||||||
|
params.Frame = alpha;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
params.cbSize = sizeof(params);
|
||||||
|
params.himl = himl;
|
||||||
|
params.i = iImageIndex;
|
||||||
|
params.hdcDst = hdc;
|
||||||
|
params.x = pRect->left;
|
||||||
|
params.y = pRect->top;
|
||||||
|
params.cx = pRect->right - pRect->left;
|
||||||
|
params.cy = pRect->bottom - pRect->top;
|
||||||
|
params.rgbBk = CLR_NONE;
|
||||||
|
params.rgbFg = CLR_NONE;
|
||||||
|
params.fStyle = ILD_TRANSPARENT;
|
||||||
|
return IImageList_Draw(image_list, ¶ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
Loading…
Reference in New Issue