2 * Copyright 2009 Alistair Leslie-Hughes
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
28 #include "mshtml_private.h"
29 #include "htmlstyle.h"
31 #include "wine/debug.h"
32 #include "wine/unicode.h"
34 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
36 #define HTMLSTYLE3_THIS(iface) DEFINE_THIS(HTMLStyle, HTMLStyle3, iface)
38 static HRESULT WINAPI HTMLStyle3_QueryInterface(IHTMLStyle3 *iface, REFIID riid, void **ppv)
40 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
42 return IHTMLStyle_QueryInterface(HTMLSTYLE(This), riid, ppv);
45 static ULONG WINAPI HTMLStyle3_AddRef(IHTMLStyle3 *iface)
47 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
49 return IHTMLStyle_AddRef(HTMLSTYLE(This));
52 static ULONG WINAPI HTMLStyle3_Release(IHTMLStyle3 *iface)
54 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
56 return IHTMLStyle_Release(HTMLSTYLE(This));
59 static HRESULT WINAPI HTMLStyle3_GetTypeInfoCount(IHTMLStyle3 *iface, UINT *pctinfo)
61 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
62 return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
65 static HRESULT WINAPI HTMLStyle3_GetTypeInfo(IHTMLStyle3 *iface, UINT iTInfo,
66 LCID lcid, ITypeInfo **ppTInfo)
68 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
69 return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
72 static HRESULT WINAPI HTMLStyle3_GetIDsOfNames(IHTMLStyle3 *iface, REFIID riid,
73 LPOLESTR *rgszNames, UINT cNames,
74 LCID lcid, DISPID *rgDispId)
76 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
77 return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
81 static HRESULT WINAPI HTMLStyle3_Invoke(IHTMLStyle3 *iface, DISPID dispIdMember,
82 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
83 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
85 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
86 return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
87 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
90 static HRESULT WINAPI HTMLStyle3_put_layoutFlow(IHTMLStyle3 *iface, BSTR v)
92 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
93 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
97 static HRESULT WINAPI HTMLStyle3_get_layoutFlow(IHTMLStyle3 *iface, BSTR *p)
99 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
100 FIXME("(%p)->(%p)\n", This, p);
104 static HRESULT WINAPI HTMLStyle3_put_zoom(IHTMLStyle3 *iface, VARIANT v)
106 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
108 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
110 /* zoom property is IE CSS extension that is mostly used as a hack to workaround IE bugs.
111 * The value is set to 1 then. We can safely ignore setting zoom to 1. */
112 if(V_VT(&v) == VT_I4 && V_I4(&v) == 1)
115 FIXME("stub for %s\n", debugstr_variant(&v));
119 static HRESULT WINAPI HTMLStyle3_get_zoom(IHTMLStyle3 *iface, VARIANT *p)
121 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
122 FIXME("(%p)->(%p)\n", This, p);
126 static HRESULT WINAPI HTMLStyle3_put_wordWrap(IHTMLStyle3 *iface, BSTR v)
128 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
130 TRACE("(%p)->(%s)\n", This, debugstr_w(v));
132 return set_nsstyle_attr(This->nsstyle, STYLEID_WORD_WRAP, v, 0);
135 static HRESULT WINAPI HTMLStyle3_get_wordWrap(IHTMLStyle3 *iface, BSTR *p)
137 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
139 TRACE("(%p)->(%p)\n", This, p);
141 return get_nsstyle_attr(This->nsstyle, STYLEID_WORD_WRAP, p);
144 static HRESULT WINAPI HTMLStyle3_put_textUnderlinePosition(IHTMLStyle3 *iface, BSTR v)
146 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
147 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
151 static HRESULT WINAPI HTMLStyle3_get_textUnderlinePosition(IHTMLStyle3 *iface, BSTR *p)
153 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
154 FIXME("(%p)->(%p)\n", This, p);
158 static HRESULT WINAPI HTMLStyle3_put_scrollbarBaseColor(IHTMLStyle3 *iface, VARIANT v)
160 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
161 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
165 static HRESULT WINAPI HTMLStyle3_get_scrollbarBaseColor(IHTMLStyle3 *iface, VARIANT *p)
167 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
168 FIXME("(%p)->(%p)\n", This, p);
172 static HRESULT WINAPI HTMLStyle3_put_scrollbarFaceColor(IHTMLStyle3 *iface, VARIANT v)
174 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
175 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
179 static HRESULT WINAPI HTMLStyle3_get_scrollbarFaceColor(IHTMLStyle3 *iface, VARIANT *p)
181 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
182 FIXME("(%p)->(%p)\n", This, p);
186 static HRESULT WINAPI HTMLStyle3_put_scrollbar3dLightColor(IHTMLStyle3 *iface, VARIANT v)
188 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
189 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
193 static HRESULT WINAPI HTMLStyle3_get_scrollbar3dLightColor(IHTMLStyle3 *iface, VARIANT *p)
195 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
196 FIXME("(%p)->(%p)\n", This, p);
200 static HRESULT WINAPI HTMLStyle3_put_scrollbarShadowColor(IHTMLStyle3 *iface, VARIANT v)
202 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
203 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
207 static HRESULT WINAPI HTMLStyle3_get_scrollbarShadowColor(IHTMLStyle3 *iface, VARIANT *p)
209 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
210 FIXME("(%p)->(%p)\n", This, p);
214 static HRESULT WINAPI HTMLStyle3_put_scrollbarHighlightColor(IHTMLStyle3 *iface, VARIANT v)
216 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
217 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
221 static HRESULT WINAPI HTMLStyle3_get_scrollbarHighlightColor(IHTMLStyle3 *iface, VARIANT *p)
223 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
224 FIXME("(%p)->(%p)\n", This, p);
228 static HRESULT WINAPI HTMLStyle3_put_scrollbarDarkShadowColor(IHTMLStyle3 *iface, VARIANT v)
230 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
231 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
235 static HRESULT WINAPI HTMLStyle3_get_scrollbarDarkShadowColor(IHTMLStyle3 *iface, VARIANT *p)
237 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
238 FIXME("(%p)->(%p)\n", This, p);
242 static HRESULT WINAPI HTMLStyle3_put_scrollbarArrowColor(IHTMLStyle3 *iface, VARIANT v)
244 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
245 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
249 static HRESULT WINAPI HTMLStyle3_get_scrollbarArrowColor(IHTMLStyle3 *iface, VARIANT *p)
251 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
252 FIXME("(%p)->(%p)\n", This, p);
256 static HRESULT WINAPI HTMLStyle3_put_scrollbarTrackColor(IHTMLStyle3 *iface, VARIANT v)
258 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
259 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
263 static HRESULT WINAPI HTMLStyle3_get_scrollbarTrackColor(IHTMLStyle3 *iface, VARIANT *p)
265 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
266 FIXME("(%p)->(%p)\n", This, p);
270 static HRESULT WINAPI HTMLStyle3_put_writingMode(IHTMLStyle3 *iface, BSTR v)
272 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
273 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
277 static HRESULT WINAPI HTMLStyle3_get_writingMode(IHTMLStyle3 *iface, BSTR *p)
279 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
280 FIXME("(%p)->(%p)\n", This, p);
284 static HRESULT WINAPI HTMLStyle3_put_textAlignLast(IHTMLStyle3 *iface, BSTR v)
286 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
287 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
291 static HRESULT WINAPI HTMLStyle3_get_textAlignLast(IHTMLStyle3 *iface, BSTR *p)
293 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
294 FIXME("(%p)->(%p)\n", This, p);
298 static HRESULT WINAPI HTMLStyle3_put_textKashidaSpace(IHTMLStyle3 *iface, VARIANT v)
300 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
301 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
305 static HRESULT WINAPI HTMLStyle3_get_textKashidaSpace(IHTMLStyle3 *iface, VARIANT *p)
307 HTMLStyle *This = HTMLSTYLE3_THIS(iface);
308 FIXME("(%p)->(%p)\n", This, p);
312 static const IHTMLStyle3Vtbl HTMLStyle3Vtbl = {
313 HTMLStyle3_QueryInterface,
316 HTMLStyle3_GetTypeInfoCount,
317 HTMLStyle3_GetTypeInfo,
318 HTMLStyle3_GetIDsOfNames,
320 HTMLStyle3_put_layoutFlow,
321 HTMLStyle3_get_layoutFlow,
324 HTMLStyle3_put_wordWrap,
325 HTMLStyle3_get_wordWrap,
326 HTMLStyle3_put_textUnderlinePosition,
327 HTMLStyle3_get_textUnderlinePosition,
328 HTMLStyle3_put_scrollbarBaseColor,
329 HTMLStyle3_get_scrollbarBaseColor,
330 HTMLStyle3_put_scrollbarFaceColor,
331 HTMLStyle3_get_scrollbarFaceColor,
332 HTMLStyle3_put_scrollbar3dLightColor,
333 HTMLStyle3_get_scrollbar3dLightColor,
334 HTMLStyle3_put_scrollbarShadowColor,
335 HTMLStyle3_get_scrollbarShadowColor,
336 HTMLStyle3_put_scrollbarHighlightColor,
337 HTMLStyle3_get_scrollbarHighlightColor,
338 HTMLStyle3_put_scrollbarDarkShadowColor,
339 HTMLStyle3_get_scrollbarDarkShadowColor,
340 HTMLStyle3_put_scrollbarArrowColor,
341 HTMLStyle3_get_scrollbarArrowColor,
342 HTMLStyle3_put_scrollbarTrackColor,
343 HTMLStyle3_get_scrollbarTrackColor,
344 HTMLStyle3_put_writingMode,
345 HTMLStyle3_get_writingMode,
346 HTMLStyle3_put_textAlignLast,
347 HTMLStyle3_get_textAlignLast,
348 HTMLStyle3_put_textKashidaSpace,
349 HTMLStyle3_get_textKashidaSpace
353 * IHTMLStyle4 Interface
355 #define HTMLSTYLE4_THIS(iface) DEFINE_THIS(HTMLStyle, HTMLStyle4, iface)
357 static HRESULT WINAPI HTMLStyle4_QueryInterface(IHTMLStyle4 *iface, REFIID riid, void **ppv)
359 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
361 return IHTMLStyle_QueryInterface(HTMLSTYLE(This), riid, ppv);
364 static ULONG WINAPI HTMLStyle4_AddRef(IHTMLStyle4 *iface)
366 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
368 return IHTMLStyle_AddRef(HTMLSTYLE(This));
371 static ULONG WINAPI HTMLStyle4_Release(IHTMLStyle4 *iface)
373 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
375 return IHTMLStyle_Release(HTMLSTYLE(This));
378 static HRESULT WINAPI HTMLStyle4_GetTypeInfoCount(IHTMLStyle4 *iface, UINT *pctinfo)
380 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
381 return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
384 static HRESULT WINAPI HTMLStyle4_GetTypeInfo(IHTMLStyle4 *iface, UINT iTInfo,
385 LCID lcid, ITypeInfo **ppTInfo)
387 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
388 return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
391 static HRESULT WINAPI HTMLStyle4_GetIDsOfNames(IHTMLStyle4 *iface, REFIID riid,
392 LPOLESTR *rgszNames, UINT cNames,
393 LCID lcid, DISPID *rgDispId)
395 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
396 return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
400 static HRESULT WINAPI HTMLStyle4_Invoke(IHTMLStyle4 *iface, DISPID dispIdMember,
401 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
402 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
404 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
405 return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
406 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
409 static HRESULT WINAPI HTMLStyle4_put_textOverflow(IHTMLStyle4 *iface, BSTR v)
411 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
412 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
416 static HRESULT WINAPI HTMLStyle4_get_textOverflow(IHTMLStyle4 *iface, BSTR *p)
418 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
419 FIXME("(%p)->(%p)\n", This, p);
423 static HRESULT WINAPI HTMLStyle4_put_minHeight(IHTMLStyle4 *iface, VARIANT v)
425 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
427 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
429 return set_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_HEIGHT, &v, 0);
432 static HRESULT WINAPI HTMLStyle4_get_minHeight(IHTMLStyle4 *iface, VARIANT *p)
434 HTMLStyle *This = HTMLSTYLE4_THIS(iface);
436 TRACE("(%p)->(%p)\n", This, p);
438 return get_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_HEIGHT, p, 0);
441 static const IHTMLStyle4Vtbl HTMLStyle4Vtbl = {
442 HTMLStyle4_QueryInterface,
445 HTMLStyle4_GetTypeInfoCount,
446 HTMLStyle4_GetTypeInfo,
447 HTMLStyle4_GetIDsOfNames,
449 HTMLStyle4_put_textOverflow,
450 HTMLStyle4_get_textOverflow,
451 HTMLStyle4_put_minHeight,
452 HTMLStyle4_get_minHeight
455 void HTMLStyle3_Init(HTMLStyle *This)
457 This->lpHTMLStyle3Vtbl = &HTMLStyle3Vtbl;
458 This->lpHTMLStyle4Vtbl = &HTMLStyle4Vtbl;