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