uxtheme: Use bsearch and CompareStringOrdinal in MSSTYLES_LookupProperty.

This commit is contained in:
Rémi Bernon 2022-12-09 09:39:45 +01:00 committed by Alexandre Julliard
parent 2e37a51b8f
commit ae0891eb64

View file

@ -20,9 +20,11 @@
*/ */
#include <stdarg.h> #include <stdarg.h>
#include <stdlib.h>
#include "windef.h" #include "windef.h"
#include "winbase.h" #include "winbase.h"
#include "winnls.h"
#include "winuser.h" #include "winuser.h"
#include "vssym32.h" #include "vssym32.h"
@ -30,9 +32,9 @@
#define TMT_STOCKIMAGEFILE 3007 #define TMT_STOCKIMAGEFILE 3007
typedef struct _MSSTYLES_PROPERTY_MAP { typedef struct _MSSTYLES_PROPERTY_MAP {
WCHAR szPropertyName[24];
WORD dwPrimitiveType; WORD dwPrimitiveType;
WORD dwPropertyID; WORD dwPropertyID;
WCHAR szPropertyName[24];
} MSSTYLES_PROPERTY_MAP, *PMSSTYLES_PROPERTY_MAP; } MSSTYLES_PROPERTY_MAP, *PMSSTYLES_PROPERTY_MAP;
typedef struct _MSSTYLES_ENUM_MAP { typedef struct _MSSTYLES_ENUM_MAP {
@ -55,211 +57,212 @@ typedef struct _MSSTYLES_CLASS_NAME {
/*********************************************************************** /***********************************************************************
* Map property names to IDs & primitive types * Map property names to IDs & primitive types
* PrimitiveType,PropertyID,PropertyName * PrimitiveType,PropertyID,PropertyName
*
* NOTE: Keep this sorted, we use bsearch to lookup properties.
*/ */
static const MSSTYLES_PROPERTY_MAP mapProperty[] = { static const MSSTYLES_PROPERTY_MAP mapProperty[] = {
{TMT_STRING, TMT_STRING, L"STRING"}, {L"ACCENTCOLORHINT", TMT_COLOR, TMT_ACCENTCOLORHINT},
{TMT_INT, TMT_INT, L"INT"}, {L"ACTIVEBORDER", TMT_COLOR, TMT_ACTIVEBORDER},
{TMT_BOOL, TMT_BOOL, L"BOOL"}, {L"ACTIVECAPTION", TMT_COLOR, TMT_ACTIVECAPTION},
{TMT_COLOR, TMT_COLOR, L"COLOR"}, {L"ALPHALEVEL", TMT_INT, TMT_ALPHALEVEL},
{TMT_MARGINS, TMT_MARGINS, L"MARGINS"}, {L"ALPHATHRESHOLD", TMT_INT, TMT_ALPHATHRESHOLD},
{TMT_FILENAME, TMT_FILENAME, L"FILENAME"}, {L"ALWAYSSHOWSIZINGBAR", TMT_BOOL, TMT_ALWAYSSHOWSIZINGBAR},
{TMT_SIZE, TMT_SIZE, L"SIZE"}, {L"APPWORKSPACE", TMT_COLOR, TMT_APPWORKSPACE},
{TMT_POSITION, TMT_POSITION, L"POSITION"}, {L"AUTHOR", TMT_STRING, TMT_AUTHOR},
{TMT_RECT, TMT_RECT, L"RECT"}, {L"AUTOSIZE", TMT_BOOL, TMT_AUTOSIZE},
{TMT_FONT, TMT_FONT, L"FONT"}, {L"BACKGROUND", TMT_COLOR, TMT_BACKGROUND},
{TMT_INTLIST, TMT_INTLIST, L"INTLIST"}, {L"BGFILL", TMT_BOOL, TMT_BGFILL},
{TMT_STRING, TMT_COLORSCHEMES, L"COLORSCHEMES"}, {L"BGTYPE", TMT_ENUM, TMT_BGTYPE},
{TMT_STRING, TMT_SIZES, L"SIZES"}, {L"BLENDCOLOR", TMT_COLOR, TMT_BLENDCOLOR},
{TMT_INT, TMT_CHARSET, L"CHARSET"}, {L"BODYFONT", TMT_FONT, TMT_BODYFONT},
{TMT_STRING, TMT_DISPLAYNAME, L"DISPLAYNAME"}, {L"BOOL", TMT_BOOL, TMT_BOOL},
{TMT_STRING, TMT_TOOLTIP, L"TOOLTIP"}, {L"BORDERCOLOR", TMT_COLOR, TMT_BORDERCOLOR},
{TMT_STRING, TMT_COMPANY, L"COMPANY"}, {L"BORDERCOLORHINT", TMT_COLOR, TMT_BORDERCOLORHINT},
{TMT_STRING, TMT_AUTHOR, L"AUTHOR"}, {L"BORDERONLY", TMT_BOOL, TMT_BORDERONLY},
{TMT_STRING, TMT_COPYRIGHT, L"COPYRIGHT"}, {L"BORDERSIZE", TMT_INT, TMT_BORDERSIZE},
{TMT_STRING, TMT_URL, L"URL"}, {L"BORDERTYPE", TMT_ENUM, TMT_BORDERTYPE},
{TMT_STRING, TMT_VERSION, L"VERSION"}, {L"BTNFACE", TMT_COLOR, TMT_BTNFACE},
{TMT_STRING, TMT_DESCRIPTION, L"DESCRIPTION"}, {L"BTNHIGHLIGHT", TMT_COLOR, TMT_BTNHIGHLIGHT},
{TMT_FONT, TMT_CAPTIONFONT, L"CAPTIONFONT"}, {L"BTNSHADOW", TMT_COLOR, TMT_BTNSHADOW},
{TMT_FONT, TMT_SMALLCAPTIONFONT, L"SMALLCAPTIONFONT"}, {L"BTNTEXT", TMT_COLOR, TMT_BTNTEXT},
{TMT_FONT, TMT_MENUFONT, L"MENUFONT"}, {L"BUTTONALTERNATEFACE", TMT_COLOR, TMT_BUTTONALTERNATEFACE},
{TMT_FONT, TMT_STATUSFONT, L"STATUSFONT"}, {L"CAPTIONBARHEIGHT", TMT_SIZE, TMT_CAPTIONBARHEIGHT},
{TMT_FONT, TMT_MSGBOXFONT, L"MSGBOXFONT"}, {L"CAPTIONBARWIDTH", TMT_SIZE, TMT_CAPTIONBARWIDTH},
{TMT_FONT, TMT_ICONTITLEFONT, L"ICONTITLEFONT"}, {L"CAPTIONFONT", TMT_FONT, TMT_CAPTIONFONT},
{TMT_FONT, TMT_HEADING1FONT, L"HEADING1FONT"}, {L"CAPTIONMARGINS", TMT_MARGINS, TMT_CAPTIONMARGINS},
{TMT_FONT, TMT_HEADING2FONT, L"HEADING2FONT"}, {L"CAPTIONTEXT", TMT_COLOR, TMT_CAPTIONTEXT},
{TMT_FONT, TMT_BODYFONT, L"BODYFONT"}, {L"CHARSET", TMT_INT, TMT_CHARSET},
{TMT_BOOL, TMT_FLATMENUS, L"FLATMENUS"}, {L"COLOR", TMT_COLOR, TMT_COLOR},
{TMT_SIZE, TMT_SIZINGBORDERWIDTH, L"SIZINGBORDERWIDTH"}, {L"COLORSCHEMES", TMT_STRING, TMT_COLORSCHEMES},
{TMT_SIZE, TMT_SCROLLBARWIDTH, L"SCROLLBARWIDTH"}, {L"COMPANY", TMT_STRING, TMT_COMPANY},
{TMT_SIZE, TMT_SCROLLBARHEIGHT, L"SCROLLBARHEIGHT"}, {L"COMPOSITED", TMT_BOOL, TMT_COMPOSITED},
{TMT_SIZE, TMT_CAPTIONBARWIDTH, L"CAPTIONBARWIDTH"}, {L"CONTENTALIGNMENT", TMT_ENUM, TMT_CONTENTALIGNMENT},
{TMT_SIZE, TMT_CAPTIONBARHEIGHT, L"CAPTIONBARHEIGHT"}, {L"CONTENTMARGINS", TMT_MARGINS, TMT_CONTENTMARGINS},
{TMT_SIZE, TMT_SMCAPTIONBARWIDTH, L"SMCAPTIONBARWIDTH"}, {L"COPYRIGHT", TMT_STRING, TMT_COPYRIGHT},
{TMT_SIZE, TMT_SMCAPTIONBARHEIGHT, L"SMCAPTIONBARHEIGHT"}, {L"CSSNAME", TMT_STRING, TMT_CSSNAME},
{TMT_SIZE, TMT_MENUBARWIDTH, L"MENUBARWIDTH"}, {L"DEFAULTPANESIZE", TMT_RECT, TMT_DEFAULTPANESIZE},
{TMT_SIZE, TMT_MENUBARHEIGHT, L"MENUBARHEIGHT"}, {L"DESCRIPTION", TMT_STRING, TMT_DESCRIPTION},
{TMT_INT, TMT_MINCOLORDEPTH, L"MINCOLORDEPTH"}, {L"DISPLAYNAME", TMT_STRING, TMT_DISPLAYNAME},
{TMT_STRING, TMT_CSSNAME, L"CSSNAME"}, {L"DKSHADOW3D", TMT_COLOR, TMT_DKSHADOW3D},
{TMT_STRING, TMT_XMLNAME, L"XMLNAME"}, {L"EDGEDKSHADOWCOLOR", TMT_COLOR, TMT_EDGEDKSHADOWCOLOR},
{TMT_COLOR, TMT_SCROLLBAR, L"SCROLLBAR"}, {L"EDGEFILLCOLOR", TMT_COLOR, TMT_EDGEFILLCOLOR},
{TMT_COLOR, TMT_BACKGROUND, L"BACKGROUND"}, {L"EDGEHIGHLIGHTCOLOR", TMT_COLOR, TMT_EDGEHIGHLIGHTCOLOR},
{TMT_COLOR, TMT_ACTIVECAPTION, L"ACTIVECAPTION"}, {L"EDGELIGHTCOLOR", TMT_COLOR, TMT_EDGELIGHTCOLOR},
{TMT_COLOR, TMT_INACTIVECAPTION, L"INACTIVECAPTION"}, {L"EDGESHADOWCOLOR", TMT_COLOR, TMT_EDGESHADOWCOLOR},
{TMT_COLOR, TMT_MENU, L"MENU"}, {L"FILENAME", TMT_FILENAME, TMT_FILENAME},
{TMT_COLOR, TMT_WINDOW, L"WINDOW"}, {L"FILLCOLOR", TMT_COLOR, TMT_FILLCOLOR},
{TMT_COLOR, TMT_WINDOWFRAME, L"WINDOWFRAME"}, {L"FILLCOLORHINT", TMT_COLOR, TMT_FILLCOLORHINT},
{TMT_COLOR, TMT_MENUTEXT, L"MENUTEXT"}, {L"FILLTYPE", TMT_ENUM, TMT_FILLTYPE},
{TMT_COLOR, TMT_WINDOWTEXT, L"WINDOWTEXT"}, {L"FLATMENUS", TMT_BOOL, TMT_FLATMENUS},
{TMT_COLOR, TMT_CAPTIONTEXT, L"CAPTIONTEXT"}, {L"FONT", TMT_FONT, TMT_FONT},
{TMT_COLOR, TMT_ACTIVEBORDER, L"ACTIVEBORDER"}, {L"FROMCOLOR1", TMT_COLOR, TMT_FROMCOLOR1},
{TMT_COLOR, TMT_INACTIVEBORDER, L"INACTIVEBORDER"}, {L"FROMCOLOR2", TMT_COLOR, TMT_FROMCOLOR2},
{TMT_COLOR, TMT_APPWORKSPACE, L"APPWORKSPACE"}, {L"FROMCOLOR3", TMT_COLOR, TMT_FROMCOLOR3},
{TMT_COLOR, TMT_HIGHLIGHT, L"HIGHLIGHT"}, {L"FROMCOLOR4", TMT_COLOR, TMT_FROMCOLOR4},
{TMT_COLOR, TMT_HIGHLIGHTTEXT, L"HIGHLIGHTTEXT"}, {L"FROMCOLOR5", TMT_COLOR, TMT_FROMCOLOR5},
{TMT_COLOR, TMT_BTNFACE, L"BTNFACE"}, {L"FROMHUE1", TMT_INT, TMT_FROMHUE1},
{TMT_COLOR, TMT_BTNSHADOW, L"BTNSHADOW"}, {L"FROMHUE2", TMT_INT, TMT_FROMHUE2},
{TMT_COLOR, TMT_GRAYTEXT, L"GRAYTEXT"}, {L"FROMHUE3", TMT_INT, TMT_FROMHUE3},
{TMT_COLOR, TMT_BTNTEXT, L"BTNTEXT"}, {L"FROMHUE4", TMT_INT, TMT_FROMHUE4},
{TMT_COLOR, TMT_INACTIVECAPTIONTEXT, L"INACTIVECAPTIONTEXT"}, {L"FROMHUE5", TMT_INT, TMT_FROMHUE5},
{TMT_COLOR, TMT_BTNHIGHLIGHT, L"BTNHIGHLIGHT"}, {L"GLOWCOLOR", TMT_COLOR, TMT_GLOWCOLOR},
{TMT_COLOR, TMT_DKSHADOW3D, L"DKSHADOW3D"}, {L"GLYPHFONT", TMT_FONT, TMT_GLYPHFONT},
{TMT_COLOR, TMT_LIGHT3D, L"LIGHT3D"}, {L"GLYPHFONTSIZINGTYPE", TMT_ENUM, TMT_GLYPHFONTSIZINGTYPE},
{TMT_COLOR, TMT_INFOTEXT, L"INFOTEXT"}, {L"GLYPHIMAGEFILE", TMT_FILENAME, TMT_GLYPHIMAGEFILE},
{TMT_COLOR, TMT_INFOBK, L"INFOBK"}, {L"GLYPHINDEX", TMT_INT, TMT_GLYPHINDEX},
{TMT_COLOR, TMT_BUTTONALTERNATEFACE, L"BUTTONALTERNATEFACE"}, {L"GLYPHONLY", TMT_BOOL, TMT_GLYPHONLY},
{TMT_COLOR, TMT_HOTTRACKING, L"HOTTRACKING"}, {L"GLYPHTEXTCOLOR", TMT_COLOR, TMT_GLYPHTEXTCOLOR},
{TMT_COLOR, TMT_GRADIENTACTIVECAPTION, L"GRADIENTACTIVECAPTION"}, {L"GLYPHTRANSPARENT", TMT_BOOL, TMT_GLYPHTRANSPARENT},
{TMT_COLOR, TMT_GRADIENTINACTIVECAPTION, L"GRADIENTINACTIVECAPTION"}, {L"GLYPHTRANSPARENTCOLOR", TMT_COLOR, TMT_GLYPHTRANSPARENTCOLOR},
{TMT_COLOR, TMT_MENUHILIGHT, L"MENUHILIGHT"}, {L"GLYPHTYPE", TMT_ENUM, TMT_GLYPHTYPE},
{TMT_COLOR, TMT_MENUBAR, L"MENUBAR"}, {L"GRADIENTACTIVECAPTION", TMT_COLOR, TMT_GRADIENTACTIVECAPTION},
{TMT_INT, TMT_FROMHUE1, L"FROMHUE1"}, {L"GRADIENTCOLOR1", TMT_COLOR, TMT_GRADIENTCOLOR1},
{TMT_INT, TMT_FROMHUE2, L"FROMHUE2"}, {L"GRADIENTCOLOR2", TMT_COLOR, TMT_GRADIENTCOLOR2},
{TMT_INT, TMT_FROMHUE3, L"FROMHUE3"}, {L"GRADIENTCOLOR3", TMT_COLOR, TMT_GRADIENTCOLOR3},
{TMT_INT, TMT_FROMHUE4, L"FROMHUE4"}, {L"GRADIENTCOLOR4", TMT_COLOR, TMT_GRADIENTCOLOR4},
{TMT_INT, TMT_FROMHUE5, L"FROMHUE5"}, {L"GRADIENTCOLOR5", TMT_COLOR, TMT_GRADIENTCOLOR5},
{TMT_INT, TMT_TOHUE1, L"TOHUE1"}, {L"GRADIENTINACTIVECAPTION", TMT_COLOR, TMT_GRADIENTINACTIVECAPTION},
{TMT_INT, TMT_TOHUE2, L"TOHUE2"}, {L"GRADIENTRATIO1", TMT_INT, TMT_GRADIENTRATIO1},
{TMT_INT, TMT_TOHUE3, L"TOHUE3"}, {L"GRADIENTRATIO2", TMT_INT, TMT_GRADIENTRATIO2},
{TMT_INT, TMT_TOHUE4, L"TOHUE4"}, {L"GRADIENTRATIO3", TMT_INT, TMT_GRADIENTRATIO3},
{TMT_INT, TMT_TOHUE5, L"TOHUE5"}, {L"GRADIENTRATIO4", TMT_INT, TMT_GRADIENTRATIO4},
{TMT_COLOR, TMT_FROMCOLOR1, L"FROMCOLOR1"}, {L"GRADIENTRATIO5", TMT_INT, TMT_GRADIENTRATIO5},
{TMT_COLOR, TMT_FROMCOLOR2, L"FROMCOLOR2"}, {L"GRAYTEXT", TMT_COLOR, TMT_GRAYTEXT},
{TMT_COLOR, TMT_FROMCOLOR3, L"FROMCOLOR3"}, {L"HALIGN", TMT_ENUM, TMT_HALIGN},
{TMT_COLOR, TMT_FROMCOLOR4, L"FROMCOLOR4"}, {L"HEADING1FONT", TMT_FONT, TMT_HEADING1FONT},
{TMT_COLOR, TMT_FROMCOLOR5, L"FROMCOLOR5"}, {L"HEADING2FONT", TMT_FONT, TMT_HEADING2FONT},
{TMT_COLOR, TMT_TOCOLOR1, L"TOCOLOR1"}, {L"HEIGHT", TMT_SIZE, TMT_HEIGHT},
{TMT_COLOR, TMT_TOCOLOR2, L"TOCOLOR2"}, {L"HIGHLIGHT", TMT_COLOR, TMT_HIGHLIGHT},
{TMT_COLOR, TMT_TOCOLOR3, L"TOCOLOR3"}, {L"HIGHLIGHTTEXT", TMT_COLOR, TMT_HIGHLIGHTTEXT},
{TMT_COLOR, TMT_TOCOLOR4, L"TOCOLOR4"}, {L"HOTTRACKING", TMT_COLOR, TMT_HOTTRACKING},
{TMT_COLOR, TMT_TOCOLOR5, L"TOCOLOR5"}, {L"ICONEFFECT", TMT_ENUM, TMT_ICONEFFECT},
{TMT_BOOL, TMT_TRANSPARENT, L"TRANSPARENT"}, {L"ICONTITLEFONT", TMT_FONT, TMT_ICONTITLEFONT},
{TMT_BOOL, TMT_AUTOSIZE, L"AUTOSIZE"}, {L"IMAGECOUNT", TMT_INT, TMT_IMAGECOUNT},
{TMT_BOOL, TMT_BORDERONLY, L"BORDERONLY"}, {L"IMAGEFILE", TMT_FILENAME, TMT_IMAGEFILE},
{TMT_BOOL, TMT_COMPOSITED, L"COMPOSITED"}, {L"IMAGEFILE1", TMT_FILENAME, TMT_IMAGEFILE1},
{TMT_BOOL, TMT_BGFILL, L"BGFILL"}, {L"IMAGEFILE2", TMT_FILENAME, TMT_IMAGEFILE2},
{TMT_BOOL, TMT_GLYPHTRANSPARENT, L"GLYPHTRANSPARENT"}, {L"IMAGEFILE3", TMT_FILENAME, TMT_IMAGEFILE3},
{TMT_BOOL, TMT_GLYPHONLY, L"GLYPHONLY"}, {L"IMAGEFILE4", TMT_FILENAME, TMT_IMAGEFILE4},
{TMT_BOOL, TMT_ALWAYSSHOWSIZINGBAR, L"ALWAYSSHOWSIZINGBAR"}, {L"IMAGEFILE5", TMT_FILENAME, TMT_IMAGEFILE5},
{TMT_BOOL, TMT_MIRRORIMAGE, L"MIRRORIMAGE"}, {L"IMAGEFILE6", TMT_FILENAME, TMT_IMAGEFILE6},
{TMT_BOOL, TMT_UNIFORMSIZING, L"UNIFORMSIZING"}, {L"IMAGEFILE7", TMT_FILENAME, TMT_IMAGEFILE7},
{TMT_BOOL, TMT_INTEGRALSIZING, L"INTEGRALSIZING"}, {L"IMAGELAYOUT", TMT_ENUM, TMT_IMAGELAYOUT},
{TMT_BOOL, TMT_SOURCEGROW, L"SOURCEGROW"}, {L"IMAGESELECTTYPE", TMT_ENUM, TMT_IMAGESELECTTYPE},
{TMT_BOOL, TMT_SOURCESHRINK, L"SOURCESHRINK"}, {L"INACTIVEBORDER", TMT_COLOR, TMT_INACTIVEBORDER},
{TMT_INT, TMT_IMAGECOUNT, L"IMAGECOUNT"}, {L"INACTIVECAPTION", TMT_COLOR, TMT_INACTIVECAPTION},
{TMT_INT, TMT_ALPHALEVEL, L"ALPHALEVEL"}, {L"INACTIVECAPTIONTEXT", TMT_COLOR, TMT_INACTIVECAPTIONTEXT},
{TMT_INT, TMT_BORDERSIZE, L"BORDERSIZE"}, {L"INFOBK", TMT_COLOR, TMT_INFOBK},
{TMT_INT, TMT_ROUNDCORNERWIDTH, L"ROUNDCORNERWIDTH"}, {L"INFOTEXT", TMT_COLOR, TMT_INFOTEXT},
{TMT_INT, TMT_ROUNDCORNERHEIGHT, L"ROUNDCORNERHEIGHT"}, {L"INT", TMT_INT, TMT_INT},
{TMT_INT, TMT_GRADIENTRATIO1, L"GRADIENTRATIO1"}, {L"INTEGRALSIZING", TMT_BOOL, TMT_INTEGRALSIZING},
{TMT_INT, TMT_GRADIENTRATIO2, L"GRADIENTRATIO2"}, {L"INTLIST", TMT_INTLIST, TMT_INTLIST},
{TMT_INT, TMT_GRADIENTRATIO3, L"GRADIENTRATIO3"}, {L"LIGHT3D", TMT_COLOR, TMT_LIGHT3D},
{TMT_INT, TMT_GRADIENTRATIO4, L"GRADIENTRATIO4"}, {L"MARGINS", TMT_MARGINS, TMT_MARGINS},
{TMT_INT, TMT_GRADIENTRATIO5, L"GRADIENTRATIO5"}, {L"MENU", TMT_COLOR, TMT_MENU},
{TMT_INT, TMT_PROGRESSCHUNKSIZE, L"PROGRESSCHUNKSIZE"}, {L"MENUBAR", TMT_COLOR, TMT_MENUBAR},
{TMT_INT, TMT_PROGRESSSPACESIZE, L"PROGRESSSPACESIZE"}, {L"MENUBARHEIGHT", TMT_SIZE, TMT_MENUBARHEIGHT},
{TMT_INT, TMT_SATURATION, L"SATURATION"}, {L"MENUBARWIDTH", TMT_SIZE, TMT_MENUBARWIDTH},
{TMT_INT, TMT_TEXTBORDERSIZE, L"TEXTBORDERSIZE"}, {L"MENUFONT", TMT_FONT, TMT_MENUFONT},
{TMT_INT, TMT_ALPHATHRESHOLD, L"ALPHATHRESHOLD"}, {L"MENUHILIGHT", TMT_COLOR, TMT_MENUHILIGHT},
{TMT_SIZE, TMT_WIDTH, L"WIDTH"}, {L"MENUTEXT", TMT_COLOR, TMT_MENUTEXT},
{TMT_SIZE, TMT_HEIGHT, L"HEIGHT"}, {L"MINCOLORDEPTH", TMT_INT, TMT_MINCOLORDEPTH},
{TMT_INT, TMT_GLYPHINDEX, L"GLYPHINDEX"}, {L"MINDPI1", TMT_INT, TMT_MINDPI1},
{TMT_INT, TMT_TRUESIZESTRETCHMARK, L"TRUESIZESTRETCHMARK"}, {L"MINDPI2", TMT_INT, TMT_MINDPI2},
{TMT_INT, TMT_MINDPI1, L"MINDPI1"}, {L"MINDPI3", TMT_INT, TMT_MINDPI3},
{TMT_INT, TMT_MINDPI2, L"MINDPI2"}, {L"MINDPI4", TMT_INT, TMT_MINDPI4},
{TMT_INT, TMT_MINDPI3, L"MINDPI3"}, {L"MINDPI5", TMT_INT, TMT_MINDPI5},
{TMT_INT, TMT_MINDPI4, L"MINDPI4"}, {L"MINDPI6", TMT_INT, TMT_MINDPI6},
{TMT_INT, TMT_MINDPI5, L"MINDPI5"}, {L"MINDPI7", TMT_INT, TMT_MINDPI7},
{TMT_INT, TMT_MINDPI6, L"MINDPI6"}, {L"MINSIZE", TMT_POSITION, TMT_MINSIZE},
{TMT_INT, TMT_MINDPI7, L"MINDPI7"}, {L"MINSIZE1", TMT_POSITION, TMT_MINSIZE1},
{TMT_FONT, TMT_GLYPHFONT, L"GLYPHFONT"}, {L"MINSIZE2", TMT_POSITION, TMT_MINSIZE2},
{TMT_FILENAME, TMT_IMAGEFILE, L"IMAGEFILE"}, {L"MINSIZE3", TMT_POSITION, TMT_MINSIZE3},
{TMT_FILENAME, TMT_IMAGEFILE1, L"IMAGEFILE1"}, {L"MINSIZE4", TMT_POSITION, TMT_MINSIZE4},
{TMT_FILENAME, TMT_IMAGEFILE2, L"IMAGEFILE2"}, {L"MINSIZE5", TMT_POSITION, TMT_MINSIZE5},
{TMT_FILENAME, TMT_IMAGEFILE3, L"IMAGEFILE3"}, {L"MINSIZE6", TMT_POSITION, TMT_MINSIZE6},
{TMT_FILENAME, TMT_IMAGEFILE4, L"IMAGEFILE4"}, {L"MINSIZE7", TMT_POSITION, TMT_MINSIZE7},
{TMT_FILENAME, TMT_IMAGEFILE5, L"IMAGEFILE5"}, {L"MIRRORIMAGE", TMT_BOOL, TMT_MIRRORIMAGE},
{TMT_FILENAME, TMT_IMAGEFILE6, L"IMAGEFILE6"}, {L"MSGBOXFONT", TMT_FONT, TMT_MSGBOXFONT},
{TMT_FILENAME, TMT_IMAGEFILE7, L"IMAGEFILE7"}, {L"NORMALSIZE", TMT_POSITION, TMT_NORMALSIZE},
{TMT_FILENAME, TMT_STOCKIMAGEFILE, L"STOCKIMAGEFILE"}, {L"OFFSET", TMT_POSITION, TMT_OFFSET},
{TMT_FILENAME, TMT_GLYPHIMAGEFILE, L"GLYPHIMAGEFILE"}, {L"OFFSETTYPE", TMT_ENUM, TMT_OFFSETTYPE},
{TMT_STRING, TMT_TEXT, L"TEXT"}, {L"POSITION", TMT_POSITION, TMT_POSITION},
{TMT_POSITION, TMT_OFFSET, L"OFFSET"}, {L"PROGRESSCHUNKSIZE", TMT_INT, TMT_PROGRESSCHUNKSIZE},
{TMT_POSITION, TMT_TEXTSHADOWOFFSET, L"TEXTSHADOWOFFSET"}, {L"PROGRESSSPACESIZE", TMT_INT, TMT_PROGRESSSPACESIZE},
{TMT_POSITION, TMT_MINSIZE, L"MINSIZE"}, {L"RECT", TMT_RECT, TMT_RECT},
{TMT_POSITION, TMT_MINSIZE1, L"MINSIZE1"}, {L"ROUNDCORNERHEIGHT", TMT_INT, TMT_ROUNDCORNERHEIGHT},
{TMT_POSITION, TMT_MINSIZE2, L"MINSIZE2"}, {L"ROUNDCORNERWIDTH", TMT_INT, TMT_ROUNDCORNERWIDTH},
{TMT_POSITION, TMT_MINSIZE3, L"MINSIZE3"}, {L"SATURATION", TMT_INT, TMT_SATURATION},
{TMT_POSITION, TMT_MINSIZE4, L"MINSIZE4"}, {L"SCROLLBAR", TMT_COLOR, TMT_SCROLLBAR},
{TMT_POSITION, TMT_MINSIZE5, L"MINSIZE5"}, {L"SCROLLBARHEIGHT", TMT_SIZE, TMT_SCROLLBARHEIGHT},
{TMT_POSITION, TMT_NORMALSIZE, L"NORMALSIZE"}, {L"SCROLLBARWIDTH", TMT_SIZE, TMT_SCROLLBARWIDTH},
{TMT_POSITION, TMT_MINSIZE6, L"MINSIZE6"}, {L"SHADOWCOLOR", TMT_COLOR, TMT_SHADOWCOLOR},
{TMT_POSITION, TMT_MINSIZE7, L"MINSIZE7"}, {L"SIZE", TMT_SIZE, TMT_SIZE},
{TMT_MARGINS, TMT_SIZINGMARGINS, L"SIZINGMARGINS"}, {L"SIZES", TMT_STRING, TMT_SIZES},
{TMT_MARGINS, TMT_CONTENTMARGINS, L"CONTENTMARGINS"}, {L"SIZINGBORDERWIDTH", TMT_SIZE, TMT_SIZINGBORDERWIDTH},
{TMT_MARGINS, TMT_CAPTIONMARGINS, L"CAPTIONMARGINS"}, {L"SIZINGMARGINS", TMT_MARGINS, TMT_SIZINGMARGINS},
{TMT_COLOR, TMT_BORDERCOLOR, L"BORDERCOLOR"}, {L"SIZINGTYPE", TMT_ENUM, TMT_SIZINGTYPE},
{TMT_COLOR, TMT_FILLCOLOR, L"FILLCOLOR"}, {L"SMALLCAPTIONFONT", TMT_FONT, TMT_SMALLCAPTIONFONT},
{TMT_COLOR, TMT_TEXTCOLOR, L"TEXTCOLOR"}, {L"SMCAPTIONBARHEIGHT", TMT_SIZE, TMT_SMCAPTIONBARHEIGHT},
{TMT_COLOR, TMT_EDGELIGHTCOLOR, L"EDGELIGHTCOLOR"}, {L"SMCAPTIONBARWIDTH", TMT_SIZE, TMT_SMCAPTIONBARWIDTH},
{TMT_COLOR, TMT_EDGEHIGHLIGHTCOLOR, L"EDGEHIGHLIGHTCOLOR"}, {L"SOURCEGROW", TMT_BOOL, TMT_SOURCEGROW},
{TMT_COLOR, TMT_EDGESHADOWCOLOR, L"EDGESHADOWCOLOR"}, {L"SOURCESHRINK", TMT_BOOL, TMT_SOURCESHRINK},
{TMT_COLOR, TMT_EDGEDKSHADOWCOLOR, L"EDGEDKSHADOWCOLOR"}, {L"STATUSFONT", TMT_FONT, TMT_STATUSFONT},
{TMT_COLOR, TMT_EDGEFILLCOLOR, L"EDGEFILLCOLOR"}, {L"STOCKIMAGEFILE", TMT_FILENAME, TMT_STOCKIMAGEFILE},
{TMT_COLOR, TMT_TRANSPARENTCOLOR, L"TRANSPARENTCOLOR"}, {L"STRING", TMT_STRING, TMT_STRING},
{TMT_COLOR, TMT_GRADIENTCOLOR1, L"GRADIENTCOLOR1"}, {L"TEXT", TMT_STRING, TMT_TEXT},
{TMT_COLOR, TMT_GRADIENTCOLOR2, L"GRADIENTCOLOR2"}, {L"TEXTBORDERCOLOR", TMT_COLOR, TMT_TEXTBORDERCOLOR},
{TMT_COLOR, TMT_GRADIENTCOLOR3, L"GRADIENTCOLOR3"}, {L"TEXTBORDERSIZE", TMT_INT, TMT_TEXTBORDERSIZE},
{TMT_COLOR, TMT_GRADIENTCOLOR4, L"GRADIENTCOLOR4"}, {L"TEXTCOLOR", TMT_COLOR, TMT_TEXTCOLOR},
{TMT_COLOR, TMT_GRADIENTCOLOR5, L"GRADIENTCOLOR5"}, {L"TEXTSHADOWCOLOR", TMT_COLOR, TMT_TEXTSHADOWCOLOR},
{TMT_COLOR, TMT_SHADOWCOLOR, L"SHADOWCOLOR"}, {L"TEXTSHADOWOFFSET", TMT_POSITION, TMT_TEXTSHADOWOFFSET},
{TMT_COLOR, TMT_GLOWCOLOR, L"GLOWCOLOR"}, {L"TEXTSHADOWTYPE", TMT_ENUM, TMT_TEXTSHADOWTYPE},
{TMT_COLOR, TMT_TEXTBORDERCOLOR, L"TEXTBORDERCOLOR"}, {L"TOCOLOR1", TMT_COLOR, TMT_TOCOLOR1},
{TMT_COLOR, TMT_TEXTSHADOWCOLOR, L"TEXTSHADOWCOLOR"}, {L"TOCOLOR2", TMT_COLOR, TMT_TOCOLOR2},
{TMT_COLOR, TMT_GLYPHTEXTCOLOR, L"GLYPHTEXTCOLOR"}, {L"TOCOLOR3", TMT_COLOR, TMT_TOCOLOR3},
{TMT_COLOR, TMT_GLYPHTRANSPARENTCOLOR, L"GLYPHTRANSPARENTCOLOR"}, {L"TOCOLOR4", TMT_COLOR, TMT_TOCOLOR4},
{TMT_COLOR, TMT_FILLCOLORHINT, L"FILLCOLORHINT"}, {L"TOCOLOR5", TMT_COLOR, TMT_TOCOLOR5},
{TMT_COLOR, TMT_BORDERCOLORHINT, L"BORDERCOLORHINT"}, {L"TOHUE1", TMT_INT, TMT_TOHUE1},
{TMT_COLOR, TMT_ACCENTCOLORHINT, L"ACCENTCOLORHINT"}, {L"TOHUE2", TMT_INT, TMT_TOHUE2},
{TMT_ENUM, TMT_BGTYPE, L"BGTYPE"}, {L"TOHUE3", TMT_INT, TMT_TOHUE3},
{TMT_ENUM, TMT_BORDERTYPE, L"BORDERTYPE"}, {L"TOHUE4", TMT_INT, TMT_TOHUE4},
{TMT_ENUM, TMT_FILLTYPE, L"FILLTYPE"}, {L"TOHUE5", TMT_INT, TMT_TOHUE5},
{TMT_ENUM, TMT_SIZINGTYPE, L"SIZINGTYPE"}, {L"TOOLTIP", TMT_STRING, TMT_TOOLTIP},
{TMT_ENUM, TMT_HALIGN, L"HALIGN"}, {L"TRANSITIONDURATIONS", TMT_INTLIST, TMT_TRANSITIONDURATIONS},
{TMT_ENUM, TMT_CONTENTALIGNMENT, L"CONTENTALIGNMENT"}, {L"TRANSPARENT", TMT_BOOL, TMT_TRANSPARENT},
{TMT_ENUM, TMT_VALIGN, L"VALIGN"}, {L"TRANSPARENTCOLOR", TMT_COLOR, TMT_TRANSPARENTCOLOR},
{TMT_ENUM, TMT_OFFSETTYPE, L"OFFSETTYPE"}, {L"TRUESIZESCALINGTYPE", TMT_ENUM, TMT_TRUESIZESCALINGTYPE},
{TMT_ENUM, TMT_ICONEFFECT, L"ICONEFFECT"}, {L"TRUESIZESTRETCHMARK", TMT_INT, TMT_TRUESIZESTRETCHMARK},
{TMT_ENUM, TMT_TEXTSHADOWTYPE, L"TEXTSHADOWTYPE"}, {L"UNIFORMSIZING", TMT_BOOL, TMT_UNIFORMSIZING},
{TMT_ENUM, TMT_IMAGELAYOUT, L"IMAGELAYOUT"}, {L"URL", TMT_STRING, TMT_URL},
{TMT_ENUM, TMT_GLYPHTYPE, L"GLYPHTYPE"}, {L"USERPICTURE", TMT_BOOL, TMT_USERPICTURE},
{TMT_ENUM, TMT_IMAGESELECTTYPE, L"IMAGESELECTTYPE"}, {L"VALIGN", TMT_ENUM, TMT_VALIGN},
{TMT_ENUM, TMT_GLYPHFONTSIZINGTYPE, L"GLYPHFONTSIZINGTYPE"}, {L"VERSION", TMT_STRING, TMT_VERSION},
{TMT_ENUM, TMT_TRUESIZESCALINGTYPE, L"TRUESIZESCALINGTYPE"}, {L"WIDTH", TMT_SIZE, TMT_WIDTH},
{TMT_BOOL, TMT_USERPICTURE, L"USERPICTURE"}, {L"WINDOW", TMT_COLOR, TMT_WINDOW},
{TMT_RECT, TMT_DEFAULTPANESIZE, L"DEFAULTPANESIZE"}, {L"WINDOWFRAME", TMT_COLOR, TMT_WINDOWFRAME},
{TMT_COLOR, TMT_BLENDCOLOR, L"BLENDCOLOR"}, {L"WINDOWTEXT", TMT_COLOR, TMT_WINDOWTEXT},
{TMT_INTLIST, TMT_TRANSITIONDURATIONS, L"TRANSITIONDURATIONS"}, {L"XMLNAME", TMT_STRING, TMT_XMLNAME},
{0, 0, L""}
}; };
/*********************************************************************** /***********************************************************************
@ -1485,6 +1488,13 @@ BOOL MSSTYLES_LookupPartState(LPCWSTR pszClass, LPCWSTR pszPart, LPCWSTR pszStat
return TRUE; return TRUE;
} }
static int __cdecl msstyles_property_map_compare(const void *a, const void *b)
{
const MSSTYLES_PROPERTY_MAP *a_prop = a, *b_prop = b;
INT size = ARRAY_SIZE(a_prop->szPropertyName);
return CompareStringOrdinal(a_prop->szPropertyName, size, b_prop->szPropertyName, size, TRUE) - CSTR_EQUAL;
}
/********************************************************************** /**********************************************************************
* MSSTYLES_LookupProperty * MSSTYLES_LookupProperty
* *
@ -1500,15 +1510,19 @@ BOOL MSSTYLES_LookupPartState(LPCWSTR pszClass, LPCWSTR pszPart, LPCWSTR pszStat
*/ */
BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId) BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId)
{ {
DWORD item = 0; MSSTYLES_PROPERTY_MAP key = {{0}}, *found;
do { SIZE_T len;
if(!lstrcmpiW(mapProperty[item].szPropertyName, pszPropertyName)) {
if(dwPrimitive) *dwPrimitive = mapProperty[item].dwPrimitiveType; if ((len = wcslen(pszPropertyName)) >= ARRAY_SIZE(key.szPropertyName)) return FALSE;
if(dwId) *dwId = mapProperty[item].dwPropertyID; memcpy(key.szPropertyName, pszPropertyName, len * sizeof(WCHAR));
return TRUE;
} if (!(found = bsearch(&key, mapProperty, ARRAY_SIZE(mapProperty),
} while(*mapProperty[++item].szPropertyName); sizeof(*mapProperty), msstyles_property_map_compare)))
return FALSE; return FALSE;
if (dwPrimitive) *dwPrimitive = found->dwPrimitiveType;
if (dwId) *dwId = found->dwPropertyID;
return TRUE;
} }
/********************************************************************** /**********************************************************************