xref: /reactos/dll/win32/mshtml/htmlstyle3.c (revision 40462c92)
1 /*
2  * Copyright 2009 Alistair Leslie-Hughes
3  *
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.
8  *
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.
13  *
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
17  */
18 
19 #include "mshtml_private.h"
20 
21 static inline HTMLStyle *impl_from_IHTMLStyle3(IHTMLStyle3 *iface)
22 {
23     return CONTAINING_RECORD(iface, HTMLStyle, IHTMLStyle3_iface);
24 }
25 
26 static HRESULT WINAPI HTMLStyle3_QueryInterface(IHTMLStyle3 *iface, REFIID riid, void **ppv)
27 {
28     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
29 
30     return IHTMLStyle_QueryInterface(&This->IHTMLStyle_iface, riid, ppv);
31 }
32 
33 static ULONG WINAPI HTMLStyle3_AddRef(IHTMLStyle3 *iface)
34 {
35     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
36 
37     return IHTMLStyle_AddRef(&This->IHTMLStyle_iface);
38 }
39 
40 static ULONG WINAPI HTMLStyle3_Release(IHTMLStyle3 *iface)
41 {
42     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
43 
44     return IHTMLStyle_Release(&This->IHTMLStyle_iface);
45 }
46 
47 static HRESULT WINAPI HTMLStyle3_GetTypeInfoCount(IHTMLStyle3 *iface, UINT *pctinfo)
48 {
49     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
50     return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
51 }
52 
53 static HRESULT WINAPI HTMLStyle3_GetTypeInfo(IHTMLStyle3 *iface, UINT iTInfo,
54                                               LCID lcid, ITypeInfo **ppTInfo)
55 {
56     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
57     return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
58 }
59 
60 static HRESULT WINAPI HTMLStyle3_GetIDsOfNames(IHTMLStyle3 *iface, REFIID riid,
61                                                 LPOLESTR *rgszNames, UINT cNames,
62                                                 LCID lcid, DISPID *rgDispId)
63 {
64     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
65     return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
66             lcid, rgDispId);
67 }
68 
69 static HRESULT WINAPI HTMLStyle3_Invoke(IHTMLStyle3 *iface, DISPID dispIdMember,
70                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
71                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
72 {
73     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
74     return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
75             wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
76 }
77 
78 static HRESULT WINAPI HTMLStyle3_put_layoutFlow(IHTMLStyle3 *iface, BSTR v)
79 {
80     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
81     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
82     return E_NOTIMPL;
83 }
84 
85 static HRESULT WINAPI HTMLStyle3_get_layoutFlow(IHTMLStyle3 *iface, BSTR *p)
86 {
87     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
88     FIXME("(%p)->(%p)\n", This, p);
89     return E_NOTIMPL;
90 }
91 
92 static const WCHAR zoomW[] = {'z','o','o','m',0};
93 
94 static HRESULT WINAPI HTMLStyle3_put_zoom(IHTMLStyle3 *iface, VARIANT v)
95 {
96     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
97     VARIANT *var;
98     HRESULT hres;
99 
100     TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
101 
102     /* zoom property is IE CSS extension that is mostly used as a hack to workaround IE bugs.
103      * The value is set to 1 then. We can safely ignore setting zoom to 1. */
104     if(V_VT(&v) != VT_I4 || V_I4(&v) != 1)
105         WARN("stub for %s\n", debugstr_variant(&v));
106 
107     hres = dispex_get_dprop_ref(&This->dispex, zoomW, TRUE, &var);
108     if(FAILED(hres))
109         return hres;
110 
111     return VariantChangeType(var, &v, 0, VT_BSTR);
112 }
113 
114 static HRESULT WINAPI HTMLStyle3_get_zoom(IHTMLStyle3 *iface, VARIANT *p)
115 {
116     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
117     VARIANT *var;
118     HRESULT hres;
119 
120     TRACE("(%p)->(%p)\n", This, p);
121 
122     hres = dispex_get_dprop_ref(&This->dispex, zoomW, FALSE, &var);
123     if(hres == DISP_E_UNKNOWNNAME) {
124         V_VT(p) = VT_BSTR;
125         V_BSTR(p) = NULL;
126         return S_OK;
127     }
128     if(FAILED(hres))
129         return hres;
130 
131     return VariantCopy(p, var);
132 }
133 
134 static HRESULT WINAPI HTMLStyle3_put_wordWrap(IHTMLStyle3 *iface, BSTR v)
135 {
136     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
137 
138     TRACE("(%p)->(%s)\n", This, debugstr_w(v));
139 
140     return set_nsstyle_attr(This->nsstyle, STYLEID_WORD_WRAP, v, 0);
141 }
142 
143 static HRESULT WINAPI HTMLStyle3_get_wordWrap(IHTMLStyle3 *iface, BSTR *p)
144 {
145     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
146 
147     TRACE("(%p)->(%p)\n", This, p);
148 
149     return get_nsstyle_attr(This->nsstyle, STYLEID_WORD_WRAP, p, 0);
150 }
151 
152 static HRESULT WINAPI HTMLStyle3_put_textUnderlinePosition(IHTMLStyle3 *iface, BSTR v)
153 {
154     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
155     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
156     return E_NOTIMPL;
157 }
158 
159 static HRESULT WINAPI HTMLStyle3_get_textUnderlinePosition(IHTMLStyle3 *iface, BSTR *p)
160 {
161     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
162     FIXME("(%p)->(%p)\n", This, p);
163     return E_NOTIMPL;
164 }
165 
166 static HRESULT WINAPI HTMLStyle3_put_scrollbarBaseColor(IHTMLStyle3 *iface, VARIANT v)
167 {
168     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
169     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
170     return E_NOTIMPL;
171 }
172 
173 static HRESULT WINAPI HTMLStyle3_get_scrollbarBaseColor(IHTMLStyle3 *iface, VARIANT *p)
174 {
175     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
176     FIXME("(%p)->(%p)\n", This, p);
177     return E_NOTIMPL;
178 }
179 
180 static HRESULT WINAPI HTMLStyle3_put_scrollbarFaceColor(IHTMLStyle3 *iface, VARIANT v)
181 {
182     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
183     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
184     return E_NOTIMPL;
185 }
186 
187 static HRESULT WINAPI HTMLStyle3_get_scrollbarFaceColor(IHTMLStyle3 *iface, VARIANT *p)
188 {
189     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
190     FIXME("(%p)->(%p)\n", This, p);
191     return E_NOTIMPL;
192 }
193 
194 static HRESULT WINAPI HTMLStyle3_put_scrollbar3dLightColor(IHTMLStyle3 *iface, VARIANT v)
195 {
196     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
197     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
198     return E_NOTIMPL;
199 }
200 
201 static HRESULT WINAPI HTMLStyle3_get_scrollbar3dLightColor(IHTMLStyle3 *iface, VARIANT *p)
202 {
203     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
204     FIXME("(%p)->(%p)\n", This, p);
205     return E_NOTIMPL;
206 }
207 
208 static HRESULT WINAPI HTMLStyle3_put_scrollbarShadowColor(IHTMLStyle3 *iface, VARIANT v)
209 {
210     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
211     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
212     return E_NOTIMPL;
213 }
214 
215 static HRESULT WINAPI HTMLStyle3_get_scrollbarShadowColor(IHTMLStyle3 *iface, VARIANT *p)
216 {
217     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
218     FIXME("(%p)->(%p)\n", This, p);
219     return E_NOTIMPL;
220 }
221 
222 static HRESULT WINAPI HTMLStyle3_put_scrollbarHighlightColor(IHTMLStyle3 *iface, VARIANT v)
223 {
224     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
225     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
226     return E_NOTIMPL;
227 }
228 
229 static HRESULT WINAPI HTMLStyle3_get_scrollbarHighlightColor(IHTMLStyle3 *iface, VARIANT *p)
230 {
231     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
232     FIXME("(%p)->(%p)\n", This, p);
233     return E_NOTIMPL;
234 }
235 
236 static HRESULT WINAPI HTMLStyle3_put_scrollbarDarkShadowColor(IHTMLStyle3 *iface, VARIANT v)
237 {
238     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
239     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
240     return E_NOTIMPL;
241 }
242 
243 static HRESULT WINAPI HTMLStyle3_get_scrollbarDarkShadowColor(IHTMLStyle3 *iface, VARIANT *p)
244 {
245     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
246     FIXME("(%p)->(%p)\n", This, p);
247     return E_NOTIMPL;
248 }
249 
250 static HRESULT WINAPI HTMLStyle3_put_scrollbarArrowColor(IHTMLStyle3 *iface, VARIANT v)
251 {
252     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
253     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
254     return E_NOTIMPL;
255 }
256 
257 static HRESULT WINAPI HTMLStyle3_get_scrollbarArrowColor(IHTMLStyle3 *iface, VARIANT *p)
258 {
259     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
260     FIXME("(%p)->(%p)\n", This, p);
261     return E_NOTIMPL;
262 }
263 
264 static HRESULT WINAPI HTMLStyle3_put_scrollbarTrackColor(IHTMLStyle3 *iface, VARIANT v)
265 {
266     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
267     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
268     return E_NOTIMPL;
269 }
270 
271 static HRESULT WINAPI HTMLStyle3_get_scrollbarTrackColor(IHTMLStyle3 *iface, VARIANT *p)
272 {
273     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
274     FIXME("(%p)->(%p)\n", This, p);
275     return E_NOTIMPL;
276 }
277 
278 static HRESULT WINAPI HTMLStyle3_put_writingMode(IHTMLStyle3 *iface, BSTR v)
279 {
280     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
281     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
282     return E_NOTIMPL;
283 }
284 
285 static HRESULT WINAPI HTMLStyle3_get_writingMode(IHTMLStyle3 *iface, BSTR *p)
286 {
287     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
288     FIXME("(%p)->(%p)\n", This, p);
289     return E_NOTIMPL;
290 }
291 
292 static HRESULT WINAPI HTMLStyle3_put_textAlignLast(IHTMLStyle3 *iface, BSTR v)
293 {
294     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
295     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
296     return E_NOTIMPL;
297 }
298 
299 static HRESULT WINAPI HTMLStyle3_get_textAlignLast(IHTMLStyle3 *iface, BSTR *p)
300 {
301     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
302     FIXME("(%p)->(%p)\n", This, p);
303     return E_NOTIMPL;
304 }
305 
306 static HRESULT WINAPI HTMLStyle3_put_textKashidaSpace(IHTMLStyle3 *iface, VARIANT v)
307 {
308     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
309     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
310     return E_NOTIMPL;
311 }
312 
313 static HRESULT WINAPI HTMLStyle3_get_textKashidaSpace(IHTMLStyle3 *iface, VARIANT *p)
314 {
315     HTMLStyle *This = impl_from_IHTMLStyle3(iface);
316     FIXME("(%p)->(%p)\n", This, p);
317     return E_NOTIMPL;
318 }
319 
320 static const IHTMLStyle3Vtbl HTMLStyle3Vtbl = {
321     HTMLStyle3_QueryInterface,
322     HTMLStyle3_AddRef,
323     HTMLStyle3_Release,
324     HTMLStyle3_GetTypeInfoCount,
325     HTMLStyle3_GetTypeInfo,
326     HTMLStyle3_GetIDsOfNames,
327     HTMLStyle3_Invoke,
328     HTMLStyle3_put_layoutFlow,
329     HTMLStyle3_get_layoutFlow,
330     HTMLStyle3_put_zoom,
331     HTMLStyle3_get_zoom,
332     HTMLStyle3_put_wordWrap,
333     HTMLStyle3_get_wordWrap,
334     HTMLStyle3_put_textUnderlinePosition,
335     HTMLStyle3_get_textUnderlinePosition,
336     HTMLStyle3_put_scrollbarBaseColor,
337     HTMLStyle3_get_scrollbarBaseColor,
338     HTMLStyle3_put_scrollbarFaceColor,
339     HTMLStyle3_get_scrollbarFaceColor,
340     HTMLStyle3_put_scrollbar3dLightColor,
341     HTMLStyle3_get_scrollbar3dLightColor,
342     HTMLStyle3_put_scrollbarShadowColor,
343     HTMLStyle3_get_scrollbarShadowColor,
344     HTMLStyle3_put_scrollbarHighlightColor,
345     HTMLStyle3_get_scrollbarHighlightColor,
346     HTMLStyle3_put_scrollbarDarkShadowColor,
347     HTMLStyle3_get_scrollbarDarkShadowColor,
348     HTMLStyle3_put_scrollbarArrowColor,
349     HTMLStyle3_get_scrollbarArrowColor,
350     HTMLStyle3_put_scrollbarTrackColor,
351     HTMLStyle3_get_scrollbarTrackColor,
352     HTMLStyle3_put_writingMode,
353     HTMLStyle3_get_writingMode,
354     HTMLStyle3_put_textAlignLast,
355     HTMLStyle3_get_textAlignLast,
356     HTMLStyle3_put_textKashidaSpace,
357     HTMLStyle3_get_textKashidaSpace
358 };
359 
360 /*
361  * IHTMLStyle4 Interface
362  */
363 static inline HTMLStyle *impl_from_IHTMLStyle4(IHTMLStyle4 *iface)
364 {
365     return CONTAINING_RECORD(iface, HTMLStyle, IHTMLStyle4_iface);
366 }
367 
368 static HRESULT WINAPI HTMLStyle4_QueryInterface(IHTMLStyle4 *iface, REFIID riid, void **ppv)
369 {
370     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
371 
372     return IHTMLStyle_QueryInterface(&This->IHTMLStyle_iface, riid, ppv);
373 }
374 
375 static ULONG WINAPI HTMLStyle4_AddRef(IHTMLStyle4 *iface)
376 {
377     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
378 
379     return IHTMLStyle_AddRef(&This->IHTMLStyle_iface);
380 }
381 
382 static ULONG WINAPI HTMLStyle4_Release(IHTMLStyle4 *iface)
383 {
384     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
385 
386     return IHTMLStyle_Release(&This->IHTMLStyle_iface);
387 }
388 
389 static HRESULT WINAPI HTMLStyle4_GetTypeInfoCount(IHTMLStyle4 *iface, UINT *pctinfo)
390 {
391     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
392     return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
393 }
394 
395 static HRESULT WINAPI HTMLStyle4_GetTypeInfo(IHTMLStyle4 *iface, UINT iTInfo,
396                                               LCID lcid, ITypeInfo **ppTInfo)
397 {
398     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
399     return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
400 }
401 
402 static HRESULT WINAPI HTMLStyle4_GetIDsOfNames(IHTMLStyle4 *iface, REFIID riid,
403                                                 LPOLESTR *rgszNames, UINT cNames,
404                                                 LCID lcid, DISPID *rgDispId)
405 {
406     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
407     return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
408             lcid, rgDispId);
409 }
410 
411 static HRESULT WINAPI HTMLStyle4_Invoke(IHTMLStyle4 *iface, DISPID dispIdMember,
412                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
413                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
414 {
415     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
416     return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
417             wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
418 }
419 
420 static HRESULT WINAPI HTMLStyle4_put_textOverflow(IHTMLStyle4 *iface, BSTR v)
421 {
422     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
423     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
424     return E_NOTIMPL;
425 }
426 
427 static HRESULT WINAPI HTMLStyle4_get_textOverflow(IHTMLStyle4 *iface, BSTR *p)
428 {
429     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
430     FIXME("(%p)->(%p)\n", This, p);
431     return E_NOTIMPL;
432 }
433 
434 static HRESULT WINAPI HTMLStyle4_put_minHeight(IHTMLStyle4 *iface, VARIANT v)
435 {
436     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
437 
438     TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
439 
440     return set_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_HEIGHT, &v, 0);
441 }
442 
443 static HRESULT WINAPI HTMLStyle4_get_minHeight(IHTMLStyle4 *iface, VARIANT *p)
444 {
445     HTMLStyle *This = impl_from_IHTMLStyle4(iface);
446 
447     TRACE("(%p)->(%p)\n", This, p);
448 
449     return get_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_HEIGHT, p, 0);
450 }
451 
452 static const IHTMLStyle4Vtbl HTMLStyle4Vtbl = {
453     HTMLStyle4_QueryInterface,
454     HTMLStyle4_AddRef,
455     HTMLStyle4_Release,
456     HTMLStyle4_GetTypeInfoCount,
457     HTMLStyle4_GetTypeInfo,
458     HTMLStyle4_GetIDsOfNames,
459     HTMLStyle4_Invoke,
460     HTMLStyle4_put_textOverflow,
461     HTMLStyle4_get_textOverflow,
462     HTMLStyle4_put_minHeight,
463     HTMLStyle4_get_minHeight
464 };
465 
466 static inline HTMLStyle *impl_from_IHTMLStyle5(IHTMLStyle5 *iface)
467 {
468     return CONTAINING_RECORD(iface, HTMLStyle, IHTMLStyle5_iface);
469 }
470 
471 static HRESULT WINAPI HTMLStyle5_QueryInterface(IHTMLStyle5 *iface, REFIID riid, void **ppv)
472 {
473     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
474 
475     return IHTMLStyle_QueryInterface(&This->IHTMLStyle_iface, riid, ppv);
476 }
477 
478 static ULONG WINAPI HTMLStyle5_AddRef(IHTMLStyle5 *iface)
479 {
480     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
481 
482     return IHTMLStyle_AddRef(&This->IHTMLStyle_iface);
483 }
484 
485 static ULONG WINAPI HTMLStyle5_Release(IHTMLStyle5 *iface)
486 {
487     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
488 
489     return IHTMLStyle_Release(&This->IHTMLStyle_iface);
490 }
491 
492 static HRESULT WINAPI HTMLStyle5_GetTypeInfoCount(IHTMLStyle5 *iface, UINT *pctinfo)
493 {
494     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
495     return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
496 }
497 
498 static HRESULT WINAPI HTMLStyle5_GetTypeInfo(IHTMLStyle5 *iface, UINT iTInfo,
499         LCID lcid, ITypeInfo **ppTInfo)
500 {
501     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
502     return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
503 }
504 
505 static HRESULT WINAPI HTMLStyle5_GetIDsOfNames(IHTMLStyle5 *iface, REFIID riid,
506         LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
507 {
508     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
509     return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
510             lcid, rgDispId);
511 }
512 
513 static HRESULT WINAPI HTMLStyle5_Invoke(IHTMLStyle5 *iface, DISPID dispIdMember,
514                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
515                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
516 {
517     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
518     return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
519             wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
520 }
521 
522 static HRESULT WINAPI HTMLStyle5_put_msInterpolationMode(IHTMLStyle5 *iface, BSTR v)
523 {
524     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
525     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
526     return E_NOTIMPL;
527 }
528 
529 static HRESULT WINAPI HTMLStyle5_get_msInterpolationMode(IHTMLStyle5 *iface, BSTR *p)
530 {
531     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
532     FIXME("(%p)->(%p)\n", This, p);
533     return E_NOTIMPL;
534 }
535 
536 static HRESULT WINAPI HTMLStyle5_put_maxHeight(IHTMLStyle5 *iface, VARIANT v)
537 {
538     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
539 
540     TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
541 
542     return set_nsstyle_attr_var(This->nsstyle, STYLEID_MAX_HEIGHT, &v, ATTR_FIX_PX);
543 }
544 
545 static HRESULT WINAPI HTMLStyle5_get_maxHeight(IHTMLStyle5 *iface, VARIANT *p)
546 {
547     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
548 
549     TRACE("(%p)->(%s)\n", This, debugstr_variant(p));
550 
551     return get_nsstyle_attr_var(This->nsstyle, STYLEID_MAX_HEIGHT, p, 0);
552 }
553 
554 static HRESULT WINAPI HTMLStyle5_put_minWidth(IHTMLStyle5 *iface, VARIANT v)
555 {
556     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
557 
558     TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
559 
560     return set_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_WIDTH, &v, ATTR_FIX_PX);
561 }
562 
563 static HRESULT WINAPI HTMLStyle5_get_minWidth(IHTMLStyle5 *iface, VARIANT *p)
564 {
565     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
566 
567     TRACE("(%p)->(%p)\n", This, p);
568 
569     return get_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_WIDTH, p, 0);
570 }
571 
572 static HRESULT WINAPI HTMLStyle5_put_maxWidth(IHTMLStyle5 *iface, VARIANT v)
573 {
574     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
575 
576     TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
577 
578     return set_nsstyle_attr_var(This->nsstyle, STYLEID_MAX_WIDTH, &v, ATTR_FIX_PX);
579 }
580 
581 static HRESULT WINAPI HTMLStyle5_get_maxWidth(IHTMLStyle5 *iface, VARIANT *p)
582 {
583     HTMLStyle *This = impl_from_IHTMLStyle5(iface);
584 
585     TRACE("(%p)->(%p)\n", This, p);
586 
587     return get_nsstyle_attr_var(This->nsstyle, STYLEID_MAX_WIDTH, p, 0);
588 }
589 
590 static const IHTMLStyle5Vtbl HTMLStyle5Vtbl = {
591     HTMLStyle5_QueryInterface,
592     HTMLStyle5_AddRef,
593     HTMLStyle5_Release,
594     HTMLStyle5_GetTypeInfoCount,
595     HTMLStyle5_GetTypeInfo,
596     HTMLStyle5_GetIDsOfNames,
597     HTMLStyle5_Invoke,
598     HTMLStyle5_put_msInterpolationMode,
599     HTMLStyle5_get_msInterpolationMode,
600     HTMLStyle5_put_maxHeight,
601     HTMLStyle5_get_maxHeight,
602     HTMLStyle5_put_minWidth,
603     HTMLStyle5_get_minWidth,
604     HTMLStyle5_put_maxWidth,
605     HTMLStyle5_get_maxWidth
606 };
607 
608 static inline HTMLStyle *impl_from_IHTMLStyle6(IHTMLStyle6 *iface)
609 {
610     return CONTAINING_RECORD(iface, HTMLStyle, IHTMLStyle6_iface);
611 }
612 
613 static HRESULT WINAPI HTMLStyle6_QueryInterface(IHTMLStyle6 *iface, REFIID riid, void **ppv)
614 {
615     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
616 
617     return IHTMLStyle_QueryInterface(&This->IHTMLStyle_iface, riid, ppv);
618 }
619 
620 static ULONG WINAPI HTMLStyle6_AddRef(IHTMLStyle6 *iface)
621 {
622     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
623 
624     return IHTMLStyle_AddRef(&This->IHTMLStyle_iface);
625 }
626 
627 static ULONG WINAPI HTMLStyle6_Release(IHTMLStyle6 *iface)
628 {
629     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
630 
631     return IHTMLStyle_Release(&This->IHTMLStyle_iface);
632 }
633 
634 static HRESULT WINAPI HTMLStyle6_GetTypeInfoCount(IHTMLStyle6 *iface, UINT *pctinfo)
635 {
636     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
637     return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
638 }
639 
640 static HRESULT WINAPI HTMLStyle6_GetTypeInfo(IHTMLStyle6 *iface, UINT iTInfo,
641         LCID lcid, ITypeInfo **ppTInfo)
642 {
643     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
644     return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
645 }
646 
647 static HRESULT WINAPI HTMLStyle6_GetIDsOfNames(IHTMLStyle6 *iface, REFIID riid,
648         LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
649 {
650     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
651     return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
652             lcid, rgDispId);
653 }
654 
655 static HRESULT WINAPI HTMLStyle6_Invoke(IHTMLStyle6 *iface, DISPID dispIdMember,
656                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
657                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
658 {
659     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
660     return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
661             wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
662 }
663 
664 static HRESULT WINAPI HTMLStyle6_put_content(IHTMLStyle6 *iface, BSTR v)
665 {
666     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
667     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
668     return E_NOTIMPL;
669 }
670 
671 static HRESULT WINAPI HTMLStyle6_get_content(IHTMLStyle6 *iface, BSTR *p)
672 {
673     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
674     FIXME("(%p)->(%p)\n", This, p);
675     return E_NOTIMPL;
676 }
677 
678 static HRESULT WINAPI HTMLStyle6_put_contentSide(IHTMLStyle6 *iface, BSTR v)
679 {
680     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
681     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
682     return E_NOTIMPL;
683 }
684 
685 static HRESULT WINAPI HTMLStyle6_get_contentSide(IHTMLStyle6 *iface, BSTR *p)
686 {
687     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
688     FIXME("(%p)->(%p)\n", This, p);
689     return E_NOTIMPL;
690 }
691 
692 static HRESULT WINAPI HTMLStyle6_put_counterIncrement(IHTMLStyle6 *iface, BSTR v)
693 {
694     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
695     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
696     return E_NOTIMPL;
697 }
698 
699 static HRESULT WINAPI HTMLStyle6_get_counterIncrement(IHTMLStyle6 *iface, BSTR *p)
700 {
701     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
702     FIXME("(%p)->(%p)\n", This, p);
703     return E_NOTIMPL;
704 }
705 
706 static HRESULT WINAPI HTMLStyle6_put_counterReset(IHTMLStyle6 *iface, BSTR v)
707 {
708     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
709     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
710     return E_NOTIMPL;
711 }
712 
713 static HRESULT WINAPI HTMLStyle6_get_counterReset(IHTMLStyle6 *iface, BSTR *p)
714 {
715     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
716     FIXME("(%p)->(%p)\n", This, p);
717     return E_NOTIMPL;
718 }
719 
720 static HRESULT WINAPI HTMLStyle6_put_outline(IHTMLStyle6 *iface, BSTR v)
721 {
722     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
723 
724     TRACE("(%p)->(%s)\n", This, debugstr_w(v));
725 
726     return set_nsstyle_attr(This->nsstyle, STYLEID_OUTLINE, v, 0);
727 }
728 
729 static HRESULT WINAPI HTMLStyle6_get_outline(IHTMLStyle6 *iface, BSTR *p)
730 {
731     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
732 
733     TRACE("(%p)->(%p)\n", This, p);
734 
735     return get_nsstyle_attr(This->nsstyle, STYLEID_OUTLINE, p, ATTR_NO_NULL);
736 }
737 
738 static HRESULT WINAPI HTMLStyle6_put_outlineWidth(IHTMLStyle6 *iface, VARIANT v)
739 {
740     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
741     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
742     return E_NOTIMPL;
743 }
744 
745 static HRESULT WINAPI HTMLStyle6_get_outlineWidth(IHTMLStyle6 *iface, VARIANT *p)
746 {
747     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
748     FIXME("(%p)->(%p)\n", This, p);
749     return E_NOTIMPL;
750 }
751 
752 static HRESULT WINAPI HTMLStyle6_put_outlineStyle(IHTMLStyle6 *iface, BSTR v)
753 {
754     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
755     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
756     return E_NOTIMPL;
757 }
758 
759 static HRESULT WINAPI HTMLStyle6_get_outlineStyle(IHTMLStyle6 *iface, BSTR *p)
760 {
761     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
762     FIXME("(%p)->(%p)\n", This, p);
763     return E_NOTIMPL;
764 }
765 
766 static HRESULT WINAPI HTMLStyle6_put_outlineColor(IHTMLStyle6 *iface, VARIANT v)
767 {
768     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
769     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
770     return E_NOTIMPL;
771 }
772 
773 static HRESULT WINAPI HTMLStyle6_get_outlineColor(IHTMLStyle6 *iface, VARIANT *p)
774 {
775     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
776     FIXME("(%p)->(%p)\n", This, p);
777     return E_NOTIMPL;
778 }
779 
780 static HRESULT WINAPI HTMLStyle6_put_boxSizing(IHTMLStyle6 *iface, BSTR v)
781 {
782     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
783 
784     TRACE("(%p)->(%s)\n", This, debugstr_w(v));
785 
786     return set_nsstyle_attr(This->nsstyle, STYLEID_BOX_SIZING, v, 0);
787 }
788 
789 static HRESULT WINAPI HTMLStyle6_get_boxSizing(IHTMLStyle6 *iface, BSTR *p)
790 {
791     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
792 
793     TRACE("(%p)->(%p)\n", This, p);
794 
795     return get_nsstyle_attr(This->nsstyle, STYLEID_BOX_SIZING, p, 0);
796 }
797 
798 static HRESULT WINAPI HTMLStyle6_put_boxSpacing(IHTMLStyle6 *iface, BSTR v)
799 {
800     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
801     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
802     return E_NOTIMPL;
803 }
804 
805 static HRESULT WINAPI HTMLStyle6_get_boxSpacing(IHTMLStyle6 *iface, BSTR *p)
806 {
807     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
808     FIXME("(%p)->(%p)\n", This, p);
809     return E_NOTIMPL;
810 }
811 
812 static HRESULT WINAPI HTMLStyle6_put_orphans(IHTMLStyle6 *iface, VARIANT v)
813 {
814     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
815     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
816     return E_NOTIMPL;
817 }
818 
819 static HRESULT WINAPI HTMLStyle6_get_orphans(IHTMLStyle6 *iface, VARIANT *p)
820 {
821     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
822     FIXME("(%p)->(%p)\n", This, p);
823     return E_NOTIMPL;
824 }
825 
826 static HRESULT WINAPI HTMLStyle6_put_windows(IHTMLStyle6 *iface, VARIANT v)
827 {
828     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
829     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
830     return E_NOTIMPL;
831 }
832 
833 static HRESULT WINAPI HTMLStyle6_get_windows(IHTMLStyle6 *iface, VARIANT *p)
834 {
835     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
836     FIXME("(%p)->(%p)\n", This, p);
837     return E_NOTIMPL;
838 }
839 
840 static HRESULT WINAPI HTMLStyle6_put_pageBreakInside(IHTMLStyle6 *iface, BSTR v)
841 {
842     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
843     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
844     return E_NOTIMPL;
845 }
846 
847 static HRESULT WINAPI HTMLStyle6_get_pageBreakInside(IHTMLStyle6 *iface, BSTR *p)
848 {
849     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
850     FIXME("(%p)->(%p)\n", This, p);
851     return E_NOTIMPL;
852 }
853 
854 static HRESULT WINAPI HTMLStyle6_put_emptyCells(IHTMLStyle6 *iface, BSTR v)
855 {
856     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
857     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
858     return E_NOTIMPL;
859 }
860 
861 static HRESULT WINAPI HTMLStyle6_get_emptyCells(IHTMLStyle6 *iface, BSTR *p)
862 {
863     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
864     FIXME("(%p)->(%p)\n", This, p);
865     return E_NOTIMPL;
866 }
867 
868 static HRESULT WINAPI HTMLStyle6_put_msBlockProgression(IHTMLStyle6 *iface, BSTR v)
869 {
870     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
871     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
872     return E_NOTIMPL;
873 }
874 
875 static HRESULT WINAPI HTMLStyle6_get_msBlockProgression(IHTMLStyle6 *iface, BSTR *p)
876 {
877     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
878     FIXME("(%p)->(%p)\n", This, p);
879     return E_NOTIMPL;
880 }
881 
882 static HRESULT WINAPI HTMLStyle6_put_quotes(IHTMLStyle6 *iface, BSTR v)
883 {
884     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
885     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
886     return E_NOTIMPL;
887 }
888 
889 static HRESULT WINAPI HTMLStyle6_get_quotes(IHTMLStyle6 *iface, BSTR *p)
890 {
891     HTMLStyle *This = impl_from_IHTMLStyle6(iface);
892     FIXME("(%p)->(%p)\n", This, p);
893     return E_NOTIMPL;
894 }
895 
896 static const IHTMLStyle6Vtbl HTMLStyle6Vtbl = {
897     HTMLStyle6_QueryInterface,
898     HTMLStyle6_AddRef,
899     HTMLStyle6_Release,
900     HTMLStyle6_GetTypeInfoCount,
901     HTMLStyle6_GetTypeInfo,
902     HTMLStyle6_GetIDsOfNames,
903     HTMLStyle6_Invoke,
904     HTMLStyle6_put_content,
905     HTMLStyle6_get_content,
906     HTMLStyle6_put_contentSide,
907     HTMLStyle6_get_contentSide,
908     HTMLStyle6_put_counterIncrement,
909     HTMLStyle6_get_counterIncrement,
910     HTMLStyle6_put_counterReset,
911     HTMLStyle6_get_counterReset,
912     HTMLStyle6_put_outline,
913     HTMLStyle6_get_outline,
914     HTMLStyle6_put_outlineWidth,
915     HTMLStyle6_get_outlineWidth,
916     HTMLStyle6_put_outlineStyle,
917     HTMLStyle6_get_outlineStyle,
918     HTMLStyle6_put_outlineColor,
919     HTMLStyle6_get_outlineColor,
920     HTMLStyle6_put_boxSizing,
921     HTMLStyle6_get_boxSizing,
922     HTMLStyle6_put_boxSpacing,
923     HTMLStyle6_get_boxSpacing,
924     HTMLStyle6_put_orphans,
925     HTMLStyle6_get_orphans,
926     HTMLStyle6_put_windows,
927     HTMLStyle6_get_windows,
928     HTMLStyle6_put_pageBreakInside,
929     HTMLStyle6_get_pageBreakInside,
930     HTMLStyle6_put_emptyCells,
931     HTMLStyle6_get_emptyCells,
932     HTMLStyle6_put_msBlockProgression,
933     HTMLStyle6_get_msBlockProgression,
934     HTMLStyle6_put_quotes,
935     HTMLStyle6_get_quotes
936 };
937 
938 void HTMLStyle3_Init(HTMLStyle *This)
939 {
940     This->IHTMLStyle3_iface.lpVtbl = &HTMLStyle3Vtbl;
941     This->IHTMLStyle4_iface.lpVtbl = &HTMLStyle4Vtbl;
942     This->IHTMLStyle5_iface.lpVtbl = &HTMLStyle5Vtbl;
943     This->IHTMLStyle6_iface.lpVtbl = &HTMLStyle6Vtbl;
944 }
945