1155 lines
30 KiB
C++
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)
|
|
|