Jacek Caban : mshtml: Use generic value checks for IHTMLStyle:: put_fontWeight implementation.

Alexandre Julliard julliard at winehq.org
Tue Aug 28 16:53:01 CDT 2018


Module: wine
Branch: master
Commit: dd8f202e05ad56ad0ab8736a92782a44bdc8b1fa
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=dd8f202e05ad56ad0ab8736a92782a44bdc8b1fa

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Aug 28 12:44:16 2018 +0200

mshtml: Use generic value checks for IHTMLStyle::put_fontWeight implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlstyle.c | 53 +++++++++++++++++++++++++++++--------------------
 1 file changed, 32 insertions(+), 21 deletions(-)

diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c
index b89ffbc..b7aeaea 100644
--- a/dlls/mshtml/htmlstyle.c
+++ b/dlls/mshtml/htmlstyle.c
@@ -207,11 +207,24 @@ static const WCHAR word_wrapW[] =
 static const WCHAR z_indexW[] =
     {'z','-','i','n','d','e','x',0};
 
+static const WCHAR boldW[] = {'b','o','l','d',0};
+static const WCHAR bolderW[] = {'b','o','l','d','e','r',0};
 static const WCHAR capsW[]  = {'s','m','a','l','l','-','c','a','p','s',0};
 static const WCHAR italicW[]  = {'i','t','a','l','i','c',0};
+static const WCHAR lighterW[]  = {'l','i','g','h','t','e','r',0};
 static const WCHAR normalW[] = {'n','o','r','m','a','l',0};
 static const WCHAR obliqueW[]  = {'o','b','l','i','q','u','e',0};
 
+static const WCHAR style100W[] = {'1','0','0',0};
+static const WCHAR style200W[] = {'2','0','0',0};
+static const WCHAR style300W[] = {'3','0','0',0};
+static const WCHAR style400W[] = {'4','0','0',0};
+static const WCHAR style500W[] = {'5','0','0',0};
+static const WCHAR style600W[] = {'6','0','0',0};
+static const WCHAR style700W[] = {'7','0','0',0};
+static const WCHAR style800W[] = {'8','0','0',0};
+static const WCHAR style900W[] = {'9','0','0',0};
+
 static const WCHAR *font_style_values[] = {
     italicW,
     normalW,
@@ -225,6 +238,23 @@ static const WCHAR *font_variant_values[] = {
     NULL
 };
 
+static const WCHAR *font_weight_values[] = {
+    style100W,
+    style200W,
+    style300W,
+    style400W,
+    style500W,
+    style600W,
+    style700W,
+    style800W,
+    style900W,
+    boldW,
+    bolderW,
+    lighterW,
+    normalW,
+    NULL
+};
+
 #define ATTR_FIX_PX         0x0001
 #define ATTR_FIX_URL        0x0002
 #define ATTR_STR_TO_INT     0x0004
@@ -284,7 +314,7 @@ static const style_tbl_entry_t style_tbl[] = {
     {font_sizeW,              DISPID_IHTMLSTYLE_FONTSIZE,              ATTR_FIX_PX},
     {font_styleW,             DISPID_IHTMLSTYLE_FONTSTYLE,             0, font_style_values},
     {font_variantW,           DISPID_IHTMLSTYLE_FONTVARIANT,           0, font_variant_values},
-    {font_weightW,            DISPID_IHTMLSTYLE_FONTWEIGHT,            ATTR_STR_TO_INT},
+    {font_weightW,            DISPID_IHTMLSTYLE_FONTWEIGHT,            ATTR_STR_TO_INT, font_weight_values},
     {heightW,                 DISPID_IHTMLSTYLE_HEIGHT,                ATTR_FIX_PX},
     {leftW,                   DISPID_IHTMLSTYLE_LEFT},
     {letter_spacingW,         DISPID_IHTMLSTYLE_LETTERSPACING},
@@ -432,7 +462,7 @@ static HRESULT set_nsstyle_property(nsIDOMCSSStyleDeclaration *nsstyle, styleid_
     nsresult nsres;
     HRESULT hres = S_OK;
 
-    if(value) {
+    if(value && *value) {
         unsigned flags = style_tbl[sid].flags;
         if(flags & ATTR_FIX_PX)
             val = fix_px_value(value);
@@ -952,28 +982,9 @@ static HRESULT WINAPI HTMLStyle_get_fontVariant(IHTMLStyle *iface, BSTR *p)
 static HRESULT WINAPI HTMLStyle_put_fontWeight(IHTMLStyle *iface, BSTR v)
 {
     HTMLStyle *This = impl_from_IHTMLStyle(iface);
-    static const WCHAR styleBold[] = {'b','o','l','d',0};
-    static const WCHAR styleBolder[] = {'b','o','l','d','e','r',0};
-    static const WCHAR styleLighter[]  = {'l','i','g','h','t','e','r',0};
-    static const WCHAR style100[] = {'1','0','0',0};
-    static const WCHAR style200[] = {'2','0','0',0};
-    static const WCHAR style300[] = {'3','0','0',0};
-    static const WCHAR style400[] = {'4','0','0',0};
-    static const WCHAR style500[] = {'5','0','0',0};
-    static const WCHAR style600[] = {'6','0','0',0};
-    static const WCHAR style700[] = {'7','0','0',0};
-    static const WCHAR style800[] = {'8','0','0',0};
-    static const WCHAR style900[] = {'9','0','0',0};
 
     TRACE("(%p)->(%s)\n", This, debugstr_w(v));
 
-    /* fontWeight can only be one of the following */
-    if(v && *v && strcmpiW(normalW, v) && strcmpiW(styleBold, v) &&  strcmpiW(styleBolder, v)
-            && strcmpiW(styleLighter, v) && strcmpiW(style100, v) && strcmpiW(style200, v)
-            && strcmpiW(style300, v) && strcmpiW(style400, v) && strcmpiW(style500, v) && strcmpiW(style600, v)
-            && strcmpiW(style700, v) && strcmpiW(style800, v) && strcmpiW(style900, v))
-        return E_INVALIDARG;
-
     return set_style_property(This, STYLEID_FONT_WEIGHT, v);
 }
 




More information about the wine-cvs mailing list