Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com --- dlls/uxtheme/draw.c | 46 +++++++++++++++++++++++++++++++++-------- dlls/uxtheme/stylemap.c | 6 ++++++ include/tmschema.h | 6 ++++++ include/vssym32.h | 6 ++++++ 4 files changed, 55 insertions(+), 9 deletions(-)
diff --git a/dlls/uxtheme/draw.c b/dlls/uxtheme/draw.c index 5b90f6b1fdc..521f9eb32a9 100644 --- a/dlls/uxtheme/draw.c +++ b/dlls/uxtheme/draw.c @@ -144,6 +144,24 @@ HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, return DrawThemeBackgroundEx(hTheme, hdc, iPartId, iStateId, pRect, &opts); }
+/* Map integer 1..7 to TMT_MINDPI1..TMT_MINDPI7 */ +static int mindpi_index_to_property(int index) +{ + return index <= 5 ? TMT_MINDPI1 + index - 1 : TMT_MINDPI6 + index - 6; +} + +/* Map integer 1..7 to TMT_MINSIZE1..TMT_MINSIZE7 */ +static int minsize_index_to_property(int index) +{ + return index <= 5 ? TMT_MINSIZE1 + index - 1 : TMT_MINSIZE6 + index - 6; +} + +/* Map integer 1..7 to TMT_IMAGEFILE1..TMT_IMAGEFILE7 */ +static int imagefile_index_to_property(int index) +{ + return index <= 5 ? TMT_IMAGEFILE1 + index - 1 : TMT_IMAGEFILE6 + index - 6; +} + /*********************************************************************** * UXTHEME_SelectImage * @@ -171,16 +189,20 @@ static PTHEME_PROPERTY UXTHEME_SelectImage(HTHEME hTheme, HDC hdc, int iPartId, if(imageselecttype == IST_DPI) { int reqdpi = 0; int screendpi = GetDeviceCaps(hdc, LOGPIXELSX); - for(i=4; i>=0; i--) { + for (i = 7; i >= 1; i--) + { reqdpi = 0; - if(SUCCEEDED(GetThemeInt(hTheme, iPartId, iStateId, i + TMT_MINDPI1, &reqdpi))) { + if (SUCCEEDED(GetThemeInt(hTheme, iPartId, iStateId, mindpi_index_to_property(i), + &reqdpi))) + { if(reqdpi != 0 && screendpi >= reqdpi) { - TRACE("Using %d DPI, image %d\n", reqdpi, i + TMT_IMAGEFILE1); + TRACE("Using %d DPI, image %d\n", reqdpi, imagefile_index_to_property(i));
if (imageDpi) *imageDpi = reqdpi;
- return MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, i + TMT_IMAGEFILE1); + return MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, + imagefile_index_to_property(i)); } } } @@ -190,11 +212,16 @@ static PTHEME_PROPERTY UXTHEME_SelectImage(HTHEME hTheme, HDC hdc, int iPartId, else if(imageselecttype == IST_SIZE) { POINT size = {pRect->right-pRect->left, pRect->bottom-pRect->top}; POINT reqsize; - for(i=4; i>=0; i--) { - PTHEME_PROPERTY fileProp = - MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, i + TMT_IMAGEFILE1); + for (i = 7; i >= 1; i--) + { + PTHEME_PROPERTY fileProp; + + fileProp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, + imagefile_index_to_property(i)); if (!fileProp) continue; - if(FAILED(GetThemePosition(hTheme, iPartId, iStateId, i + TMT_MINSIZE1, &reqsize))) { + if (FAILED(GetThemePosition(hTheme, iPartId, iStateId, minsize_index_to_property(i), + &reqsize))) + { /* fall back to size of Nth image */ WCHAR szPath[MAX_PATH]; int imagelayout = IL_HORIZONTAL; @@ -221,7 +248,8 @@ static PTHEME_PROPERTY UXTHEME_SelectImage(HTHEME hTheme, HDC hdc, int iPartId, } } if(reqsize.x <= size.x && reqsize.y <= size.y) { - TRACE("Using image size %dx%d, image %d\n", reqsize.x, reqsize.y, i + TMT_IMAGEFILE1); + TRACE("Using image size %dx%d, image %d\n", reqsize.x, reqsize.y, + imagefile_index_to_property(i)); return fileProp; } } diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c index 463c236df30..4fe254c1e7a 100644 --- a/dlls/uxtheme/stylemap.c +++ b/dlls/uxtheme/stylemap.c @@ -187,6 +187,8 @@ static const MSSTYLES_PROPERTY_MAP mapProperty[] = { {TMT_INT, TMT_MINDPI3, L"MINDPI3"}, {TMT_INT, TMT_MINDPI4, L"MINDPI4"}, {TMT_INT, TMT_MINDPI5, L"MINDPI5"}, + {TMT_INT, TMT_MINDPI6, L"MINDPI6"}, + {TMT_INT, TMT_MINDPI7, L"MINDPI7"}, {TMT_FONT, TMT_GLYPHFONT, L"GLYPHFONT"}, {TMT_FILENAME, TMT_IMAGEFILE, L"IMAGEFILE"}, {TMT_FILENAME, TMT_IMAGEFILE1, L"IMAGEFILE1"}, @@ -194,6 +196,8 @@ static const MSSTYLES_PROPERTY_MAP mapProperty[] = { {TMT_FILENAME, TMT_IMAGEFILE3, L"IMAGEFILE3"}, {TMT_FILENAME, TMT_IMAGEFILE4, L"IMAGEFILE4"}, {TMT_FILENAME, TMT_IMAGEFILE5, L"IMAGEFILE5"}, + {TMT_FILENAME, TMT_IMAGEFILE6, L"IMAGEFILE6"}, + {TMT_FILENAME, TMT_IMAGEFILE7, L"IMAGEFILE7"}, {TMT_FILENAME, TMT_STOCKIMAGEFILE, L"STOCKIMAGEFILE"}, {TMT_FILENAME, TMT_GLYPHIMAGEFILE, L"GLYPHIMAGEFILE"}, {TMT_STRING, TMT_TEXT, L"TEXT"}, @@ -206,6 +210,8 @@ static const MSSTYLES_PROPERTY_MAP mapProperty[] = { {TMT_POSITION, TMT_MINSIZE4, L"MINSIZE4"}, {TMT_POSITION, TMT_MINSIZE5, L"MINSIZE5"}, {TMT_POSITION, TMT_NORMALSIZE, L"NORMALSIZE"}, + {TMT_POSITION, TMT_MINSIZE6, L"MINSIZE6"}, + {TMT_POSITION, TMT_MINSIZE7, L"MINSIZE7"}, {TMT_MARGINS, TMT_SIZINGMARGINS, L"SIZINGMARGINS"}, {TMT_MARGINS, TMT_CONTENTMARGINS, L"CONTENTMARGINS"}, {TMT_MARGINS, TMT_CAPTIONMARGINS, L"CAPTIONMARGINS"}, diff --git a/include/tmschema.h b/include/tmschema.h index 2d2eccce11e..47eb146ebdc 100644 --- a/include/tmschema.h +++ b/include/tmschema.h @@ -322,6 +322,8 @@ BEGIN_TM_PROPS() TM_PROP(2422, TMT, MINDPI3, INT) TM_PROP(2423, TMT, MINDPI4, INT) TM_PROP(2424, TMT, MINDPI5, INT) + TM_PROP(2433, TMT, MINDPI6, INT) + TM_PROP(2434, TMT, MINDPI7, INT)
/* Font rendering properties */ TM_PROP(2601, TMT, GLYPHFONT, FONT) @@ -335,6 +337,8 @@ BEGIN_TM_PROPS() TM_PROP(3006, TMT, IMAGEFILE5, FILENAME) TM_PROP(3007, TMT, STOCKIMAGEFILE, FILENAME) TM_PROP(3008, TMT, GLYPHIMAGEFILE, FILENAME) + TM_PROP(3009, TMT, IMAGEFILE6, FILENAME) + TM_PROP(3010, TMT, IMAGEFILE7, FILENAME)
/* String rendering properties */ TM_PROP(3201, TMT, TEXT, STRING) @@ -349,6 +353,8 @@ BEGIN_TM_PROPS() TM_PROP(3407, TMT, MINSIZE4, POSITION) TM_PROP(3408, TMT, MINSIZE5, POSITION) TM_PROP(3409, TMT, NORMALSIZE, POSITION) + TM_PROP(3410, TMT, MINSIZE6, POSITION) + TM_PROP(3411, TMT, MINSIZE7, POSITION)
/* Margin rendering properties */ TM_PROP(3601, TMT, SIZINGMARGINS, MARGINS) diff --git a/include/vssym32.h b/include/vssym32.h index 4e7c2f791d8..8685fb7f7f0 100644 --- a/include/vssym32.h +++ b/include/vssym32.h @@ -301,6 +301,8 @@ enum GLYPHFONTSIZINGTYPE { #define TMT_OPACITY 2430 #define TMT_COLORIZATIONCOLOR 2431 #define TMT_COLORIZATIONOPACITY 2432 +#define TMT_MINDPI6 2433 +#define TMT_MINDPI7 2434 #define TMT_GLYPHFONT 2601 #define TMT_IMAGEFILE 3001 #define TMT_IMAGEFILE1 3002 @@ -309,6 +311,8 @@ enum GLYPHFONTSIZINGTYPE { #define TMT_IMAGEFILE4 3005 #define TMT_IMAGEFILE5 3006 #define TMT_GLYPHIMAGEFILE 3008 +#define TMT_IMAGEFILE6 3009 +#define TMT_IMAGEFILE7 3010 #define TMT_TEXT 3201 #define TMT_CLASSICVALUE 3202 #define TMT_OFFSET 3401 @@ -320,6 +324,8 @@ enum GLYPHFONTSIZINGTYPE { #define TMT_MINSIZE4 3407 #define TMT_MINSIZE5 3408 #define TMT_NORMALSIZE 3409 +#define TMT_MINSIZE6 3410 +#define TMT_MINSIZE7 3411 #define TMT_SIZINGMARGINS 3601 #define TMT_CONTENTMARGINS 3602 #define TMT_CAPTIONMARGINS 3603