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