wininet/tests: Don't crash on W2K and below.
[wine] / dlls / mshtml / htmlstyle2.c
1 /*
2  * Copyright 2008 Jacek Caban for CodeWeavers
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 #include "wine/unicode.h"
33
34 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
35
36 #define HTMLSTYLE2_THIS(iface) DEFINE_THIS(HTMLStyle, HTMLStyle2, iface)
37
38 static HRESULT WINAPI HTMLStyle2_QueryInterface(IHTMLStyle2 *iface, REFIID riid, void **ppv)
39 {
40     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
41
42     return IHTMLStyle_QueryInterface(HTMLSTYLE(This), riid, ppv);
43 }
44
45 static ULONG WINAPI HTMLStyle2_AddRef(IHTMLStyle2 *iface)
46 {
47     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
48
49     return IHTMLStyle_AddRef(HTMLSTYLE(This));
50 }
51
52 static ULONG WINAPI HTMLStyle2_Release(IHTMLStyle2 *iface)
53 {
54     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
55
56     return IHTMLStyle_Release(HTMLSTYLE(This));
57 }
58
59 static HRESULT WINAPI HTMLStyle2_GetTypeInfoCount(IHTMLStyle2 *iface, UINT *pctinfo)
60 {
61     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
62     return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->dispex), pctinfo);
63 }
64
65 static HRESULT WINAPI HTMLStyle2_GetTypeInfo(IHTMLStyle2 *iface, UINT iTInfo,
66                                               LCID lcid, ITypeInfo **ppTInfo)
67 {
68     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
69     return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
70 }
71
72 static HRESULT WINAPI HTMLStyle2_GetIDsOfNames(IHTMLStyle2 *iface, REFIID riid,
73                                                 LPOLESTR *rgszNames, UINT cNames,
74                                                 LCID lcid, DISPID *rgDispId)
75 {
76     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
77     return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
78 }
79
80 static HRESULT WINAPI HTMLStyle2_Invoke(IHTMLStyle2 *iface, DISPID dispIdMember,
81                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
82                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
83 {
84     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
85     return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid,
86             wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
87 }
88
89 static HRESULT WINAPI HTMLStyle2_put_tableLayout(IHTMLStyle2 *iface, BSTR v)
90 {
91     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
92     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
93     return E_NOTIMPL;
94 }
95
96 static HRESULT WINAPI HTMLStyle2_get_tableLayout(IHTMLStyle2 *iface, BSTR *p)
97 {
98     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
99     FIXME("(%p)->(%p)\n", This, p);
100     return E_NOTIMPL;
101 }
102
103 static HRESULT WINAPI HTMLStyle2_put_borderCollapse(IHTMLStyle2 *iface, BSTR v)
104 {
105     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
106     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
107     return E_NOTIMPL;
108 }
109
110 static HRESULT WINAPI HTMLStyle2_get_borderCollapse(IHTMLStyle2 *iface, BSTR *p)
111 {
112     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
113     FIXME("(%p)->(%p)\n", This, p);
114     return E_NOTIMPL;
115 }
116
117 static HRESULT WINAPI HTMLStyle2_put_direction(IHTMLStyle2 *iface, BSTR v)
118 {
119     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
120     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
121     return E_NOTIMPL;
122 }
123
124 static HRESULT WINAPI HTMLStyle2_get_direction(IHTMLStyle2 *iface, BSTR *p)
125 {
126     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
127     FIXME("(%p)->(%p)\n", This, p);
128     return E_NOTIMPL;
129 }
130
131 static HRESULT WINAPI HTMLStyle2_put_behavior(IHTMLStyle2 *iface, BSTR v)
132 {
133     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
134     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
135     return E_NOTIMPL;
136 }
137
138 static HRESULT WINAPI HTMLStyle2_get_behavior(IHTMLStyle2 *iface, BSTR *p)
139 {
140     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
141     FIXME("(%p)->(%p)\n", This, p);
142     return E_NOTIMPL;
143 }
144
145 static HRESULT WINAPI HTMLStyle2_setExpression(IHTMLStyle2 *iface, BSTR propname, BSTR expression, BSTR language)
146 {
147     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
148     FIXME("(%p)->(%s %s %s)\n", This, debugstr_w(propname), debugstr_w(expression), debugstr_w(language));
149     return E_NOTIMPL;
150 }
151
152 static HRESULT WINAPI HTMLStyle2_getExpression(IHTMLStyle2 *iface, BSTR propname, VARIANT *expression)
153 {
154     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
155     FIXME("(%p)->(%s %p)\n", This, debugstr_w(propname), expression);
156     return E_NOTIMPL;
157 }
158
159 static HRESULT WINAPI HTMLStyle2_removeExpression(IHTMLStyle2 *iface, BSTR propname, VARIANT_BOOL *pfSuccess)
160 {
161     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
162     FIXME("(%p)->(%s %p)\n", This, debugstr_w(propname), pfSuccess);
163     return E_NOTIMPL;
164 }
165
166 static HRESULT WINAPI HTMLStyle2_put_position(IHTMLStyle2 *iface, BSTR v)
167 {
168     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
169
170     TRACE("(%p)->(%s)\n", This, debugstr_w(v));
171
172     return set_nsstyle_attr(This->nsstyle, STYLEID_POSITION, v, 0);
173 }
174
175 static HRESULT WINAPI HTMLStyle2_get_position(IHTMLStyle2 *iface, BSTR *p)
176 {
177     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
178
179     TRACE("(%p)->(%p)\n", This, p);
180
181     return get_nsstyle_attr(This->nsstyle, STYLEID_POSITION, p);
182 }
183
184 static HRESULT WINAPI HTMLStyle2_put_unicodeBidi(IHTMLStyle2 *iface, BSTR v)
185 {
186     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
187     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
188     return E_NOTIMPL;
189 }
190
191 static HRESULT WINAPI HTMLStyle2_get_unicodeBidi(IHTMLStyle2 *iface, BSTR *p)
192 {
193     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
194     FIXME("(%p)->(%p)\n", This, p);
195     return E_NOTIMPL;
196 }
197
198 static HRESULT WINAPI HTMLStyle2_put_bottom(IHTMLStyle2 *iface, VARIANT v)
199 {
200     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
201     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
202     return E_NOTIMPL;
203 }
204
205 static HRESULT WINAPI HTMLStyle2_get_bottom(IHTMLStyle2 *iface, VARIANT *p)
206 {
207     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
208     FIXME("(%p)->(%p)\n", This, p);
209     return E_NOTIMPL;
210 }
211
212 static HRESULT WINAPI HTMLStyle2_put_right(IHTMLStyle2 *iface, VARIANT v)
213 {
214     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
215     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
216     return E_NOTIMPL;
217 }
218
219 static HRESULT WINAPI HTMLStyle2_get_right(IHTMLStyle2 *iface, VARIANT *p)
220 {
221     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
222     FIXME("(%p)->(%p)\n", This, p);
223     return E_NOTIMPL;
224 }
225
226 static HRESULT WINAPI HTMLStyle2_put_pixelBottom(IHTMLStyle2 *iface, long v)
227 {
228     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
229     FIXME("(%p)->(%ld)\n", This, v);
230     return E_NOTIMPL;
231 }
232
233 static HRESULT WINAPI HTMLStyle2_get_pixelBottom(IHTMLStyle2 *iface, long *p)
234 {
235     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
236     FIXME("(%p)->(%p)\n", This, p);
237     return E_NOTIMPL;
238 }
239
240 static HRESULT WINAPI HTMLStyle2_put_pixelRight(IHTMLStyle2 *iface, long v)
241 {
242     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
243     FIXME("(%p)->(%ld)\n", This, v);
244     return E_NOTIMPL;
245 }
246
247 static HRESULT WINAPI HTMLStyle2_get_pixelRight(IHTMLStyle2 *iface, long *p)
248 {
249     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
250     FIXME("(%p)->(%p)\n", This, p);
251     return E_NOTIMPL;
252 }
253
254 static HRESULT WINAPI HTMLStyle2_put_posBottom(IHTMLStyle2 *iface, float v)
255 {
256     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
257     FIXME("(%p)->(%f)\n", This, v);
258     return E_NOTIMPL;
259 }
260
261 static HRESULT WINAPI HTMLStyle2_get_posBottom(IHTMLStyle2 *iface, float *p)
262 {
263     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
264     FIXME("(%p)->(%p)\n", This, p);
265     return E_NOTIMPL;
266 }
267
268 static HRESULT WINAPI HTMLStyle2_put_posRight(IHTMLStyle2 *iface, float v)
269 {
270     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
271     FIXME("(%p)->(%f)\n", This, v);
272     return E_NOTIMPL;
273 }
274
275 static HRESULT WINAPI HTMLStyle2_get_posRight(IHTMLStyle2 *iface, float *p)
276 {
277     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
278     FIXME("(%p)->(%p)\n", This, p);
279     return E_NOTIMPL;
280 }
281
282 static HRESULT WINAPI HTMLStyle2_put_imeMode(IHTMLStyle2 *iface, BSTR v)
283 {
284     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
285     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
286     return E_NOTIMPL;
287 }
288
289 static HRESULT WINAPI HTMLStyle2_get_imeMode(IHTMLStyle2 *iface, BSTR *p)
290 {
291     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
292     FIXME("(%p)->(%p)\n", This, p);
293     return E_NOTIMPL;
294 }
295
296 static HRESULT WINAPI HTMLStyle2_put_rubyAlign(IHTMLStyle2 *iface, BSTR v)
297 {
298     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
299     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
300     return E_NOTIMPL;
301 }
302
303 static HRESULT WINAPI HTMLStyle2_get_rubyAlign(IHTMLStyle2 *iface, BSTR *p)
304 {
305     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
306     FIXME("(%p)->(%p)\n", This, p);
307     return E_NOTIMPL;
308 }
309
310 static HRESULT WINAPI HTMLStyle2_put_rubyPosition(IHTMLStyle2 *iface, BSTR v)
311 {
312     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
313     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
314     return E_NOTIMPL;
315 }
316
317 static HRESULT WINAPI HTMLStyle2_get_rubyPosition(IHTMLStyle2 *iface, BSTR *p)
318 {
319     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
320     FIXME("(%p)->(%p)\n", This, p);
321     return E_NOTIMPL;
322 }
323
324 static HRESULT WINAPI HTMLStyle2_put_rubyOverhang(IHTMLStyle2 *iface, BSTR v)
325 {
326     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
327     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
328     return E_NOTIMPL;
329 }
330
331 static HRESULT WINAPI HTMLStyle2_get_rubyOverhang(IHTMLStyle2 *iface, BSTR *p)
332 {
333     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
334     FIXME("(%p)->(%p)\n", This, p);
335     return E_NOTIMPL;
336 }
337
338 static HRESULT WINAPI HTMLStyle2_put_layoutGridChar(IHTMLStyle2 *iface, VARIANT v)
339 {
340     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
341     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
342     return E_NOTIMPL;
343 }
344
345 static HRESULT WINAPI HTMLStyle2_get_layoutGridChar(IHTMLStyle2 *iface, VARIANT *p)
346 {
347     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
348     FIXME("(%p)->(%p)\n", This, p);
349     return E_NOTIMPL;
350 }
351
352 static HRESULT WINAPI HTMLStyle2_put_layoutGridLine(IHTMLStyle2 *iface, VARIANT v)
353 {
354     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
355     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
356     return E_NOTIMPL;
357 }
358
359 static HRESULT WINAPI HTMLStyle2_get_layoutGridLine(IHTMLStyle2 *iface, VARIANT *p)
360 {
361     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
362     FIXME("(%p)->(%p)\n", This, p);
363     return E_NOTIMPL;
364 }
365
366 static HRESULT WINAPI HTMLStyle2_put_layoutGridMode(IHTMLStyle2 *iface, BSTR v)
367 {
368     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
369     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
370     return E_NOTIMPL;
371 }
372
373 static HRESULT WINAPI HTMLStyle2_get_layoutGridMode(IHTMLStyle2 *iface, BSTR *p)
374 {
375     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
376     FIXME("(%p)->(%p)\n", This, p);
377     return E_NOTIMPL;
378 }
379
380 static HRESULT WINAPI HTMLStyle2_put_layoutGridType(IHTMLStyle2 *iface, BSTR v)
381 {
382     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
383     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
384     return E_NOTIMPL;
385 }
386
387 static HRESULT WINAPI HTMLStyle2_get_layoutGridType(IHTMLStyle2 *iface, BSTR *p)
388 {
389     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
390     FIXME("(%p)->(%p)\n", This, p);
391     return E_NOTIMPL;
392 }
393
394 static HRESULT WINAPI HTMLStyle2_put_layoutGrid(IHTMLStyle2 *iface, BSTR v)
395 {
396     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
397     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
398     return E_NOTIMPL;
399 }
400
401 static HRESULT WINAPI HTMLStyle2_get_layoutGrid(IHTMLStyle2 *iface, BSTR *p)
402 {
403     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
404     FIXME("(%p)->(%p)\n", This, p);
405     return E_NOTIMPL;
406 }
407
408 static HRESULT WINAPI HTMLStyle2_put_wordBreak(IHTMLStyle2 *iface, BSTR v)
409 {
410     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
411     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
412     return E_NOTIMPL;
413 }
414
415 static HRESULT WINAPI HTMLStyle2_get_wordBreak(IHTMLStyle2 *iface, BSTR *p)
416 {
417     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
418     FIXME("(%p)->(%p)\n", This, p);
419     return E_NOTIMPL;
420 }
421
422 static HRESULT WINAPI HTMLStyle2_put_lineBreak(IHTMLStyle2 *iface, BSTR v)
423 {
424     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
425     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
426     return E_NOTIMPL;
427 }
428
429 static HRESULT WINAPI HTMLStyle2_get_lineBreak(IHTMLStyle2 *iface, BSTR *p)
430 {
431     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
432     FIXME("(%p)->(%p)\n", This, p);
433     return E_NOTIMPL;
434 }
435
436 static HRESULT WINAPI HTMLStyle2_put_textJustify(IHTMLStyle2 *iface, BSTR v)
437 {
438     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
439     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
440     return E_NOTIMPL;
441 }
442
443 static HRESULT WINAPI HTMLStyle2_get_textJustify(IHTMLStyle2 *iface, BSTR *p)
444 {
445     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
446     FIXME("(%p)->(%p)\n", This, p);
447     return E_NOTIMPL;
448 }
449
450 static HRESULT WINAPI HTMLStyle2_put_textJustifyTrim(IHTMLStyle2 *iface, BSTR v)
451 {
452     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
453     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
454     return E_NOTIMPL;
455 }
456
457 static HRESULT WINAPI HTMLStyle2_get_textJustifyTrim(IHTMLStyle2 *iface, BSTR *p)
458 {
459     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
460     FIXME("(%p)->(%p)\n", This, p);
461     return E_NOTIMPL;
462 }
463
464 static HRESULT WINAPI HTMLStyle2_put_textKashida(IHTMLStyle2 *iface, VARIANT v)
465 {
466     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
467     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
468     return E_NOTIMPL;
469 }
470
471 static HRESULT WINAPI HTMLStyle2_get_textKashida(IHTMLStyle2 *iface, VARIANT *p)
472 {
473     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
474     FIXME("(%p)->(%p)\n", This, p);
475     return E_NOTIMPL;
476 }
477
478 static HRESULT WINAPI HTMLStyle2_put_textAutospace(IHTMLStyle2 *iface, BSTR v)
479 {
480     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
481     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
482     return E_NOTIMPL;
483 }
484
485 static HRESULT WINAPI HTMLStyle2_get_textAutospace(IHTMLStyle2 *iface, BSTR *p)
486 {
487     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
488     FIXME("(%p)->(%p)\n", This, p);
489     return E_NOTIMPL;
490 }
491
492 static HRESULT WINAPI HTMLStyle2_put_overflowX(IHTMLStyle2 *iface, BSTR v)
493 {
494     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
495     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
496     return E_NOTIMPL;
497 }
498
499 static HRESULT WINAPI HTMLStyle2_get_overflowX(IHTMLStyle2 *iface, BSTR *p)
500 {
501     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
502     FIXME("(%p)->(%p)\n", This, p);
503     return E_NOTIMPL;
504 }
505
506 static HRESULT WINAPI HTMLStyle2_put_overflowY(IHTMLStyle2 *iface, BSTR v)
507 {
508     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
509     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
510     return E_NOTIMPL;
511 }
512
513 static HRESULT WINAPI HTMLStyle2_get_overflowY(IHTMLStyle2 *iface, BSTR *p)
514 {
515     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
516     FIXME("(%p)->(%p)\n", This, p);
517     return E_NOTIMPL;
518 }
519
520 static HRESULT WINAPI HTMLStyle2_put_accelerator(IHTMLStyle2 *iface, BSTR v)
521 {
522     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
523     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
524     return E_NOTIMPL;
525 }
526
527 static HRESULT WINAPI HTMLStyle2_get_accelerator(IHTMLStyle2 *iface, BSTR *p)
528 {
529     HTMLStyle *This = HTMLSTYLE2_THIS(iface);
530     FIXME("(%p)->(%p)\n", This, p);
531     return E_NOTIMPL;
532 }
533
534 static const IHTMLStyle2Vtbl HTMLStyle2Vtbl = {
535     HTMLStyle2_QueryInterface,
536     HTMLStyle2_AddRef,
537     HTMLStyle2_Release,
538     HTMLStyle2_GetTypeInfoCount,
539     HTMLStyle2_GetTypeInfo,
540     HTMLStyle2_GetIDsOfNames,
541     HTMLStyle2_Invoke,
542     HTMLStyle2_put_tableLayout,
543     HTMLStyle2_get_tableLayout,
544     HTMLStyle2_put_borderCollapse,
545     HTMLStyle2_get_borderCollapse,
546     HTMLStyle2_put_direction,
547     HTMLStyle2_get_direction,
548     HTMLStyle2_put_behavior,
549     HTMLStyle2_get_behavior,
550     HTMLStyle2_setExpression,
551     HTMLStyle2_getExpression,
552     HTMLStyle2_removeExpression,
553     HTMLStyle2_put_position,
554     HTMLStyle2_get_position,
555     HTMLStyle2_put_unicodeBidi,
556     HTMLStyle2_get_unicodeBidi,
557     HTMLStyle2_put_bottom,
558     HTMLStyle2_get_bottom,
559     HTMLStyle2_put_right,
560     HTMLStyle2_get_right,
561     HTMLStyle2_put_pixelBottom,
562     HTMLStyle2_get_pixelBottom,
563     HTMLStyle2_put_pixelRight,
564     HTMLStyle2_get_pixelRight,
565     HTMLStyle2_put_posBottom,
566     HTMLStyle2_get_posBottom,
567     HTMLStyle2_put_posRight,
568     HTMLStyle2_get_posRight,
569     HTMLStyle2_put_imeMode,
570     HTMLStyle2_get_imeMode,
571     HTMLStyle2_put_rubyAlign,
572     HTMLStyle2_get_rubyAlign,
573     HTMLStyle2_put_rubyPosition,
574     HTMLStyle2_get_rubyPosition,
575     HTMLStyle2_put_rubyOverhang,
576     HTMLStyle2_get_rubyOverhang,
577     HTMLStyle2_put_layoutGridChar,
578     HTMLStyle2_get_layoutGridChar,
579     HTMLStyle2_put_layoutGridLine,
580     HTMLStyle2_get_layoutGridLine,
581     HTMLStyle2_put_layoutGridMode,
582     HTMLStyle2_get_layoutGridMode,
583     HTMLStyle2_put_layoutGridType,
584     HTMLStyle2_get_layoutGridType,
585     HTMLStyle2_put_layoutGrid,
586     HTMLStyle2_get_layoutGrid,
587     HTMLStyle2_put_wordBreak,
588     HTMLStyle2_get_wordBreak,
589     HTMLStyle2_put_lineBreak,
590     HTMLStyle2_get_lineBreak,
591     HTMLStyle2_put_textJustify,
592     HTMLStyle2_get_textJustify,
593     HTMLStyle2_put_textJustifyTrim,
594     HTMLStyle2_get_textJustifyTrim,
595     HTMLStyle2_put_textKashida,
596     HTMLStyle2_get_textKashida,
597     HTMLStyle2_put_textAutospace,
598     HTMLStyle2_get_textAutospace,
599     HTMLStyle2_put_overflowX,
600     HTMLStyle2_get_overflowX,
601     HTMLStyle2_put_overflowY,
602     HTMLStyle2_get_overflowY,
603     HTMLStyle2_put_accelerator,
604     HTMLStyle2_get_accelerator
605 };
606
607 void HTMLStyle2_Init(HTMLStyle *This)
608 {
609     This->lpHTMLStyle2Vtbl = &HTMLStyle2Vtbl;
610 }