wow64: In wow64_NtSetInformationToken forward TokenIntegrityLevel.
[wine.git] / dlls / mshtml / htmlcurstyle.c
blob7d87d965469dfafed3cb26a1bcc413c785fa93e5
1 /*
2 * Copyright 2008 Jacek Caban for CodeWeavers
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.
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.
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
19 #include <stdarg.h>
21 #define COBJMACROS
23 #include "windef.h"
24 #include "winbase.h"
25 #include "winuser.h"
26 #include "ole2.h"
28 #include "mshtml_private.h"
29 #include "htmlstyle.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
35 struct HTMLCurrentStyle {
36 CSSStyle css_style;
37 IHTMLCurrentStyle IHTMLCurrentStyle_iface;
38 IHTMLCurrentStyle2 IHTMLCurrentStyle2_iface;
39 IHTMLCurrentStyle3 IHTMLCurrentStyle3_iface;
40 IHTMLCurrentStyle4 IHTMLCurrentStyle4_iface;
42 HTMLElement *elem;
45 static inline HRESULT get_current_style_property(HTMLCurrentStyle *current_style, styleid_t sid, BSTR *p)
47 return get_style_property(&current_style->css_style, sid, p);
50 static inline HRESULT get_current_style_property_var(HTMLCurrentStyle *This, styleid_t sid, VARIANT *v)
52 return get_style_property_var(&This->css_style, sid, v);
55 static inline HTMLCurrentStyle *impl_from_IHTMLCurrentStyle(IHTMLCurrentStyle *iface)
57 return CONTAINING_RECORD(iface, HTMLCurrentStyle, IHTMLCurrentStyle_iface);
60 static inline HTMLCurrentStyle *impl_from_IHTMLCurrentStyle2(IHTMLCurrentStyle2 *iface)
62 return CONTAINING_RECORD(iface, HTMLCurrentStyle, IHTMLCurrentStyle2_iface);
65 static inline HTMLCurrentStyle *impl_from_IHTMLCurrentStyle3(IHTMLCurrentStyle3 *iface)
67 return CONTAINING_RECORD(iface, HTMLCurrentStyle, IHTMLCurrentStyle3_iface);
70 static inline HTMLCurrentStyle *impl_from_IHTMLCurrentStyle4(IHTMLCurrentStyle4 *iface)
72 return CONTAINING_RECORD(iface, HTMLCurrentStyle, IHTMLCurrentStyle4_iface);
75 DISPEX_IDISPATCH_IMPL(HTMLCurrentStyle, IHTMLCurrentStyle,
76 impl_from_IHTMLCurrentStyle(iface)->css_style.dispex)
78 static HRESULT WINAPI HTMLCurrentStyle_get_position(IHTMLCurrentStyle *iface, BSTR *p)
80 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
82 TRACE("(%p)->(%p)\n", This, p);
84 return get_current_style_property(This, STYLEID_POSITION, p);
87 static HRESULT WINAPI HTMLCurrentStyle_get_styleFloat(IHTMLCurrentStyle *iface, BSTR *p)
89 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
91 TRACE("(%p)->(%p)\n", This, p);
93 return get_current_style_property(This, STYLEID_FLOAT, p);
96 static HRESULT WINAPI HTMLCurrentStyle_get_color(IHTMLCurrentStyle *iface, VARIANT *p)
98 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
99 TRACE("(%p)->(%p)\n", This, p);
100 return get_current_style_property_var(This, STYLEID_COLOR, p);
103 static HRESULT WINAPI HTMLCurrentStyle_get_backgroundColor(IHTMLCurrentStyle *iface, VARIANT *p)
105 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
106 TRACE("(%p)->(%p)\n", This, p);
107 return get_current_style_property_var(This, STYLEID_BACKGROUND_COLOR, p);
110 static HRESULT WINAPI HTMLCurrentStyle_get_fontFamily(IHTMLCurrentStyle *iface, BSTR *p)
112 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
114 TRACE("(%p)->(%p)\n", This, p);
116 return get_current_style_property(This, STYLEID_FONT_FAMILY, p);
119 static HRESULT WINAPI HTMLCurrentStyle_get_fontStyle(IHTMLCurrentStyle *iface, BSTR *p)
121 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
122 TRACE("(%p)->(%p)\n", This, p);
123 return get_current_style_property(This, STYLEID_FONT_STYLE, p);
126 static HRESULT WINAPI HTMLCurrentStyle_get_fontVariant(IHTMLCurrentStyle *iface, BSTR *p)
128 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
129 TRACE("(%p)->(%p)\n", This, p);
130 return get_current_style_property(This, STYLEID_FONT_VARIANT, p);
133 static HRESULT WINAPI HTMLCurrentStyle_get_fontWeight(IHTMLCurrentStyle *iface, VARIANT *p)
135 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
136 TRACE("(%p)->(%p)\n", This, p);
137 return get_current_style_property_var(This, STYLEID_FONT_WEIGHT, p);
140 static HRESULT WINAPI HTMLCurrentStyle_get_fontSize(IHTMLCurrentStyle *iface, VARIANT *p)
142 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
143 TRACE("(%p)->(%p)\n", This, p);
144 return get_current_style_property_var(This, STYLEID_FONT_SIZE, p);
147 static HRESULT WINAPI HTMLCurrentStyle_get_backgroundImage(IHTMLCurrentStyle *iface, BSTR *p)
149 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
150 TRACE("(%p)->(%p)\n", This, p);
151 return get_current_style_property(This, STYLEID_BACKGROUND_IMAGE, p);
154 static HRESULT WINAPI HTMLCurrentStyle_get_backgroundPositionX(IHTMLCurrentStyle *iface, VARIANT *p)
156 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
157 FIXME("(%p)->(%p)\n", This, p);
158 return E_NOTIMPL;
161 static HRESULT WINAPI HTMLCurrentStyle_get_backgroundPositionY(IHTMLCurrentStyle *iface, VARIANT *p)
163 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
164 FIXME("(%p)->(%p)\n", This, p);
165 return E_NOTIMPL;
168 static HRESULT WINAPI HTMLCurrentStyle_get_backgroundRepeat(IHTMLCurrentStyle *iface, BSTR *p)
170 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
171 TRACE("(%p)->(%p)\n", This, p);
172 return get_current_style_property(This, STYLEID_BACKGROUND_REPEAT, p);
175 static HRESULT WINAPI HTMLCurrentStyle_get_borderLeftColor(IHTMLCurrentStyle *iface, VARIANT *p)
177 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
178 TRACE("(%p)->(%p)\n", This, p);
179 return get_current_style_property_var(This, STYLEID_BORDER_LEFT_COLOR, p);
182 static HRESULT WINAPI HTMLCurrentStyle_get_borderTopColor(IHTMLCurrentStyle *iface, VARIANT *p)
184 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
185 TRACE("(%p)->(%p)\n", This, p);
186 return get_current_style_property_var(This, STYLEID_BORDER_TOP_COLOR, p);
189 static HRESULT WINAPI HTMLCurrentStyle_get_borderRightColor(IHTMLCurrentStyle *iface, VARIANT *p)
191 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
192 TRACE("(%p)->(%p)\n", This, p);
193 return get_current_style_property_var(This, STYLEID_BORDER_RIGHT_COLOR, p);
196 static HRESULT WINAPI HTMLCurrentStyle_get_borderBottomColor(IHTMLCurrentStyle *iface, VARIANT *p)
198 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
199 TRACE("(%p)->(%p)\n", This, p);
200 return get_current_style_property_var(This, STYLEID_BORDER_BOTTOM_COLOR, p);
203 static HRESULT WINAPI HTMLCurrentStyle_get_borderTopStyle(IHTMLCurrentStyle *iface, BSTR *p)
205 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
206 TRACE("(%p)->(%p)\n", This, p);
207 return get_current_style_property(This, STYLEID_BORDER_TOP_STYLE, p);
210 static HRESULT WINAPI HTMLCurrentStyle_get_borderRightStyle(IHTMLCurrentStyle *iface, BSTR *p)
212 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
213 TRACE("(%p)->(%p)\n", This, p);
214 return get_current_style_property(This, STYLEID_BORDER_RIGHT_STYLE, p);
217 static HRESULT WINAPI HTMLCurrentStyle_get_borderBottomStyle(IHTMLCurrentStyle *iface, BSTR *p)
219 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
220 TRACE("(%p)->(%p)\n", This, p);
221 return get_current_style_property(This, STYLEID_BORDER_BOTTOM_STYLE, p);
224 static HRESULT WINAPI HTMLCurrentStyle_get_borderLeftStyle(IHTMLCurrentStyle *iface, BSTR *p)
226 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
227 TRACE("(%p)->(%p)\n", This, p);
228 return get_current_style_property(This, STYLEID_BORDER_LEFT_STYLE, p);
231 static HRESULT WINAPI HTMLCurrentStyle_get_borderTopWidth(IHTMLCurrentStyle *iface, VARIANT *p)
233 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
234 TRACE("(%p)->(%p)\n", This, p);
235 return get_current_style_property_var(This, STYLEID_BORDER_TOP_WIDTH, p);
238 static HRESULT WINAPI HTMLCurrentStyle_get_borderRightWidth(IHTMLCurrentStyle *iface, VARIANT *p)
240 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
241 TRACE("(%p)->(%p)\n", This, p);
242 return get_current_style_property_var(This, STYLEID_BORDER_RIGHT_WIDTH, p);
245 static HRESULT WINAPI HTMLCurrentStyle_get_borderBottomWidth(IHTMLCurrentStyle *iface, VARIANT *p)
247 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
248 TRACE("(%p)->(%p)\n", This, p);
249 return get_current_style_property_var(This, STYLEID_BORDER_BOTTOM_WIDTH, p);
252 static HRESULT WINAPI HTMLCurrentStyle_get_borderLeftWidth(IHTMLCurrentStyle *iface, VARIANT *p)
254 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
255 TRACE("(%p)->(%p)\n", This, p);
256 return get_current_style_property_var(This, STYLEID_BORDER_LEFT_WIDTH, p);
259 static HRESULT WINAPI HTMLCurrentStyle_get_left(IHTMLCurrentStyle *iface, VARIANT *p)
261 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
262 TRACE("(%p)->(%p)\n", This, p);
263 return get_current_style_property_var(This, STYLEID_LEFT, p);
266 static HRESULT WINAPI HTMLCurrentStyle_get_top(IHTMLCurrentStyle *iface, VARIANT *p)
268 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
269 TRACE("(%p)->(%p)\n", This, p);
270 return get_current_style_property_var(This, STYLEID_TOP, p);
273 static HRESULT WINAPI HTMLCurrentStyle_get_width(IHTMLCurrentStyle *iface, VARIANT *p)
275 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
276 TRACE("(%p)->(%p)\n", This, p);
277 return get_current_style_property_var(This, STYLEID_WIDTH, p);
280 static HRESULT WINAPI HTMLCurrentStyle_get_height(IHTMLCurrentStyle *iface, VARIANT *p)
282 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
283 TRACE("(%p)->(%p)\n", This, p);
284 return get_current_style_property_var(This, STYLEID_HEIGHT, p);
287 static HRESULT WINAPI HTMLCurrentStyle_get_paddingLeft(IHTMLCurrentStyle *iface, VARIANT *p)
289 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
290 TRACE("(%p)->(%p)\n", This, p);
291 return get_current_style_property_var(This, STYLEID_PADDING_LEFT, p);
294 static HRESULT WINAPI HTMLCurrentStyle_get_paddingTop(IHTMLCurrentStyle *iface, VARIANT *p)
296 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
297 TRACE("(%p)->(%p)\n", This, p);
298 return get_current_style_property_var(This, STYLEID_PADDING_TOP, p);
301 static HRESULT WINAPI HTMLCurrentStyle_get_paddingRight(IHTMLCurrentStyle *iface, VARIANT *p)
303 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
304 TRACE("(%p)->(%p)\n", This, p);
305 return get_current_style_property_var(This, STYLEID_PADDING_RIGHT, p);
308 static HRESULT WINAPI HTMLCurrentStyle_get_paddingBottom(IHTMLCurrentStyle *iface, VARIANT *p)
310 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
311 TRACE("(%p)->(%p)\n", This, p);
312 return get_current_style_property_var(This, STYLEID_PADDING_BOTTOM, p);
315 static HRESULT WINAPI HTMLCurrentStyle_get_textAlign(IHTMLCurrentStyle *iface, BSTR *p)
317 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
318 TRACE("(%p)->(%p)\n", This, p);
319 return get_current_style_property(This, STYLEID_TEXT_ALIGN, p);
322 static HRESULT WINAPI HTMLCurrentStyle_get_textDecoration(IHTMLCurrentStyle *iface, BSTR *p)
324 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
325 TRACE("(%p)->(%p)\n", This, p);
326 return get_current_style_property(This, STYLEID_TEXT_DECORATION, p);
329 static HRESULT WINAPI HTMLCurrentStyle_get_display(IHTMLCurrentStyle *iface, BSTR *p)
331 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
333 TRACE("(%p)->(%p)\n", This, p);
335 return get_current_style_property(This, STYLEID_DISPLAY, p);
338 static HRESULT WINAPI HTMLCurrentStyle_get_visibility(IHTMLCurrentStyle *iface, BSTR *p)
340 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
342 TRACE("(%p)->(%p)\n", This, p);
344 return get_current_style_property(This, STYLEID_VISIBILITY, p);
347 static HRESULT WINAPI HTMLCurrentStyle_get_zIndex(IHTMLCurrentStyle *iface, VARIANT *p)
349 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
350 TRACE("(%p)->(%p)\n", This, p);
351 return get_current_style_property_var(This, STYLEID_Z_INDEX, p);
354 static HRESULT WINAPI HTMLCurrentStyle_get_letterSpacing(IHTMLCurrentStyle *iface, VARIANT *p)
356 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
357 TRACE("(%p)->(%p)\n", This, p);
358 return get_current_style_property_var(This, STYLEID_LETTER_SPACING, p);
361 static HRESULT WINAPI HTMLCurrentStyle_get_lineHeight(IHTMLCurrentStyle *iface, VARIANT *p)
363 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
364 TRACE("(%p)->(%p)\n", This, p);
365 return get_current_style_property_var(This, STYLEID_LINE_HEIGHT, p);
368 static HRESULT WINAPI HTMLCurrentStyle_get_textIndent(IHTMLCurrentStyle *iface, VARIANT *p)
370 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
371 TRACE("(%p)->(%p)\n", This, p);
372 return get_current_style_property_var(This, STYLEID_TEXT_INDENT, p);
375 static HRESULT WINAPI HTMLCurrentStyle_get_verticalAlign(IHTMLCurrentStyle *iface, VARIANT *p)
377 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
378 TRACE("(%p)->(%p)\n", This, p);
379 return get_current_style_property_var(This, STYLEID_VERTICAL_ALIGN, p);
382 static HRESULT WINAPI HTMLCurrentStyle_get_backgroundAttachment(IHTMLCurrentStyle *iface, BSTR *p)
384 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
385 FIXME("(%p)->(%p)\n", This, p);
386 return E_NOTIMPL;
389 static HRESULT WINAPI HTMLCurrentStyle_get_marginTop(IHTMLCurrentStyle *iface, VARIANT *p)
391 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
392 TRACE("(%p)->(%p)\n", This, p);
393 return get_current_style_property_var(This, STYLEID_MARGIN_TOP, p);
396 static HRESULT WINAPI HTMLCurrentStyle_get_marginRight(IHTMLCurrentStyle *iface, VARIANT *p)
398 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
399 TRACE("(%p)->(%p)\n", This, p);
400 return get_current_style_property_var(This, STYLEID_MARGIN_RIGHT, p);
403 static HRESULT WINAPI HTMLCurrentStyle_get_marginBottom(IHTMLCurrentStyle *iface, VARIANT *p)
405 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
406 TRACE("(%p)->(%p)\n", This, p);
407 return get_current_style_property_var(This, STYLEID_MARGIN_BOTTOM, p);
410 static HRESULT WINAPI HTMLCurrentStyle_get_marginLeft(IHTMLCurrentStyle *iface, VARIANT *p)
412 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
413 TRACE("(%p)->(%p)\n", This, p);
414 return get_current_style_property_var(This, STYLEID_MARGIN_LEFT, p);
417 static HRESULT WINAPI HTMLCurrentStyle_get_clear(IHTMLCurrentStyle *iface, BSTR *p)
419 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
420 FIXME("(%p)->(%p)\n", This, p);
421 return E_NOTIMPL;
424 static HRESULT WINAPI HTMLCurrentStyle_get_listStyleType(IHTMLCurrentStyle *iface, BSTR *p)
426 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
427 FIXME("(%p)->(%p)\n", This, p);
428 return E_NOTIMPL;
431 static HRESULT WINAPI HTMLCurrentStyle_get_listStylePosition(IHTMLCurrentStyle *iface, BSTR *p)
433 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
434 FIXME("(%p)->(%p)\n", This, p);
435 return E_NOTIMPL;
438 static HRESULT WINAPI HTMLCurrentStyle_get_listStyleImage(IHTMLCurrentStyle *iface, BSTR *p)
440 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
441 FIXME("(%p)->(%p)\n", This, p);
442 return E_NOTIMPL;
445 static HRESULT WINAPI HTMLCurrentStyle_get_clipTop(IHTMLCurrentStyle *iface, VARIANT *p)
447 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
448 FIXME("(%p)->(%p)\n", This, p);
449 return E_NOTIMPL;
452 static HRESULT WINAPI HTMLCurrentStyle_get_clipRight(IHTMLCurrentStyle *iface, VARIANT *p)
454 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
455 FIXME("(%p)->(%p)\n", This, p);
456 return E_NOTIMPL;
459 static HRESULT WINAPI HTMLCurrentStyle_get_clipBottom(IHTMLCurrentStyle *iface, VARIANT *p)
461 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
462 FIXME("(%p)->(%p)\n", This, p);
463 return E_NOTIMPL;
466 static HRESULT WINAPI HTMLCurrentStyle_get_clipLeft(IHTMLCurrentStyle *iface, VARIANT *p)
468 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
469 FIXME("(%p)->(%p)\n", This, p);
470 return E_NOTIMPL;
473 static HRESULT WINAPI HTMLCurrentStyle_get_overflow(IHTMLCurrentStyle *iface, BSTR *p)
475 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
476 TRACE("(%p)->(%p)\n", This, p);
477 return get_current_style_property(This, STYLEID_OVERFLOW, p);
480 static HRESULT WINAPI HTMLCurrentStyle_get_pageBreakBefore(IHTMLCurrentStyle *iface, BSTR *p)
482 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
483 FIXME("(%p)->(%p)\n", This, p);
484 return E_NOTIMPL;
487 static HRESULT WINAPI HTMLCurrentStyle_get_pageBreakAfter(IHTMLCurrentStyle *iface, BSTR *p)
489 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
490 FIXME("(%p)->(%p)\n", This, p);
491 return E_NOTIMPL;
494 static HRESULT WINAPI HTMLCurrentStyle_get_cursor(IHTMLCurrentStyle *iface, BSTR *p)
496 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
497 TRACE("(%p)->(%p)\n", This, p);
498 return get_current_style_property(This, STYLEID_CURSOR, p);
501 static HRESULT WINAPI HTMLCurrentStyle_get_tableLayout(IHTMLCurrentStyle *iface, BSTR *p)
503 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
504 FIXME("(%p)->(%p)\n", This, p);
505 return E_NOTIMPL;
508 static HRESULT WINAPI HTMLCurrentStyle_get_borderCollapse(IHTMLCurrentStyle *iface, BSTR *p)
510 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
511 FIXME("(%p)->(%p)\n", This, p);
512 return E_NOTIMPL;
515 static HRESULT WINAPI HTMLCurrentStyle_get_direction(IHTMLCurrentStyle *iface, BSTR *p)
517 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
518 TRACE("(%p)->(%p)\n", This, p);
519 return get_current_style_property(This, STYLEID_DIRECTION, p);
522 static HRESULT WINAPI HTMLCurrentStyle_get_behavior(IHTMLCurrentStyle *iface, BSTR *p)
524 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
525 FIXME("(%p)->(%p)\n", This, p);
526 return E_NOTIMPL;
529 static HRESULT WINAPI HTMLCurrentStyle_getAttribute(IHTMLCurrentStyle *iface, BSTR strAttributeName,
530 LONG lFlags, VARIANT *AttributeValue)
532 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
533 FIXME("(%p)->(%s %lx %p)\n", This, debugstr_w(strAttributeName), lFlags, AttributeValue);
534 return E_NOTIMPL;
537 static HRESULT WINAPI HTMLCurrentStyle_get_unicodeBidi(IHTMLCurrentStyle *iface, BSTR *p)
539 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
540 FIXME("(%p)->(%p)\n", This, p);
541 return E_NOTIMPL;
544 static HRESULT WINAPI HTMLCurrentStyle_get_right(IHTMLCurrentStyle *iface, VARIANT *p)
546 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
547 TRACE("(%p)->(%p)\n", This, p);
548 return get_current_style_property_var(This, STYLEID_RIGHT, p);
551 static HRESULT WINAPI HTMLCurrentStyle_get_bottom(IHTMLCurrentStyle *iface, VARIANT *p)
553 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
554 TRACE("(%p)->(%p)\n", This, p);
555 return get_current_style_property_var(This, STYLEID_BOTTOM, p);
558 static HRESULT WINAPI HTMLCurrentStyle_get_imeMode(IHTMLCurrentStyle *iface, BSTR *p)
560 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
561 FIXME("(%p)->(%p)\n", This, p);
562 return E_NOTIMPL;
565 static HRESULT WINAPI HTMLCurrentStyle_get_rubyAlign(IHTMLCurrentStyle *iface, BSTR *p)
567 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
568 FIXME("(%p)->(%p)\n", This, p);
569 return E_NOTIMPL;
572 static HRESULT WINAPI HTMLCurrentStyle_get_rubyPosition(IHTMLCurrentStyle *iface, BSTR *p)
574 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
575 FIXME("(%p)->(%p)\n", This, p);
576 return E_NOTIMPL;
579 static HRESULT WINAPI HTMLCurrentStyle_get_rubyOverhang(IHTMLCurrentStyle *iface, BSTR *p)
581 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
582 FIXME("(%p)->(%p)\n", This, p);
583 return E_NOTIMPL;
586 static HRESULT WINAPI HTMLCurrentStyle_get_textAutospace(IHTMLCurrentStyle *iface, BSTR *p)
588 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
589 FIXME("(%p)->(%p)\n", This, p);
590 return E_NOTIMPL;
593 static HRESULT WINAPI HTMLCurrentStyle_get_lineBreak(IHTMLCurrentStyle *iface, BSTR *p)
595 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
596 FIXME("(%p)->(%p)\n", This, p);
597 return E_NOTIMPL;
600 static HRESULT WINAPI HTMLCurrentStyle_get_wordBreak(IHTMLCurrentStyle *iface, BSTR *p)
602 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
603 FIXME("(%p)->(%p)\n", This, p);
604 return E_NOTIMPL;
607 static HRESULT WINAPI HTMLCurrentStyle_get_textJustify(IHTMLCurrentStyle *iface, BSTR *p)
609 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
610 FIXME("(%p)->(%p)\n", This, p);
611 return E_NOTIMPL;
614 static HRESULT WINAPI HTMLCurrentStyle_get_textJustifyTrim(IHTMLCurrentStyle *iface, BSTR *p)
616 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
617 FIXME("(%p)->(%p)\n", This, p);
618 return E_NOTIMPL;
621 static HRESULT WINAPI HTMLCurrentStyle_get_textKashida(IHTMLCurrentStyle *iface, VARIANT *p)
623 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
624 FIXME("(%p)->(%p)\n", This, p);
625 return E_NOTIMPL;
628 static HRESULT WINAPI HTMLCurrentStyle_get_blockDirection(IHTMLCurrentStyle *iface, BSTR *p)
630 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
631 FIXME("(%p)->(%p)\n", This, p);
632 return E_NOTIMPL;
635 static HRESULT WINAPI HTMLCurrentStyle_get_layoutGridChar(IHTMLCurrentStyle *iface, VARIANT *p)
637 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
638 FIXME("(%p)->(%p)\n", This, p);
639 return E_NOTIMPL;
642 static HRESULT WINAPI HTMLCurrentStyle_get_layoutGridLine(IHTMLCurrentStyle *iface, VARIANT *p)
644 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
645 FIXME("(%p)->(%p)\n", This, p);
646 return E_NOTIMPL;
649 static HRESULT WINAPI HTMLCurrentStyle_get_layoutGridMode(IHTMLCurrentStyle *iface, BSTR *p)
651 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
652 FIXME("(%p)->(%p)\n", This, p);
653 return E_NOTIMPL;
656 static HRESULT WINAPI HTMLCurrentStyle_get_layoutGridType(IHTMLCurrentStyle *iface, BSTR *p)
658 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
659 FIXME("(%p)->(%p)\n", This, p);
660 return E_NOTIMPL;
663 static HRESULT WINAPI HTMLCurrentStyle_get_borderStyle(IHTMLCurrentStyle *iface, BSTR *p)
665 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
666 TRACE("(%p)->(%p)\n", This, p);
667 return get_current_style_property(This, STYLEID_BORDER_STYLE, p);
670 static HRESULT WINAPI HTMLCurrentStyle_get_borderColor(IHTMLCurrentStyle *iface, BSTR *p)
672 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
673 TRACE("(%p)->(%p)\n", This, p);
674 return get_current_style_property(This, STYLEID_BORDER_COLOR, p);
677 static HRESULT WINAPI HTMLCurrentStyle_get_borderWidth(IHTMLCurrentStyle *iface, BSTR *p)
679 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
680 TRACE("(%p)->(%p)\n", This, p);
681 return get_current_style_property(This, STYLEID_BORDER_WIDTH, p);
684 static HRESULT WINAPI HTMLCurrentStyle_get_padding(IHTMLCurrentStyle *iface, BSTR *p)
686 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
687 TRACE("(%p)->(%p)\n", This, p);
688 return get_current_style_property(This, STYLEID_PADDING, p);
691 static HRESULT WINAPI HTMLCurrentStyle_get_margin(IHTMLCurrentStyle *iface, BSTR *p)
693 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
694 TRACE("(%p)->(%p)\n", This, p);
695 return get_current_style_property(This, STYLEID_MARGIN, p);
698 static HRESULT WINAPI HTMLCurrentStyle_get_accelerator(IHTMLCurrentStyle *iface, BSTR *p)
700 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
701 FIXME("(%p)->(%p)\n", This, p);
702 return E_NOTIMPL;
705 static HRESULT WINAPI HTMLCurrentStyle_get_overflowX(IHTMLCurrentStyle *iface, BSTR *p)
707 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
708 TRACE("(%p)->(%p)\n", This, p);
709 return get_current_style_property(This, STYLEID_OVERFLOW_X, p);
712 static HRESULT WINAPI HTMLCurrentStyle_get_overflowY(IHTMLCurrentStyle *iface, BSTR *p)
714 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
715 TRACE("(%p)->(%p)\n", This, p);
716 return get_current_style_property(This, STYLEID_OVERFLOW_Y, p);
719 static HRESULT WINAPI HTMLCurrentStyle_get_textTransform(IHTMLCurrentStyle *iface, BSTR *p)
721 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
722 TRACE("(%p)->(%p)\n", This, p);
723 return get_current_style_property(This, STYLEID_TEXT_TRANSFORM, p);
726 static const IHTMLCurrentStyleVtbl HTMLCurrentStyleVtbl = {
727 HTMLCurrentStyle_QueryInterface,
728 HTMLCurrentStyle_AddRef,
729 HTMLCurrentStyle_Release,
730 HTMLCurrentStyle_GetTypeInfoCount,
731 HTMLCurrentStyle_GetTypeInfo,
732 HTMLCurrentStyle_GetIDsOfNames,
733 HTMLCurrentStyle_Invoke,
734 HTMLCurrentStyle_get_position,
735 HTMLCurrentStyle_get_styleFloat,
736 HTMLCurrentStyle_get_color,
737 HTMLCurrentStyle_get_backgroundColor,
738 HTMLCurrentStyle_get_fontFamily,
739 HTMLCurrentStyle_get_fontStyle,
740 HTMLCurrentStyle_get_fontVariant,
741 HTMLCurrentStyle_get_fontWeight,
742 HTMLCurrentStyle_get_fontSize,
743 HTMLCurrentStyle_get_backgroundImage,
744 HTMLCurrentStyle_get_backgroundPositionX,
745 HTMLCurrentStyle_get_backgroundPositionY,
746 HTMLCurrentStyle_get_backgroundRepeat,
747 HTMLCurrentStyle_get_borderLeftColor,
748 HTMLCurrentStyle_get_borderTopColor,
749 HTMLCurrentStyle_get_borderRightColor,
750 HTMLCurrentStyle_get_borderBottomColor,
751 HTMLCurrentStyle_get_borderTopStyle,
752 HTMLCurrentStyle_get_borderRightStyle,
753 HTMLCurrentStyle_get_borderBottomStyle,
754 HTMLCurrentStyle_get_borderLeftStyle,
755 HTMLCurrentStyle_get_borderTopWidth,
756 HTMLCurrentStyle_get_borderRightWidth,
757 HTMLCurrentStyle_get_borderBottomWidth,
758 HTMLCurrentStyle_get_borderLeftWidth,
759 HTMLCurrentStyle_get_left,
760 HTMLCurrentStyle_get_top,
761 HTMLCurrentStyle_get_width,
762 HTMLCurrentStyle_get_height,
763 HTMLCurrentStyle_get_paddingLeft,
764 HTMLCurrentStyle_get_paddingTop,
765 HTMLCurrentStyle_get_paddingRight,
766 HTMLCurrentStyle_get_paddingBottom,
767 HTMLCurrentStyle_get_textAlign,
768 HTMLCurrentStyle_get_textDecoration,
769 HTMLCurrentStyle_get_display,
770 HTMLCurrentStyle_get_visibility,
771 HTMLCurrentStyle_get_zIndex,
772 HTMLCurrentStyle_get_letterSpacing,
773 HTMLCurrentStyle_get_lineHeight,
774 HTMLCurrentStyle_get_textIndent,
775 HTMLCurrentStyle_get_verticalAlign,
776 HTMLCurrentStyle_get_backgroundAttachment,
777 HTMLCurrentStyle_get_marginTop,
778 HTMLCurrentStyle_get_marginRight,
779 HTMLCurrentStyle_get_marginBottom,
780 HTMLCurrentStyle_get_marginLeft,
781 HTMLCurrentStyle_get_clear,
782 HTMLCurrentStyle_get_listStyleType,
783 HTMLCurrentStyle_get_listStylePosition,
784 HTMLCurrentStyle_get_listStyleImage,
785 HTMLCurrentStyle_get_clipTop,
786 HTMLCurrentStyle_get_clipRight,
787 HTMLCurrentStyle_get_clipBottom,
788 HTMLCurrentStyle_get_clipLeft,
789 HTMLCurrentStyle_get_overflow,
790 HTMLCurrentStyle_get_pageBreakBefore,
791 HTMLCurrentStyle_get_pageBreakAfter,
792 HTMLCurrentStyle_get_cursor,
793 HTMLCurrentStyle_get_tableLayout,
794 HTMLCurrentStyle_get_borderCollapse,
795 HTMLCurrentStyle_get_direction,
796 HTMLCurrentStyle_get_behavior,
797 HTMLCurrentStyle_getAttribute,
798 HTMLCurrentStyle_get_unicodeBidi,
799 HTMLCurrentStyle_get_right,
800 HTMLCurrentStyle_get_bottom,
801 HTMLCurrentStyle_get_imeMode,
802 HTMLCurrentStyle_get_rubyAlign,
803 HTMLCurrentStyle_get_rubyPosition,
804 HTMLCurrentStyle_get_rubyOverhang,
805 HTMLCurrentStyle_get_textAutospace,
806 HTMLCurrentStyle_get_lineBreak,
807 HTMLCurrentStyle_get_wordBreak,
808 HTMLCurrentStyle_get_textJustify,
809 HTMLCurrentStyle_get_textJustifyTrim,
810 HTMLCurrentStyle_get_textKashida,
811 HTMLCurrentStyle_get_blockDirection,
812 HTMLCurrentStyle_get_layoutGridChar,
813 HTMLCurrentStyle_get_layoutGridLine,
814 HTMLCurrentStyle_get_layoutGridMode,
815 HTMLCurrentStyle_get_layoutGridType,
816 HTMLCurrentStyle_get_borderStyle,
817 HTMLCurrentStyle_get_borderColor,
818 HTMLCurrentStyle_get_borderWidth,
819 HTMLCurrentStyle_get_padding,
820 HTMLCurrentStyle_get_margin,
821 HTMLCurrentStyle_get_accelerator,
822 HTMLCurrentStyle_get_overflowX,
823 HTMLCurrentStyle_get_overflowY,
824 HTMLCurrentStyle_get_textTransform
827 DISPEX_IDISPATCH_IMPL(HTMLCurrentStyle2, IHTMLCurrentStyle2,
828 impl_from_IHTMLCurrentStyle2(iface)->css_style.dispex)
830 static HRESULT WINAPI HTMLCurrentStyle2_get_layoutFlow(IHTMLCurrentStyle2 *iface, BSTR *p)
832 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
833 FIXME("(%p)->(%p)\n", This, p);
834 return E_NOTIMPL;
837 static HRESULT WINAPI HTMLCurrentStyle2_get_wordWrap(IHTMLCurrentStyle2 *iface, BSTR *p)
839 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
840 FIXME("(%p)->(%p)\n", This, p);
841 return E_NOTIMPL;
844 static HRESULT WINAPI HTMLCurrentStyle2_get_textUnderlinePosition(IHTMLCurrentStyle2 *iface, BSTR *p)
846 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
847 FIXME("(%p)->(%p)\n", This, p);
848 return E_NOTIMPL;
851 static HRESULT WINAPI HTMLCurrentStyle2_get_hasLayout(IHTMLCurrentStyle2 *iface, VARIANT_BOOL *p)
853 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
855 FIXME("(%p)->(%p) returning true\n", This, p);
857 *p = VARIANT_TRUE;
858 return S_OK;
861 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarBaseColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
863 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
864 FIXME("(%p)->(%p)\n", This, p);
865 return E_NOTIMPL;
868 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarFaceColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
870 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
871 FIXME("(%p)->(%p)\n", This, p);
872 return E_NOTIMPL;
875 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbar3dLightColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
877 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
878 FIXME("(%p)->(%p)\n", This, p);
879 return E_NOTIMPL;
882 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarShadowColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
884 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
885 FIXME("(%p)->(%p)\n", This, p);
886 return E_NOTIMPL;
889 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarHighlightColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
891 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
892 FIXME("(%p)->(%p)\n", This, p);
893 return E_NOTIMPL;
896 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarDarkShadowColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
898 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
899 FIXME("(%p)->(%p)\n", This, p);
900 return E_NOTIMPL;
903 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarArrowColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
905 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
906 FIXME("(%p)->(%p)\n", This, p);
907 return E_NOTIMPL;
910 static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarTrackColor(IHTMLCurrentStyle2 *iface, VARIANT *p)
912 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
913 FIXME("(%p)->(%p)\n", This, p);
914 return E_NOTIMPL;
917 static HRESULT WINAPI HTMLCurrentStyle2_get_writingMode(IHTMLCurrentStyle2 *iface, BSTR *p)
919 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
920 FIXME("(%p)->(%p)\n", This, p);
921 return E_NOTIMPL;
924 static HRESULT WINAPI HTMLCurrentStyle2_get_zoom(IHTMLCurrentStyle2 *iface, VARIANT *p)
926 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
927 FIXME("(%p)->(%p)\n", This, p);
928 return E_NOTIMPL;
931 static HRESULT WINAPI HTMLCurrentStyle2_get_filter(IHTMLCurrentStyle2 *iface, BSTR *p)
933 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
935 TRACE("(%p)->(%p)\n", This, p);
937 if(This->elem->filter) {
938 *p = SysAllocString(This->elem->filter);
939 if(!*p)
940 return E_OUTOFMEMORY;
941 }else {
942 *p = NULL;
945 return S_OK;
948 static HRESULT WINAPI HTMLCurrentStyle2_get_textAlignLast(IHTMLCurrentStyle2 *iface, BSTR *p)
950 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
951 FIXME("(%p)->(%p)\n", This, p);
952 return E_NOTIMPL;
955 static HRESULT WINAPI HTMLCurrentStyle2_get_textKashidaSpace(IHTMLCurrentStyle2 *iface, VARIANT *p)
957 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
958 FIXME("(%p)->(%p)\n", This, p);
959 return E_NOTIMPL;
962 static HRESULT WINAPI HTMLCurrentStyle2_get_isBlock(IHTMLCurrentStyle2 *iface, VARIANT_BOOL *p)
964 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
965 FIXME("(%p)->(%p)\n", This, p);
966 return E_NOTIMPL;
969 static const IHTMLCurrentStyle2Vtbl HTMLCurrentStyle2Vtbl = {
970 HTMLCurrentStyle2_QueryInterface,
971 HTMLCurrentStyle2_AddRef,
972 HTMLCurrentStyle2_Release,
973 HTMLCurrentStyle2_GetTypeInfoCount,
974 HTMLCurrentStyle2_GetTypeInfo,
975 HTMLCurrentStyle2_GetIDsOfNames,
976 HTMLCurrentStyle2_Invoke,
977 HTMLCurrentStyle2_get_layoutFlow,
978 HTMLCurrentStyle2_get_wordWrap,
979 HTMLCurrentStyle2_get_textUnderlinePosition,
980 HTMLCurrentStyle2_get_hasLayout,
981 HTMLCurrentStyle2_get_scrollbarBaseColor,
982 HTMLCurrentStyle2_get_scrollbarFaceColor,
983 HTMLCurrentStyle2_get_scrollbar3dLightColor,
984 HTMLCurrentStyle2_get_scrollbarShadowColor,
985 HTMLCurrentStyle2_get_scrollbarHighlightColor,
986 HTMLCurrentStyle2_get_scrollbarDarkShadowColor,
987 HTMLCurrentStyle2_get_scrollbarArrowColor,
988 HTMLCurrentStyle2_get_scrollbarTrackColor,
989 HTMLCurrentStyle2_get_writingMode,
990 HTMLCurrentStyle2_get_zoom,
991 HTMLCurrentStyle2_get_filter,
992 HTMLCurrentStyle2_get_textAlignLast,
993 HTMLCurrentStyle2_get_textKashidaSpace,
994 HTMLCurrentStyle2_get_isBlock
997 DISPEX_IDISPATCH_IMPL(HTMLCurrentStyle3, IHTMLCurrentStyle3,
998 impl_from_IHTMLCurrentStyle3(iface)->css_style.dispex)
1000 static HRESULT WINAPI HTMLCurrentStyle3_get_textOverflow(IHTMLCurrentStyle3 *iface, BSTR *p)
1002 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle3(iface);
1003 FIXME("(%p)->(%p)\n", This, p);
1004 return E_NOTIMPL;
1007 static HRESULT WINAPI HTMLCurrentStyle3_get_minHeight(IHTMLCurrentStyle3 *iface, VARIANT *p)
1009 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle3(iface);
1010 FIXME("(%p)->(%p)\n", This, p);
1011 return E_NOTIMPL;
1014 static HRESULT WINAPI HTMLCurrentStyle3_get_wordSpacing(IHTMLCurrentStyle3 *iface, VARIANT *p)
1016 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle3(iface);
1017 FIXME("(%p)->(%p)\n", This, p);
1018 return E_NOTIMPL;
1021 static HRESULT WINAPI HTMLCurrentStyle3_get_whiteSpace(IHTMLCurrentStyle3 *iface, BSTR *p)
1023 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle3(iface);
1025 TRACE("(%p)->(%p)\n", This, p);
1027 return get_current_style_property(This, STYLEID_WHITE_SPACE, p);
1030 static const IHTMLCurrentStyle3Vtbl HTMLCurrentStyle3Vtbl = {
1031 HTMLCurrentStyle3_QueryInterface,
1032 HTMLCurrentStyle3_AddRef,
1033 HTMLCurrentStyle3_Release,
1034 HTMLCurrentStyle3_GetTypeInfoCount,
1035 HTMLCurrentStyle3_GetTypeInfo,
1036 HTMLCurrentStyle3_GetIDsOfNames,
1037 HTMLCurrentStyle3_Invoke,
1038 HTMLCurrentStyle3_get_textOverflow,
1039 HTMLCurrentStyle3_get_minHeight,
1040 HTMLCurrentStyle3_get_wordSpacing,
1041 HTMLCurrentStyle3_get_whiteSpace
1044 DISPEX_IDISPATCH_IMPL(HTMLCurrentStyle4, IHTMLCurrentStyle4,
1045 impl_from_IHTMLCurrentStyle4(iface)->css_style.dispex)
1047 static HRESULT WINAPI HTMLCurrentStyle4_msInterpolationMode(IHTMLCurrentStyle4 *iface, BSTR *p)
1049 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle4(iface);
1050 FIXME("(%p)->(%p)\n", This, p);
1051 return E_NOTIMPL;
1054 static HRESULT WINAPI HTMLCurrentStyle4_get_maxHeight(IHTMLCurrentStyle4 *iface, VARIANT *p)
1056 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle4(iface);
1057 FIXME("(%p)->(%p)\n", This, p);
1058 return E_NOTIMPL;
1061 static HRESULT WINAPI HTMLCurrentStyle4_get_minWidth(IHTMLCurrentStyle4 *iface, VARIANT *p)
1063 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle4(iface);
1064 TRACE("(%p)->(%p)\n", This, p);
1065 return get_current_style_property_var(This, STYLEID_MIN_WIDTH, p);
1068 static HRESULT WINAPI HTMLCurrentStyle4_get_maxWidth(IHTMLCurrentStyle4 *iface, VARIANT *p)
1070 HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle4(iface);
1071 FIXME("(%p)->(%p)\n", This, p);
1072 return E_NOTIMPL;
1075 static const IHTMLCurrentStyle4Vtbl HTMLCurrentStyle4Vtbl = {
1076 HTMLCurrentStyle4_QueryInterface,
1077 HTMLCurrentStyle4_AddRef,
1078 HTMLCurrentStyle4_Release,
1079 HTMLCurrentStyle4_GetTypeInfoCount,
1080 HTMLCurrentStyle4_GetTypeInfo,
1081 HTMLCurrentStyle4_GetIDsOfNames,
1082 HTMLCurrentStyle4_Invoke,
1083 HTMLCurrentStyle4_msInterpolationMode,
1084 HTMLCurrentStyle4_get_maxHeight,
1085 HTMLCurrentStyle4_get_minWidth,
1086 HTMLCurrentStyle4_get_maxWidth
1089 static inline HTMLCurrentStyle *impl_from_DispatchEx(DispatchEx *dispex)
1091 return CONTAINING_RECORD(dispex, HTMLCurrentStyle, css_style.dispex);
1094 static void *HTMLCurrentStyle_query_interface(DispatchEx *dispex, REFIID riid)
1096 HTMLCurrentStyle *This = impl_from_DispatchEx(dispex);
1098 if(IsEqualGUID(&IID_IHTMLCurrentStyle, riid))
1099 return &This->IHTMLCurrentStyle_iface;
1100 if(IsEqualGUID(&IID_IHTMLCurrentStyle2, riid))
1101 return &This->IHTMLCurrentStyle2_iface;
1102 if(IsEqualGUID(&IID_IHTMLCurrentStyle3, riid))
1103 return &This->IHTMLCurrentStyle3_iface;
1104 if(IsEqualGUID(&IID_IHTMLCurrentStyle4, riid))
1105 return &This->IHTMLCurrentStyle4_iface;
1106 return CSSStyle_query_interface(&This->css_style.dispex, riid);
1109 static void HTMLCurrentStyle_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb)
1111 HTMLCurrentStyle *This = impl_from_DispatchEx(dispex);
1112 CSSStyle_traverse(&This->css_style.dispex, cb);
1114 if(This->elem)
1115 note_cc_edge((nsISupports*)&This->elem->node.IHTMLDOMNode_iface, "elem", cb);
1118 static void HTMLCurrentStyle_unlink(DispatchEx *dispex)
1120 HTMLCurrentStyle *This = impl_from_DispatchEx(dispex);
1121 CSSStyle_unlink(&This->css_style.dispex);
1123 if(This->elem) {
1124 HTMLElement *elem = This->elem;
1125 This->elem = NULL;
1126 IHTMLDOMNode_Release(&elem->node.IHTMLDOMNode_iface);
1130 static const dispex_static_data_vtbl_t HTMLCurrentStyle_dispex_vtbl = {
1131 CSSSTYLE_DISPEX_VTBL_ENTRIES,
1132 .query_interface = HTMLCurrentStyle_query_interface,
1133 .traverse = HTMLCurrentStyle_traverse,
1134 .unlink = HTMLCurrentStyle_unlink
1137 static const tid_t HTMLCurrentStyle_iface_tids[] = {
1138 IHTMLCurrentStyle_tid,
1139 IHTMLCurrentStyle2_tid,
1140 IHTMLCurrentStyle3_tid,
1141 IHTMLCurrentStyle4_tid,
1144 static dispex_static_data_t HTMLCurrentStyle_dispex = {
1145 "MSCurrentStyleCSSProperties",
1146 &HTMLCurrentStyle_dispex_vtbl,
1147 DispHTMLCurrentStyle_tid,
1148 HTMLCurrentStyle_iface_tids,
1149 CSSStyle_init_dispex_info
1152 HRESULT HTMLCurrentStyle_Create(HTMLElement *elem, IHTMLCurrentStyle **p)
1154 nsIDOMCSSStyleDeclaration *nsstyle;
1155 mozIDOMWindowProxy *nsview;
1156 nsIDOMWindow *nswindow;
1157 nsAString nsempty_str;
1158 HTMLCurrentStyle *ret;
1159 nsresult nsres;
1161 if(!elem->node.doc->dom_document) {
1162 WARN("NULL dom_document\n");
1163 return E_UNEXPECTED;
1166 nsres = nsIDOMDocument_GetDefaultView(elem->node.doc->dom_document, &nsview);
1167 if(NS_FAILED(nsres)) {
1168 ERR("GetDefaultView failed: %08lx\n", nsres);
1169 return E_FAIL;
1172 nsres = mozIDOMWindowProxy_QueryInterface(nsview, &IID_nsIDOMWindow, (void**)&nswindow);
1173 mozIDOMWindowProxy_Release(nsview);
1174 assert(nsres == NS_OK);
1176 nsAString_Init(&nsempty_str, NULL);
1177 nsres = nsIDOMWindow_GetComputedStyle(nswindow, elem->dom_element, &nsempty_str, &nsstyle);
1178 nsAString_Finish(&nsempty_str);
1179 nsIDOMWindow_Release(nswindow);
1180 if(NS_FAILED(nsres)) {
1181 ERR("GetComputedStyle failed: %08lx\n", nsres);
1182 return E_FAIL;
1185 if(!nsstyle) {
1186 ERR("GetComputedStyle returned NULL nsstyle\n");
1187 return E_FAIL;
1190 ret = calloc(1, sizeof(HTMLCurrentStyle));
1191 if(!ret) {
1192 nsIDOMCSSStyleDeclaration_Release(nsstyle);
1193 return E_OUTOFMEMORY;
1196 ret->IHTMLCurrentStyle_iface.lpVtbl = &HTMLCurrentStyleVtbl;
1197 ret->IHTMLCurrentStyle2_iface.lpVtbl = &HTMLCurrentStyle2Vtbl;
1198 ret->IHTMLCurrentStyle3_iface.lpVtbl = &HTMLCurrentStyle3Vtbl;
1199 ret->IHTMLCurrentStyle4_iface.lpVtbl = &HTMLCurrentStyle4Vtbl;
1201 init_css_style(&ret->css_style, nsstyle, &HTMLCurrentStyle_dispex, dispex_compat_mode(&elem->node.event_target.dispex));
1202 nsIDOMCSSStyleDeclaration_Release(nsstyle);
1204 IHTMLElement_AddRef(&elem->IHTMLElement_iface);
1205 ret->elem = elem;
1207 *p = &ret->IHTMLCurrentStyle_iface;
1208 return S_OK;