static void set_font_size(HTMLDocument *This, LPCWSTR size) { nsISelection *nsselection; cpp_bool collapsed; nsIDOMHTMLElement *elem; nsIDOMRange *range; LONG range_cnt = 0; nsAString size_str; nsAString val_str; if(!This->doc_node->nsdoc) { WARN("NULL nsdoc\n"); return; } nsselection = get_ns_selection(This); if(!nsselection) return; nsISelection_GetRangeCount(nsselection, &range_cnt); if(range_cnt != 1) { FIXME("range_cnt %d not supprted\n", range_cnt); if(!range_cnt) { nsISelection_Release(nsselection); return; } } create_nselem(This->doc_node, fontW, &elem); nsAString_InitDepend(&size_str, sizeW); nsAString_InitDepend(&val_str, size); nsIDOMHTMLElement_SetAttribute(elem, &size_str, &val_str); nsAString_Finish(&val_str); nsISelection_GetRangeAt(nsselection, 0, &range); nsISelection_GetIsCollapsed(nsselection, &collapsed); nsISelection_RemoveAllRanges(nsselection); nsIDOMRange_SurroundContents(range, (nsIDOMNode*)elem); if(collapsed) { nsISelection_Collapse(nsselection, (nsIDOMNode*)elem, 0); }else { /* Remove all size attributes from the range */ remove_child_attr((nsIDOMElement*)elem, fontW, &size_str); nsISelection_SelectAllChildren(nsselection, (nsIDOMNode*)elem); } nsISelection_Release(nsselection); nsIDOMRange_Release(range); nsIDOMHTMLElement_Release(elem); nsAString_Finish(&size_str); set_dirty(This, VARIANT_TRUE); }
static HRESULT WINAPI HTMLImageElementFactory_create(IHTMLImageElementFactory *iface, VARIANT width, VARIANT height, IHTMLImgElement **img_elem) { HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface); HTMLDocumentNode *doc; IHTMLImgElement *img; HTMLElement *elem; nsIDOMHTMLElement *nselem; LONG l; HRESULT hres; static const PRUnichar imgW[] = {'I','M','G',0}; TRACE("(%p)->(%s %s %p)\n", This, debugstr_variant(&width), debugstr_variant(&height), img_elem); if(!This->window || !This->window->doc) { WARN("NULL doc\n"); return E_UNEXPECTED; } doc = This->window->doc; *img_elem = NULL; hres = create_nselem(doc, imgW, &nselem); if(FAILED(hres)) return hres; hres = HTMLElement_Create(doc, (nsIDOMNode*)nselem, FALSE, &elem); nsIDOMHTMLElement_Release(nselem); if(FAILED(hres)) { ERR("HTMLElement_Create failed\n"); return hres; } hres = IHTMLElement_QueryInterface(&elem->IHTMLElement_iface, &IID_IHTMLImgElement, (void**)&img); IHTMLElement_Release(&elem->IHTMLElement_iface); if(FAILED(hres)) { ERR("IHTMLElement_QueryInterface failed: 0x%08x\n", hres); return hres; } l = var_to_size(&width); if(l) IHTMLImgElement_put_width(img, l); l = var_to_size(&height); if(l) IHTMLImgElement_put_height(img, l); *img_elem = img; return S_OK; }
static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory *iface, VARIANT text, VARIANT value, VARIANT defaultselected, VARIANT selected, IHTMLOptionElement **optelem) { HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface); nsIDOMHTMLElement *nselem; HTMLDOMNode *node; HRESULT hres; static const PRUnichar optionW[] = {'O','P','T','I','O','N',0}; TRACE("(%p)->(%s %s %s %s %p)\n", This, debugstr_variant(&text), debugstr_variant(&value), debugstr_variant(&defaultselected), debugstr_variant(&selected), optelem); if(!This->window || !This->window->doc) { WARN("NULL doc\n"); return E_UNEXPECTED; } *optelem = NULL; hres = create_nselem(This->window->doc, optionW, &nselem); if(FAILED(hres)) return hres; hres = get_node(This->window->doc, (nsIDOMNode*)nselem, TRUE, &node); nsIDOMHTMLElement_Release(nselem); if(FAILED(hres)) return hres; hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLOptionElement, (void**)optelem); node_release(node); if(V_VT(&text) == VT_BSTR) IHTMLOptionElement_put_text(*optelem, V_BSTR(&text)); else if(V_VT(&text) != VT_EMPTY) FIXME("Unsupported text %s\n", debugstr_variant(&text)); if(V_VT(&value) == VT_BSTR) IHTMLOptionElement_put_value(*optelem, V_BSTR(&value)); else if(V_VT(&value) != VT_EMPTY) FIXME("Unsupported value %s\n", debugstr_variant(&value)); if(V_VT(&defaultselected) != VT_EMPTY) FIXME("Unsupported defaultselected %s\n", debugstr_variant(&defaultselected)); if(V_VT(&selected) != VT_EMPTY) FIXME("Unsupported selected %s\n", debugstr_variant(&selected)); return S_OK; }