📄 domcoreclasses.cpp
字号:
return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::setAttributeNode( /* [in] */ IDOMAttr* /*newAttr*/, /* [retval][out] */ IDOMAttr** /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::removeAttributeNode( /* [in] */ IDOMAttr* /*oldAttr*/, /* [retval][out] */ IDOMAttr** /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::getElementsByTagName( /* [in] */ BSTR /*name*/, /* [retval][out] */ IDOMNodeList** /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::getAttributeNS( /* [in] */ BSTR /*namespaceURI*/, /* [in] */ BSTR /*localName*/, /* [retval][out] */ BSTR* /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::setAttributeNS( /* [in] */ BSTR /*namespaceURI*/, /* [in] */ BSTR /*qualifiedName*/, /* [in] */ BSTR /*value*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::removeAttributeNS( /* [in] */ BSTR /*namespaceURI*/, /* [in] */ BSTR /*localName*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::getAttributeNodeNS( /* [in] */ BSTR /*namespaceURI*/, /* [in] */ BSTR /*localName*/, /* [retval][out] */ IDOMAttr** /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::setAttributeNodeNS( /* [in] */ IDOMAttr* /*newAttr*/, /* [retval][out] */ IDOMAttr** /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::getElementsByTagNameNS( /* [in] */ BSTR /*namespaceURI*/, /* [in] */ BSTR /*localName*/, /* [retval][out] */ IDOMNodeList** /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::hasAttribute( /* [in] */ BSTR /*name*/, /* [retval][out] */ BOOL* /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;} HRESULT STDMETHODCALLTYPE DOMElement::hasAttributeNS( /* [in] */ BSTR /*namespaceURI*/, /* [in] */ BSTR /*localName*/, /* [retval][out] */ BOOL* /*result*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMElement::focus( void){ if (!m_element) return E_FAIL; m_element->focus(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::blur( void){ if (!m_element) return E_FAIL; m_element->blur(); return S_OK;}// IDOMElementPrivate ---------------------------------------------------------HRESULT DOMElement::coreElement(void **element){ if (!m_element) return E_FAIL; *element = (void*) m_element; return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::isEqual( /* [in] */ IDOMElement *other, /* [retval][out] */ BOOL *result){ *result = FALSE; if (!other || !result) return E_POINTER; IDOMElementPrivate* otherPriv; HRESULT hr = other->QueryInterface(IID_IDOMElementPrivate, (void**) &otherPriv); if (FAILED(hr)) return hr; void* otherCoreEle; hr = otherPriv->coreElement(&otherCoreEle); otherPriv->Release(); if (FAILED(hr)) return hr; *result = (otherCoreEle == (void*)m_element) ? TRUE : FALSE; return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::isFocused( /* [retval][out] */ BOOL *result){ if (!m_element) return E_FAIL; if (m_element->document()->focusedNode() == m_element) *result = TRUE; else *result = FALSE; return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::innerText( /* [retval][out] */ BSTR* result){ if (!result) { ASSERT_NOT_REACHED(); return E_POINTER; } if (!m_element) { ASSERT_NOT_REACHED(); return E_FAIL; } *result = BString(m_element->innerText()).release(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::font(WebFontDescription* webFontDescription){ if (!webFontDescription) { ASSERT_NOT_REACHED(); return E_POINTER; } ASSERT(m_element); WebCore::RenderObject* renderer = m_element->renderer(); if (!renderer) return E_FAIL; FontDescription fontDescription = renderer->style()->font().fontDescription(); AtomicString family = fontDescription.family().family(); webFontDescription->family = family.characters(); webFontDescription->familyLength = family.length(); webFontDescription->size = fontDescription.computedSize(); webFontDescription->bold = fontDescription.weight() >= WebCore::FontWeight600; webFontDescription->italic = fontDescription.italic(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::renderedImage(HBITMAP* image){ if (!image) { ASSERT_NOT_REACHED(); return E_POINTER; } *image = 0; ASSERT(m_element); Frame* frame = m_element->document()->frame(); if (!frame) return E_FAIL; *image = frame->nodeImage(m_element); if (!*image) return E_FAIL; return S_OK;}// IDOMElementCSSInlineStyle --------------------------------------------------HRESULT STDMETHODCALLTYPE DOMElement::style( /* [retval][out] */ IDOMCSSStyleDeclaration** result){ if (!result) return E_POINTER; if (!m_element) return E_FAIL; WebCore::CSSStyleDeclaration* style = m_element->style(); if (!style) return E_FAIL; *result = DOMCSSStyleDeclaration::createInstance(style); return *result ? S_OK : E_FAIL;}// IDOMElementExtensions ------------------------------------------------------HRESULT STDMETHODCALLTYPE DOMElement::offsetLeft( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->offsetLeft(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::offsetTop( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->offsetTop(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::offsetWidth( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->offsetWidth(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::offsetHeight( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->offsetHeight(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::offsetParent( /* [retval][out] */ IDOMElement** /*result*/){ // FIXME ASSERT_NOT_REACHED(); return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMElement::clientWidth( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->clientWidth(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::clientHeight( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->clientHeight(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::scrollLeft( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->scrollLeft(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::setScrollLeft( /* [in] */ int /*newScrollLeft*/){ // FIXME ASSERT_NOT_REACHED(); return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMElement::scrollTop( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->scrollTop(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::setScrollTop( /* [in] */ int /*newScrollTop*/){ // FIXME ASSERT_NOT_REACHED(); return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE DOMElement::scrollWidth( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->scrollWidth(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::scrollHeight( /* [retval][out] */ int* result){ if (!m_element) return E_FAIL; *result = m_element->scrollHeight(); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::scrollIntoView( /* [in] */ BOOL alignWithTop){ if (!m_element) return E_FAIL; m_element->scrollIntoView(!!alignWithTop); return S_OK;}HRESULT STDMETHODCALLTYPE DOMElement::scrollIntoViewIfNeeded( /* [in] */ BOOL centerIfNeeded){ if (!m_element) return E_FAIL; m_element->scrollIntoViewIfNeeded(!!centerIfNeeded); return S_OK;}// DOMElement -----------------------------------------------------------------DOMElement::DOMElement(WebCore::Element* e): DOMNode(e), m_element(e){}DOMElement::~DOMElement(){}IDOMElement* DOMElement::createInstance(WebCore::Element* e){ if (!e) return 0; HRESULT hr; IDOMElement* domElement = 0; if (e->hasTagName(formTag)) { DOMHTMLFormElement* newElement = new DOMHTMLFormElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->hasTagName(selectTag)) { DOMHTMLSelectElement* newElement = new DOMHTMLSelectElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->hasTagName(optionTag)) { DOMHTMLOptionElement* newElement = new DOMHTMLOptionElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->hasTagName(inputTag)) { DOMHTMLInputElement* newElement = new DOMHTMLInputElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->hasTagName(textareaTag)) { DOMHTMLTextAreaElement* newElement = new DOMHTMLTextAreaElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else if (e->isHTMLElement()) { DOMHTMLElement* newElement = new DOMHTMLElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } else { DOMElement* newElement = new DOMElement(e); hr = newElement->QueryInterface(IID_IDOMElement, (void**)&domElement); } if (FAILED(hr)) return 0; return domElement;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -