diff options
Diffstat (limited to 'components/script/dom/svgelement.rs')
-rw-r--r-- | components/script/dom/svgelement.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/components/script/dom/svgelement.rs b/components/script/dom/svgelement.rs new file mode 100644 index 00000000000..95fd42c40b6 --- /dev/null +++ b/components/script/dom/svgelement.rs @@ -0,0 +1,48 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use dom::bindings::codegen::Bindings::SVGElementBinding; +use dom::bindings::inheritance::Castable; +use dom::bindings::js::Root; +use dom::bindings::str::DOMString; +use dom::document::Document; +use dom::element::Element; +use dom::node::Node; +use dom::virtualmethods::VirtualMethods; +use string_cache::Atom; +use style::element_state::ElementState; + +#[dom_struct] +pub struct SVGElement { + element: Element, +} + +impl SVGElement { + pub fn new_inherited(tag_name: Atom, prefix: Option<DOMString>, + document: &Document) -> SVGElement { + SVGElement::new_inherited_with_state(ElementState::empty(), tag_name, prefix, document) + } + + pub fn new_inherited_with_state(state: ElementState, tag_name: Atom, + prefix: Option<DOMString>, document: &Document) + -> SVGElement { + SVGElement { + element: + Element::new_inherited_with_state(state, tag_name, ns!(svg), prefix, document), + } + } + + #[allow(unrooted_must_root)] + pub fn new(local_name: Atom, prefix: Option<DOMString>, document: &Document) -> Root<SVGElement> { + Node::reflect_node(box SVGElement::new_inherited(local_name, prefix, document), + document, + SVGElementBinding::Wrap) + } +} + +impl VirtualMethods for SVGElement { + fn super_type(&self) -> Option<&VirtualMethods> { + Some(self.upcast::<Element>() as &VirtualMethods) + } +} |