mshtml: Implement IHTMLStyle::{get, put}_border{Top, Bottom, Right}.

This commit is contained in:
Andrew Eikum 2009-12-01 14:04:38 -06:00 committed by Alexandre Julliard
parent 3007b73cc9
commit d97b4d260e
3 changed files with 126 additions and 12 deletions

View File

@ -49,6 +49,8 @@ static const WCHAR attrBackgroundRepeat[] =
{'b','a','c','k','g','r','o','u','n','d','-','r','e','p','e','a','t',0};
static const WCHAR attrBorder[] =
{'b','o','r','d','e','r',0};
static const WCHAR attrBorderBottom[] =
{'b','o','r','d','e','r','-','b','o','t','t','o','m',0};
static const WCHAR attrBorderBottomColor[] =
{'b','o','r','d','e','r','-','b','o','t','t','o','m','-','c','o','l','o','r',0};
static const WCHAR attrBorderBottomStyle[] =
@ -65,12 +67,16 @@ static const WCHAR attrBorderLeftStyle[] =
{'b','o','r','d','e','r','-','l','e','f','t','-','s','t','y','l','e',0};
static const WCHAR attrBorderLeftWidth[] =
{'b','o','r','d','e','r','-','l','e','f','t','-','w','i','d','t','h',0};
static const WCHAR attrBorderRight[] =
{'b','o','r','d','e','r','-','r','i','g','h','t',0};
static const WCHAR attrBorderRightColor[] =
{'b','o','r','d','e','r','-','r','i','g','h','t','-','c','o','l','o','r',0};
static const WCHAR attrBorderRightStyle[] =
{'b','o','r','d','e','r','-','r','i','g','h','t','-','s','t','y','l','e',0};
static const WCHAR attrBorderRightWidth[] =
{'b','o','r','d','e','r','-','r','i','g','h','t','-','w','i','d','t','h',0};
static const WCHAR attrBorderTop[] =
{'b','o','r','d','e','r','-','t','o','p',0};
static const WCHAR attrBorderTopColor[] =
{'b','o','r','d','e','r','-','t','o','p','-','c','o','l','o','r',0};
static const WCHAR attrBorderStyle[] =
@ -167,6 +173,7 @@ static const struct{
{attrBackgroundPositionY, DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY},
{attrBackgroundRepeat, DISPID_IHTMLSTYLE_BACKGROUNDREPEAT},
{attrBorder, DISPID_IHTMLSTYLE_BORDER},
{attrBorderBottom, DISPID_IHTMLSTYLE_BORDERBOTTOM},
{attrBorderBottomColor, DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR},
{attrBorderBottomStyle, DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE},
{attrBorderBottomWidth, DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH},
@ -175,10 +182,12 @@ static const struct{
{attrBorderLeftColor, DISPID_IHTMLSTYLE_BORDERLEFTCOLOR},
{attrBorderLeftStyle, DISPID_IHTMLSTYLE_BORDERLEFTSTYLE},
{attrBorderLeftWidth, DISPID_IHTMLSTYLE_BORDERLEFTWIDTH},
{attrBorderRight, DISPID_IHTMLSTYLE_BORDERRIGHT},
{attrBorderRightColor, DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR},
{attrBorderRightStyle, DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE},
{attrBorderRightWidth, DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH},
{attrBorderStyle, DISPID_IHTMLSTYLE_BORDERSTYLE},
{attrBorderTop, DISPID_IHTMLSTYLE_BORDERTOP},
{attrBorderTopColor, DISPID_IHTMLSTYLE_BORDERTOPCOLOR},
{attrBorderTopStyle, DISPID_IHTMLSTYLE_BORDERTOPSTYLE},
{attrBorderTopWidth, DISPID_IHTMLSTYLE_BORDERTOPWIDTH},
@ -1433,43 +1442,43 @@ static HRESULT WINAPI HTMLStyle_get_border(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_borderTop(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_BORDER_TOP, v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_borderTop(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_BORDER_TOP, p);
}
static HRESULT WINAPI HTMLStyle_put_borderRight(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_BORDER_RIGHT, v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_borderRight(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_BORDER_RIGHT, p);
}
static HRESULT WINAPI HTMLStyle_put_borderBottom(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_BORDER_BOTTOM, v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_borderBottom(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_BORDER_BOTTOM, p);
}
static HRESULT WINAPI HTMLStyle_put_borderLeft(IHTMLStyle *iface, BSTR v)

View File

@ -42,6 +42,7 @@ typedef enum {
STYLEID_BACKGROUND_POSITION_Y,
STYLEID_BACKGROUND_REPEAT,
STYLEID_BORDER,
STYLEID_BORDER_BOTTOM,
STYLEID_BORDER_BOTTOM_COLOR,
STYLEID_BORDER_BOTTOM_STYLE,
STYLEID_BORDER_BOTTOM_WIDTH,
@ -50,10 +51,12 @@ typedef enum {
STYLEID_BORDER_LEFT_COLOR,
STYLEID_BORDER_LEFT_STYLE,
STYLEID_BORDER_LEFT_WIDTH,
STYLEID_BORDER_RIGHT,
STYLEID_BORDER_RIGHT_COLOR,
STYLEID_BORDER_RIGHT_STYLE,
STYLEID_BORDER_RIGHT_WIDTH,
STYLEID_BORDER_STYLE,
STYLEID_BORDER_TOP,
STYLEID_BORDER_TOP_COLOR,
STYLEID_BORDER_TOP_STYLE,
STYLEID_BORDER_TOP_WIDTH,

View File

@ -4285,6 +4285,108 @@ static void test_default_style(IHTMLStyle *style)
ok(hres == S_OK, "put_borderColor failed: %08x\n", hres);
SysFreeString(sDefault);
/* BorderRight */
hres = IHTMLStyle_get_borderRight(style, &sDefault);
ok(hres == S_OK, "get_borderRight failed: %08x\n", hres);
str = a2bstr("thick dotted red");
hres = IHTMLStyle_put_borderRight(style, str);
ok(hres == S_OK, "put_borderRight failed: %08x\n", hres);
SysFreeString(str);
/* IHTMLStyle_get_borderRight appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR(&v) = NULL;
hres = IHTMLStyle_get_borderRightColor(style, &v);
todo_wine ok(hres == S_OK, "get_borderRightColor failed: %08x\n", hres);
todo_wine ok(!strcmp_wa(V_BSTR(&v), "red"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_BSTR(&v) = NULL;
hres = IHTMLStyle_get_borderRightWidth(style, &v);
ok(hres == S_OK, "get_borderRightWidth failed: %08x\n", hres);
ok(!strcmp_wa(V_BSTR(&v), "thick"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
hres = IHTMLStyle_get_borderRightStyle(style, &str);
ok(hres == S_OK, "get_borderRightStyle failed: %08x\n", hres);
ok(!strcmp_wa(str, "dotted"), "str=%s\n", wine_dbgstr_w(str));
SysFreeString(str);
hres = IHTMLStyle_put_borderRight(style, sDefault);
ok(hres == S_OK, "put_borderRight failed: %08x\n", hres);
SysFreeString(sDefault);
/* BorderTop */
hres = IHTMLStyle_get_borderTop(style, &sDefault);
ok(hres == S_OK, "get_borderTop failed: %08x\n", hres);
str = a2bstr("thick dotted red");
hres = IHTMLStyle_put_borderTop(style, str);
ok(hres == S_OK, "put_borderTop failed: %08x\n", hres);
SysFreeString(str);
/* IHTMLStyle_get_borderTop appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR(&v) = NULL;
hres = IHTMLStyle_get_borderTopColor(style, &v);
todo_wine ok(hres == S_OK, "get_borderTopColor failed: %08x\n", hres);
todo_wine ok(!strcmp_wa(V_BSTR(&v), "red"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_BSTR(&v) = NULL;
hres = IHTMLStyle_get_borderTopWidth(style, &v);
ok(hres == S_OK, "get_borderTopWidth failed: %08x\n", hres);
ok(!strcmp_wa(V_BSTR(&v), "thick"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
hres = IHTMLStyle_get_borderTopStyle(style, &str);
ok(hres == S_OK, "get_borderTopStyle failed: %08x\n", hres);
ok(!strcmp_wa(str, "dotted"), "str=%s\n", wine_dbgstr_w(str));
SysFreeString(str);
hres = IHTMLStyle_put_borderTop(style, sDefault);
ok(hres == S_OK, "put_borderTop failed: %08x\n", hres);
SysFreeString(sDefault);
/* BorderBottom */
hres = IHTMLStyle_get_borderBottom(style, &sDefault);
ok(hres == S_OK, "get_borderBottom failed: %08x\n", hres);
str = a2bstr("thick dotted red");
hres = IHTMLStyle_put_borderBottom(style, str);
ok(hres == S_OK, "put_borderBottom failed: %08x\n", hres);
SysFreeString(str);
/* IHTMLStyle_get_borderBottom appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR(&v) = NULL;
hres = IHTMLStyle_get_borderBottomColor(style, &v);
todo_wine ok(hres == S_OK, "get_borderBottomColor failed: %08x\n", hres);
todo_wine ok(!strcmp_wa(V_BSTR(&v), "red"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_BSTR(&v) = NULL;
hres = IHTMLStyle_get_borderBottomWidth(style, &v);
ok(hres == S_OK, "get_borderBottomWidth failed: %08x\n", hres);
ok(!strcmp_wa(V_BSTR(&v), "thick"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
hres = IHTMLStyle_get_borderBottomStyle(style, &str);
ok(hres == S_OK, "get_borderBottomStyle failed: %08x\n", hres);
ok(!strcmp_wa(str, "dotted"), "str=%s\n", wine_dbgstr_w(str));
SysFreeString(str);
hres = IHTMLStyle_put_borderBottom(style, sDefault);
ok(hres == S_OK, "put_borderBottom failed: %08x\n", hres);
SysFreeString(sDefault);
/* BorderLeft */
hres = IHTMLStyle_get_borderLeft(style, &sDefault);
ok(hres == S_OK, "get_borderLeft failed: %08x\n", hres);