hyper-literate/src/mysterx/htmlutil.cxx
Robby Findler cc5712aab2 ...
original commit: c08748fcbcf882ca05f6754391d4ace5f009b361
2000-06-01 18:38:07 +00:00

1155 lines
30 KiB
C++

// htmlutil.cxx
#include "stdafx.h"
#include <objbase.h>
#include <mshtml.h>
#include <initguid.h>
#include <winnls.h>
#include <exdisp.h>
#include "escheme.h"
#include "myspage.h"
#include "myssink.h"
#include "mysterx.h"
#include "htmlutil.h"
IHTMLElement *findBodyElement(IHTMLDocument2 *pDocument,char *tag,char *id) {
IHTMLElementCollection *pTagCollection;
IHTMLElement *pBody,*pIHTMLElement,*retval;
IDispatch *pIDispatch;
long numElts;
BSTR idAttribute;
BSTR idBSTR;
VARIANT variant;
int i;
// filter elements by tag
pDocument->get_body(&pBody);
if (pBody == NULL) {
scheme_signal_error("Can't find document body");
}
pTagCollection = getBodyElementsWithTag(pBody,tag);
pBody->Release();
// enumerate until we find id or return NULL
pTagCollection->get_length(&numElts);
idAttribute = SysAllocString(L"id");
idBSTR = stringToBSTR(id,strlen(id));
retval = NULL;
for (i = numElts - 1; i >= 0; i--) {
pIDispatch = getElementInCollection(pTagCollection,i);
pIDispatch->QueryInterface(IID_IHTMLElement,(void **)&pIHTMLElement);
pIDispatch->Release();
if (pIHTMLElement == NULL) {
continue;
}
pIHTMLElement->getAttribute(idAttribute,FALSE,&variant);
if (variant.vt == VT_BSTR && variant.bstrVal &&
_wcsicmp(idBSTR,variant.bstrVal) == 0) {
retval = pIHTMLElement;
break;
}
pIHTMLElement->Release();
}
SysFreeString(idAttribute);
SysFreeString(idBSTR);
pTagCollection->Release();
return retval;
}
IHTMLElementCollection *getBodyElementsWithTag(IHTMLElement *pBody,char *tag) {
IDispatch *pBodyDispatch;
IDispatch *pObjectsDispatch;
IHTMLElementCollection *pBodyEltCollection;
IHTMLElementCollection *pObjectsCollection;
long numBodyItems;
BSTR bstr;
VARIANT variant;
VARIANT emptyVariant;
pBody->get_all(&pBodyDispatch);
pBodyDispatch->QueryInterface(IID_IHTMLElementCollection,(void **)&pBodyEltCollection);
pBodyDispatch->Release();
if (pBodyEltCollection == NULL) {
scheme_signal_error("Can't get body elements");
}
pBodyEltCollection->get_length(&numBodyItems);
bstr = stringToBSTR(tag,strlen(tag));
VariantInit(&variant);
VariantInit(&emptyVariant);
variant.vt = VT_BSTR;
variant.bstrVal = bstr;
pBodyEltCollection->tags(variant,&pObjectsDispatch);
pBodyEltCollection->Release();
SysFreeString(bstr);
if (pObjectsDispatch == NULL) {
scheme_signal_error("Can't get body objects");
}
pObjectsDispatch->QueryInterface(IID_IHTMLElementCollection,(void **)&pObjectsCollection);
pObjectsDispatch->Release();
if (pObjectsCollection == NULL) {
scheme_signal_error("Can't get body elements");
}
return pObjectsCollection;
}
IDispatch *getElementInCollection(IHTMLElementCollection *pEltCollection,int ndx) {
VARIANT variant,emptyVariant;
IDispatch *pIDispatch;
VariantInit(&variant);
VariantInit(&emptyVariant);
variant.vt = VT_I2;
variant.iVal = ndx;
pEltCollection->item(variant,emptyVariant,&pIDispatch);
if (pIDispatch == NULL) {
scheme_signal_error("Unable to find element %d in collection",ndx);
}
return pIDispatch;
}
IDispatch *getObjectInCollection(IHTMLElementCollection *pObjectCollection,int ndx) {
IDispatch *pIDispatch;
IHTMLObjectElement *pIHTMLObjectElement;
pIDispatch = getElementInCollection(pObjectCollection,ndx);
// sometimes pIDispatch is HTML element containing the control
// sometimes it's the control itself
// apparent bug in DHTML
pIDispatch->QueryInterface(IID_IHTMLObjectElement,(void **)&pIHTMLObjectElement);
if (pIHTMLObjectElement != NULL) {
pIDispatch->Release();
pIHTMLObjectElement->get_object(&pIDispatch);
if (pIDispatch == NULL) {
scheme_signal_error("Unable to get object element interface for object");
}
}
return pIDispatch;
}
Scheme_Object *mx_element_focus(int argc,Scheme_Object **argv) {
// if recent Platform SDK not available, comment out code
// from HERE
#if NEWMSHTML
HRESULT hr;
IHTMLElement *pIHTMLElement;
IHTMLElement2 *pIHTMLElement2;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-focus","mx-element",0,argc,argv);
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
hr = pIHTMLElement->QueryInterface(IID_IHTMLElement2,
(void **)&pIHTMLElement2);
if (hr != S_OK || pIHTMLElement2 == NULL) {
codedComError("element-focus: Couldn't find IHTMLElement2 interface",hr);
}
pIHTMLElement2->focus();
pIHTMLElement2->Release();
#endif
// to HERE
return scheme_void;
}
// selections
Scheme_Object *mx_element_selection(int argc,Scheme_Object **argv) {
HRESULT hr;
IHTMLElement *pIHTMLElement;
IHTMLSelectElement *pIHTMLSelectElement;
BSTR selection;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-selection","mx-element",0,argc,argv);
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
hr = pIHTMLElement->QueryInterface(IID_IHTMLSelectElement,
(void **)&pIHTMLSelectElement);
if (hr != S_OK || pIHTMLSelectElement == NULL) {
codedComError("element-selection: Couldn't find IHTMLSelectElement interface",hr);
}
hr = pIHTMLSelectElement->get_value(&selection);
pIHTMLSelectElement->Release();
if (hr != S_OK) {
codedComError("element-selection: Error getting selection value",hr);
}
return BSTRToSchemeString(selection);
}
Scheme_Object *mx_element_set_selection(int argc,Scheme_Object **argv) {
HRESULT hr;
IHTMLElement *pIHTMLElement;
IHTMLSelectElement *pIHTMLSelectElement;
BSTR selection;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-set-selection!","mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type("element-set-selection!","string",1,argc,argv);
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
hr = pIHTMLElement->QueryInterface(IID_IHTMLSelectElement,
(void **)&pIHTMLSelectElement);
if (hr != S_OK || pIHTMLSelectElement == NULL) {
codedComError("element-set-selection!: Couldn't find IHTMLSelectElement interface",hr);
}
selection = schemeStringToBSTR(argv[1]);
hr = pIHTMLSelectElement->put_value(selection);
SysFreeString(selection);
pIHTMLSelectElement->Release();
if (hr != S_OK) {
codedComError("element-selection: Error getting selection value",hr);
}
return scheme_void;
}
// IHTMLElement wrappers
Scheme_Object *mx_element_stuff_html(int argc,Scheme_Object **argv,WCHAR *where,char *name) {
IHTMLElement *pIHTMLElement;
BSTR whereBSTR,htmlBSTR;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type(name,"mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type(name,"string",0,argc,argv);
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
whereBSTR = SysAllocString(where);
htmlBSTR = schemeStringToBSTR(argv[1]);
pIHTMLElement->insertAdjacentHTML(whereBSTR,htmlBSTR);
SysFreeString(whereBSTR);
SysFreeString(htmlBSTR);
return scheme_void;
}
Scheme_Object *mx_element_insert_html(int argc,Scheme_Object **argv) {
return mx_element_stuff_html(argc,argv,L"BeforeBegin","element-insert-html");
}
Scheme_Object *mx_element_append_html(int argc,Scheme_Object **argv) {
return mx_element_stuff_html(argc,argv,L"AfterEnd","element-append-html");
}
Scheme_Object *mx_element_stuff_text(int argc,Scheme_Object **argv,WCHAR *where,char *name) {
IHTMLElement *pIHTMLElement;
BSTR whereBSTR,textBSTR;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type(name,"mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type(name,"string",0,argc,argv);
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
whereBSTR = SysAllocString(where);
textBSTR = schemeStringToBSTR(argv[1]);
pIHTMLElement->insertAdjacentText(whereBSTR,textBSTR);
SysFreeString(whereBSTR);
SysFreeString(textBSTR);
return scheme_void;
}
Scheme_Object *mx_element_insert_text(int argc,Scheme_Object **argv) {
return mx_element_stuff_html(argc,argv,L"BeforeBegin","element-insert-text");
}
Scheme_Object *mx_element_append_text(int argc,Scheme_Object **argv) {
return mx_element_stuff_html(argc,argv,L"AfterEnd","element-append-text");
}
Scheme_Object *mx_element_replace_html(int argc,Scheme_Object **argv) {
IHTMLElement *pIHTMLElement;
BSTR htmlBSTR;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-replace-html","mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type("element-replace-html","string",0,argc,argv);
}
if (MX_ELEMENT_VALIDITY(argv[0]) == FALSE) {
scheme_signal_error("Element no longer valid");
}
MX_ELEMENT_VALIDITY(argv[0]) = FALSE;
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
htmlBSTR = schemeStringToBSTR(argv[1]);
pIHTMLElement->put_outerHTML(htmlBSTR);
pIHTMLElement->Release();
SysFreeString(htmlBSTR);
return scheme_void;
}
Scheme_Object *mx_element_attribute(int argc,Scheme_Object **argv) {
IHTMLElement *pIHTMLElement;
BSTR attributeBSTR;
VARIANT variant;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-attribute","mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type("element-attribute","string",0,argc,argv);
}
if (MX_ELEMENT_VALIDITY(argv[0]) == FALSE) {
scheme_signal_error("Element no longer valid");
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
attributeBSTR = schemeStringToBSTR(argv[1]);
pIHTMLElement->getAttribute(attributeBSTR,FALSE,&variant);
SysFreeString(attributeBSTR);
return variantToSchemeObject(&variant);
}
Scheme_Object *mx_element_set_attribute(int argc,Scheme_Object **argv) {
IHTMLElement *pIHTMLElement;
BSTR attributeBSTR;
VARIANT variant;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-set-attribute!","mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type("element-set-attribute!","string",1,argc,argv);
}
if (SCHEME_STRINGP(argv[2]) == FALSE && SCHEME_INTP(argv[2]) == FALSE &&
#ifdef MZ_USE_SINGLE_FLOATS
SCHEME_FLTP(argv[2]) == FALSE &&
#endif
SCHEME_DBLP(argv[2]) == FALSE &&
argv[2] != scheme_true && argv[2] != scheme_false) {
scheme_signal_error("Attribute must have a type in {string,integer,float,double,{#t,#f}}");
}
if (MX_ELEMENT_VALIDITY(argv[0]) == FALSE) {
scheme_signal_error("Element no longer valid");
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
attributeBSTR = schemeStringToBSTR(argv[1]);
marshallSchemeValueToVariant(argv[2],&variant);
pIHTMLElement->setAttribute(attributeBSTR,variant,FALSE);
SysFreeString(attributeBSTR);
return scheme_void;
}
Scheme_Object *mx_element_remove_attribute(int argc,Scheme_Object **argv) {
IHTMLElement *pIHTMLElement;
BSTR attributeBSTR;
VARIANT_BOOL success;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-remove-attribute!","mx-element",0,argc,argv);
}
if (SCHEME_STRINGP(argv[1]) == FALSE) {
scheme_wrong_type("element-remove-attribute!","string",1,argc,argv);
}
if (MX_ELEMENT_VALIDITY(argv[0]) == FALSE) {
scheme_signal_error("Element no longer valid");
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
attributeBSTR = schemeStringToBSTR(argv[1]);
pIHTMLElement->removeAttribute(attributeBSTR,FALSE,&success);
SysFreeString(attributeBSTR);
if (success == 0) {
scheme_signal_error("Failure in removing attribute");
}
return scheme_void;
}
Scheme_Object *mx_element_tag(int argc,Scheme_Object **argv) {
IHTMLElement *pIHTMLElement;
BSTR tagBSTR;
Scheme_Object *retval;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-tag","mx-element",0,argc,argv);
}
if (MX_ELEMENT_VALIDITY(argv[0]) == FALSE) {
scheme_signal_error("Element no longer valid");
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
pIHTMLElement->get_tagName(&tagBSTR);
retval = BSTRToSchemeString(tagBSTR);
SysFreeString(tagBSTR);
return retval;
}
Scheme_Object *mx_element_click(int argc,Scheme_Object **argv) {
IHTMLElement *pIHTMLElement;
if (MX_ELEMENTP(argv[0]) == FALSE) {
scheme_wrong_type("element-click","mx-element",0,argc,argv);
}
if (MX_ELEMENT_VALIDITY(argv[0]) == FALSE) {
scheme_signal_error("Element no longer valid");
}
pIHTMLElement = MX_ELEMENT_VAL(argv[0]);
pIHTMLElement->click();
return scheme_void;
}
// IHTMLStyle functions via IHTMLElement
IHTMLStyle *styleInterfaceFromElement(Scheme_Object *o) {
IHTMLElement *pIHTMLElement;
IHTMLStyle *pIHTMLStyle;
if (MX_ELEMENT_VALIDITY(o) == FALSE) {
scheme_signal_error("Element no longer valid");
}
pIHTMLElement = MX_ELEMENT_VAL(o);
pIHTMLStyle = NULL;
pIHTMLElement->get_style(&pIHTMLStyle);
if (pIHTMLStyle == NULL) {
scheme_signal_error("Can't get IHTMLStyle interface from element");
}
return pIHTMLStyle;
}
// function definitions using C macros in htmlutil.h
// strings
elt_style_string_getter(mx_element_font_family,"element-font-family",
get_fontFamily)
elt_style_string_setter(mx_element_set_font_family,"element-set-font-family!",
put_fontFamily)
elt_style_string_getter(mx_element_font_style,"element-font-style",
get_fontStyle)
elt_style_string_setter(mx_element_set_font_style,"element-set-font-style!",
put_fontStyle)
elt_style_string_getter(mx_element_font_variant,"element-font-variant",
get_fontVariant)
elt_style_string_setter(mx_element_set_font_variant,"element-set-font-variant!",
put_fontVariant)
elt_style_string_getter(mx_element_font_weight,"element-font-weight",
get_fontWeight)
elt_style_string_setter(mx_element_set_font_weight,"element-set-font-weight!",
put_fontWeight)
elt_style_string_getter(mx_element_font,"element-font",
get_font)
elt_style_string_setter(mx_element_set_font,"element-set-font!",
put_font)
elt_style_string_getter(mx_element_background,"element-background",
get_background)
elt_style_string_setter(mx_element_set_background,"element-set-background!",
put_background)
elt_style_string_getter(mx_element_background_image,
"element-background-image",
get_backgroundImage)
elt_style_string_setter(mx_element_set_background_image,
"element-set-background-image!",
put_backgroundImage)
elt_style_string_getter(mx_element_background_repeat,
"element-background-repeat",
get_backgroundRepeat)
elt_style_string_setter(mx_element_set_background_repeat,
"element-set-background-repeat!",
put_backgroundRepeat)
elt_style_string_getter(mx_element_background_attachment,
"element-background-attachment",
get_backgroundAttachment)
elt_style_string_setter(mx_element_set_background_attachment,
"element-set-background-attachment!",
put_backgroundAttachment)
elt_style_string_getter(mx_element_background_position,
"element-background-position",
get_backgroundPosition)
elt_style_string_setter(mx_element_set_background_position,
"element-set-background-position!",
put_backgroundPosition)
elt_style_string_getter(mx_element_text_decoration,
"element-text-decoration",
get_textDecoration)
elt_style_string_setter(mx_element_set_text_decoration,
"element-set-text-decoration!",
put_textDecoration)
elt_style_string_getter(mx_element_text_transform,
"element-text-transform",
get_textTransform)
elt_style_string_setter(mx_element_set_text_transform,
"element-set-text-transform!",
put_textTransform)
elt_style_string_getter(mx_element_text_align,
"element-text-align",
get_textAlign)
elt_style_string_setter(mx_element_set_text_align,
"element-set-text-align!",
put_textAlign)
elt_style_string_getter(mx_element_margin,
"element-margin",
get_margin)
elt_style_string_setter(mx_element_set_margin,
"element-set-margin!",
put_margin)
elt_style_string_getter(mx_element_padding,
"element-padding",
get_padding)
elt_style_string_setter(mx_element_set_padding,
"element-set-padding!",
put_padding)
elt_style_string_getter(mx_element_border,
"element-border",
get_border)
elt_style_string_setter(mx_element_set_border,
"element-set-border!",
put_border)
elt_style_string_getter(mx_element_border_top,
"element-border-top",
get_borderTop)
elt_style_string_setter(mx_element_set_border_top,
"element-set-border-top!",
put_borderTop)
elt_style_string_getter(mx_element_border_left,
"element-border-left",
get_borderLeft)
elt_style_string_setter(mx_element_set_border_left,
"element-set-border-left!",
put_borderLeft)
elt_style_string_getter(mx_element_border_right,
"element-border-right",
get_borderRight)
elt_style_string_setter(mx_element_set_border_right,
"element-set-border-right!",
put_borderRight)
elt_style_string_getter(mx_element_border_bottom,
"element-border-bottom",
get_borderBottom)
elt_style_string_setter(mx_element_set_border_bottom,
"element-set-border-bottom!",
put_borderBottom)
elt_style_string_getter(mx_element_border_color,
"element-border-color",
get_borderColor)
elt_style_string_setter(mx_element_set_border_color,
"element-set-border-color!",
put_borderColor)
elt_style_string_getter(mx_element_border_width,
"element-border-width",
get_borderWidth)
elt_style_string_setter(mx_element_set_border_width,
"element-set-border-width!",
put_borderWidth)
elt_style_string_getter(mx_element_border_style,
"element-border-style",
get_borderStyle)
elt_style_string_setter(mx_element_set_border_style,
"element-set-border-style!",
put_borderStyle)
elt_style_string_getter(mx_element_border_top_style,
"element-border-top-style",
get_borderTopStyle)
elt_style_string_setter(mx_element_set_border_top_style,
"element-set-border-top-style!",
put_borderTopStyle)
elt_style_string_getter(mx_element_border_bottom_style,
"element-border-bottom-style",
get_borderBottomStyle)
elt_style_string_setter(mx_element_set_border_bottom_style,
"element-set-border-bottom-style!",
put_borderBottomStyle)
elt_style_string_getter(mx_element_border_left_style,
"element-border-left-style",
get_borderLeftStyle)
elt_style_string_setter(mx_element_set_border_left_style,
"element-set-border-left-style!",
put_borderLeftStyle)
elt_style_string_getter(mx_element_border_right_style,
"element-border-right-style",
get_borderRightStyle)
elt_style_string_setter(mx_element_set_border_right_style,
"element-set-border-right-style!",
put_borderRightStyle)
elt_style_string_getter(mx_element_style_float,
"element-style-float",
get_styleFloat)
elt_style_string_setter(mx_element_set_style_float,
"element-set-style-float!",
put_styleFloat)
elt_style_string_getter(mx_element_clear,
"element-clear",
get_clear)
elt_style_string_setter(mx_element_set_clear,
"element-set-clear!",
put_clear)
elt_style_string_getter(mx_element_display,
"element-display",
get_display)
elt_style_string_setter(mx_element_set_display,
"element-set-display!",
put_display)
elt_style_string_getter(mx_element_visibility,
"element-visibility",
get_visibility)
elt_style_string_setter(mx_element_set_visibility,
"element-set-visibility!",
put_visibility)
elt_style_string_getter(mx_element_list_style_type,
"element-list-style-type",
get_listStyleType)
elt_style_string_setter(mx_element_set_list_style_type,
"element-set-list-style-type!",
put_listStyleType)
elt_style_string_getter(mx_element_list_style_position,
"element-list-style-position",
get_listStylePosition)
elt_style_string_setter(mx_element_set_list_style_position,
"element-set-list-style-position!",
put_listStylePosition)
elt_style_string_getter(mx_element_list_style_image,
"element-list-style-image",
get_listStyleImage)
elt_style_string_setter(mx_element_set_list_style_image,
"element-set-list-style-image!",
put_listStyleImage)
elt_style_string_getter(mx_element_list_style,
"element-list-style",
get_listStyle)
elt_style_string_setter(mx_element_set_list_style,
"element-set-list-style!",
put_listStyle)
// note: no setter here
elt_style_string_getter(mx_element_position,
"element-position",
get_position)
elt_style_string_getter(mx_element_overflow,
"element-overflow",
get_overflow)
elt_style_string_setter(mx_element_set_overflow,
"element-set-overflow!",
put_overflow)
elt_style_string_getter(mx_element_pagebreak_before,
"element-pagebreak-before",
get_pageBreakBefore)
elt_style_string_setter(mx_element_set_pagebreak_before,
"element-set-pagebreak-before!",
put_pageBreakBefore)
elt_style_string_getter(mx_element_pagebreak_after,
"element-pagebreak-after",
get_pageBreakAfter)
elt_style_string_setter(mx_element_set_pagebreak_after,
"element-set-pagebreak-after!",
put_pageBreakAfter)
elt_style_string_getter(mx_element_css_text,
"element-css-text",
get_cssText)
elt_style_string_setter(mx_element_set_css_text,
"element-set-css_text!",
put_cssText)
elt_style_string_getter(mx_element_cursor,
"element-cursor",
get_cursor)
elt_style_string_setter(mx_element_set_cursor,
"element-set-cursor!",
put_cursor)
elt_style_string_getter(mx_element_clip,
"element-clip",
get_clip)
elt_style_string_setter(mx_element_set_clip,
"element-set-clip!",
put_clip)
elt_style_string_getter(mx_element_filter,
"element-filter",
get_filter)
elt_style_string_setter(mx_element_set_filter,
"element-set-filter!",
put_filter)
// note: no setter here
elt_style_string_getter(mx_element_style_string,
"element-style-string",
toString)
// bools
elt_style_bool_getter(mx_element_text_decoration_none,
"element-text-decoration-none",
get_textDecorationNone)
elt_style_bool_setter(mx_element_set_text_decoration_none,
"element-set-text-decoration-none!",
put_textDecorationNone)
elt_style_bool_getter(mx_element_text_decoration_underline,
"element-text-decoration-underline",
get_textDecorationUnderline)
elt_style_bool_setter(mx_element_set_text_decoration_underline,
"element-set-text-decoration-underline!",
put_textDecorationUnderline)
elt_style_bool_getter(mx_element_text_decoration_overline,
"element-text-decoration-overline",
get_textDecorationOverline)
elt_style_bool_setter(mx_element_set_text_decoration_overline,
"element-set-text-decoration-overline!",
put_textDecorationOverline)
elt_style_bool_getter(mx_element_text_decoration_linethrough,
"element-text-decoration-linethrough",
get_textDecorationLineThrough)
elt_style_bool_setter(mx_element_set_text_decoration_linethrough,
"element-set-text-decoration-linethrough!",
put_textDecorationLineThrough)
elt_style_bool_getter(mx_element_text_decoration_blink,
"element-text-decoration-blink",
get_textDecorationBlink)
elt_style_bool_setter(mx_element_set_text_decoration_blink,
"element-set-text-decoration-blink!",
put_textDecorationBlink)
// longs
elt_style_long_getter(mx_element_pixel_top,
"element-pixel-top",
get_pixelTop)
elt_style_long_setter(mx_element_set_pixel_top,
"element-set-pixel-top!",
put_pixelTop)
elt_style_long_getter(mx_element_pixel_left,
"element-pixel-left",
get_pixelLeft)
elt_style_long_setter(mx_element_set_pixel_left,
"element-set-pixel-left!",
put_pixelLeft)
elt_style_long_getter(mx_element_pixel_width,
"element-pixel-width",
get_pixelWidth)
elt_style_long_setter(mx_element_set_pixel_width,
"element-set-pixel-width!",
put_pixelWidth)
elt_style_long_getter(mx_element_pixel_height,
"element-pixel-height",
get_pixelHeight)
elt_style_long_setter(mx_element_set_pixel_height,
"element-set-pixel-height!",
put_pixelHeight)
// floats
elt_style_float_getter(mx_element_pos_top,
"element-pos-top",
get_posTop)
elt_style_float_setter(mx_element_set_pos_top,
"element-set-pos-top!",
put_posTop)
elt_style_float_getter(mx_element_pos_left,
"element-pos-left",
get_posLeft)
elt_style_float_setter(mx_element_set_pos_left,
"element-set-pos-left!",
put_posLeft)
elt_style_float_getter(mx_element_pos_width,
"element-pos-width",
get_posWidth)
elt_style_float_setter(mx_element_set_pos_width,
"element-set-pos-width!",
put_posWidth)
elt_style_float_getter(mx_element_pos_height,
"element-pos-height",
get_posHeight)
elt_style_float_setter(mx_element_set_pos_height,
"element-set-pos-height!",
put_posHeight)
// variants
elt_style_variant_getter(mx_element_font_size,
"element-font-size",
get_fontSize)
elt_style_variant_setter(mx_element_set_font_size,
"element-set-font-size!",
put_fontSize)
elt_style_variant_getter(mx_element_color,
"element-color",
get_color)
elt_style_variant_setter(mx_element_set_color,
"element-set-color!",
put_color)
elt_style_variant_getter(mx_element_background_color,
"element-background-color",
get_backgroundColor)
elt_style_variant_setter(mx_element_set_background_color,
"element-set-background-color!",
put_backgroundColor)
elt_style_variant_getter(mx_element_background_position_x,
"element-background-position-x",
get_backgroundPositionX)
elt_style_variant_setter(mx_element_set_background_position_x,
"element-set-background_position-x!",
put_backgroundPositionX)
elt_style_variant_getter(mx_element_background_position_y,
"element-background-position-y",
get_backgroundPositionY)
elt_style_variant_setter(mx_element_set_background_position_y,
"element-set-background_position-y!",
put_backgroundPositionY)
elt_style_variant_getter(mx_element_letter_spacing,
"element-letter-spacing",
get_letterSpacing)
elt_style_variant_setter(mx_element_set_letter_spacing,
"element-set-letter-spacing",
put_letterSpacing)
elt_style_variant_getter(mx_element_vertical_align,
"element-vertical-align",
get_verticalAlign)
elt_style_variant_setter(mx_element_set_vertical_align,
"element-set-vertical-align",
put_verticalAlign)
elt_style_variant_getter(mx_element_text_indent,
"element-text-indent",
get_textIndent)
elt_style_variant_setter(mx_element_set_text_indent,
"element-set-text-indent",
put_textIndent)
elt_style_variant_getter(mx_element_line_height,
"element-line-height",
get_lineHeight)
elt_style_variant_setter(mx_element_set_line_height,
"element-set-line-height",
put_lineHeight)
elt_style_variant_getter(mx_element_margin_top,
"element-margin-top",
get_marginTop)
elt_style_variant_setter(mx_element_set_margin_top,
"element-set-margin-top",
put_marginTop)
elt_style_variant_getter(mx_element_margin_bottom,
"element-margin-bottom",
get_marginBottom)
elt_style_variant_setter(mx_element_set_margin_bottom,
"element-set-margin-bottom",
put_marginBottom)
elt_style_variant_getter(mx_element_margin_left,
"element-margin-left",
get_marginLeft)
elt_style_variant_setter(mx_element_set_margin_left,
"element-set-margin-left",
put_marginLeft)
elt_style_variant_getter(mx_element_margin_right,
"element-margin-right",
get_marginRight)
elt_style_variant_setter(mx_element_set_margin_right,
"element-set-margin-right",
put_marginRight)
elt_style_variant_getter(mx_element_padding_top,
"element-padding-top",
get_paddingTop)
elt_style_variant_setter(mx_element_set_padding_top,
"element-set-padding-top",
put_paddingTop)
elt_style_variant_getter(mx_element_padding_bottom,
"element-padding-bottom",
get_paddingBottom)
elt_style_variant_setter(mx_element_set_padding_bottom,
"element-set-padding-bottom",
put_paddingBottom)
elt_style_variant_getter(mx_element_padding_left,
"element-padding-left",
get_paddingLeft)
elt_style_variant_setter(mx_element_set_padding_left,
"element-set-padding-left",
put_paddingLeft)
elt_style_variant_getter(mx_element_padding_right,
"element-padding-right",
get_paddingRight)
elt_style_variant_setter(mx_element_set_padding_right,
"element-set-padding-right",
put_paddingRight)
elt_style_variant_getter(mx_element_border_top_color,
"element-border-top-color",
get_borderTopColor)
elt_style_variant_setter(mx_element_set_border_top_color,
"element-set-border-top-color",
put_borderTopColor)
elt_style_variant_getter(mx_element_border_bottom_color,
"element-border-bottom-color",
get_borderBottomColor)
elt_style_variant_setter(mx_element_set_border_bottom_color,
"element-set-border-bottom-color",
put_borderBottomColor)
elt_style_variant_getter(mx_element_border_left_color,
"element-border-left-color",
get_borderLeftColor)
elt_style_variant_setter(mx_element_set_border_left_color,
"element-set-border-left-color",
put_borderLeftColor)
elt_style_variant_getter(mx_element_border_right_color,
"element-border-right-color",
get_borderRightColor)
elt_style_variant_setter(mx_element_set_border_right_color,
"element-set-border-right-color",
put_borderRightColor)
elt_style_variant_getter(mx_element_border_top_width,
"element-border-top-width",
get_borderTopWidth)
elt_style_variant_setter(mx_element_set_border_top_width,
"element-set-border-top-width",
put_borderTopWidth)
elt_style_variant_getter(mx_element_border_bottom_width,
"element-border-bottom-width",
get_borderBottomWidth)
elt_style_variant_setter(mx_element_set_border_bottom_width,
"element-set-border-bottom-width",
put_borderBottomWidth)
elt_style_variant_getter(mx_element_border_left_width,
"element-border-left-width",
get_borderLeftWidth)
elt_style_variant_setter(mx_element_set_border_left_width,
"element-set-border-left-width",
put_borderLeftWidth)
elt_style_variant_getter(mx_element_border_right_width,
"element-border-right-width",
get_borderRightWidth)
elt_style_variant_setter(mx_element_set_border_right_width,
"element-set-border-right-width",
put_borderRightWidth)
elt_style_variant_getter(mx_element_width,
"element-width",
get_width)
elt_style_variant_setter(mx_element_set_width,
"element-set-width",
put_width)
elt_style_variant_getter(mx_element_height,
"element-height",
get_height)
elt_style_variant_setter(mx_element_set_height,
"element-set-height",
put_height)
elt_style_variant_getter(mx_element_top,
"element-top",
get_top)
elt_style_variant_setter(mx_element_set_top,
"element-set-top",
put_top)
elt_style_variant_getter(mx_element_left,
"element-left",
get_left)
elt_style_variant_setter(mx_element_set_left,
"element-set-left",
put_left)
elt_style_variant_getter(mx_element_z_index,
"element-z-index",
get_zIndex)
elt_style_variant_setter(mx_element_set_z_index,
"element-set-z-index",
put_zIndex)