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