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