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