mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Split up macro invocation
This commit is contained in:
parent
738ee342b3
commit
0c743483ea
3 changed files with 63 additions and 40 deletions
|
@ -435,6 +435,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_uint_attribute(&self, name: &str) -> u32 {
|
fn get_uint_attribute(&self, name: &str) -> u32 {
|
||||||
|
assert!(name == name.to_ascii_lower().as_slice());
|
||||||
let attribute = self.get_attribute(Null, name).root();
|
let attribute = self.get_attribute(Null, name).root();
|
||||||
match attribute {
|
match attribute {
|
||||||
Some(attribute) => {
|
Some(attribute) => {
|
||||||
|
|
|
@ -16,7 +16,6 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
|
||||||
use dom::virtualmethods::VirtualMethods;
|
use dom::virtualmethods::VirtualMethods;
|
||||||
|
|
||||||
use servo_net::image_cache_task;
|
use servo_net::image_cache_task;
|
||||||
use servo_util::atom::Atom;
|
use servo_util::atom::Atom;
|
||||||
use servo_util::geometry::to_px;
|
use servo_util::geometry::to_px;
|
||||||
|
@ -96,67 +95,93 @@ impl LayoutHTMLImageElementHelpers for JS<HTMLImageElement> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> HTMLImageElementMethods for JSRef<'a, HTMLImageElement> {
|
impl<'a> HTMLImageElementMethods for JSRef<'a, HTMLImageElement> {
|
||||||
|
make_getter!(Alt)
|
||||||
make_getters!(Alt, Src, UseMap, Name, Align, LongDesc, Border)
|
|
||||||
make_bool_getters!(IsMap)
|
|
||||||
make_uint_getters!(Width, Height, Hspace, Vspace)
|
|
||||||
|
|
||||||
fn SetAlt(&self, alt: DOMString) {
|
fn SetAlt(&self, alt: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("alt", alt)
|
element.set_string_attribute("alt", alt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_getter!(Src)
|
||||||
|
|
||||||
fn SetSrc(&self, src: DOMString) {
|
fn SetSrc(&self, src: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_url_attribute("src", src)
|
element.set_url_attribute("src", src)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_getter!(UseMap)
|
||||||
|
|
||||||
fn SetUseMap(&self, use_map: DOMString) {
|
fn SetUseMap(&self, use_map: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("useMap", use_map)
|
element.set_string_attribute("useMap", use_map)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_bool_getter!(IsMap)
|
||||||
|
|
||||||
fn SetIsMap(&self, is_map: bool) {
|
fn SetIsMap(&self, is_map: bool) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("isMap", is_map.to_string())
|
element.set_string_attribute("isMap", is_map.to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn Width(&self) -> u32 {
|
||||||
|
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
||||||
|
let rect = node.get_bounding_content_box();
|
||||||
|
to_px(rect.size.width) as u32
|
||||||
|
}
|
||||||
|
|
||||||
fn SetWidth(&self, width: u32) {
|
fn SetWidth(&self, width: u32) {
|
||||||
let elem: &JSRef<Element> = ElementCast::from_ref(self);
|
let elem: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
elem.set_uint_attribute("width", width)
|
elem.set_uint_attribute("width", width)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn Height(&self) -> u32 {
|
||||||
|
let node: &JSRef<Node> = NodeCast::from_ref(self);
|
||||||
|
let rect = node.get_bounding_content_box();
|
||||||
|
to_px(rect.size.height) as u32
|
||||||
|
}
|
||||||
|
|
||||||
fn SetHeight(&self, height: u32) {
|
fn SetHeight(&self, height: u32) {
|
||||||
let elem: &JSRef<Element> = ElementCast::from_ref(self);
|
let elem: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
elem.set_uint_attribute("height", height)
|
elem.set_uint_attribute("height", height)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_getter!(Name)
|
||||||
|
|
||||||
fn SetName(&self, name: DOMString) {
|
fn SetName(&self, name: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("name", name)
|
element.set_string_attribute("name", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_getter!(Align)
|
||||||
|
|
||||||
fn SetAlign(&self, align: DOMString) {
|
fn SetAlign(&self, align: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("align", align)
|
element.set_string_attribute("align", align)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_uint_getter!(Hspace)
|
||||||
|
|
||||||
fn SetHspace(&self, hspace: u32) {
|
fn SetHspace(&self, hspace: u32) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_uint_attribute("hspace", hspace)
|
element.set_uint_attribute("hspace", hspace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_uint_getter!(Vspace)
|
||||||
|
|
||||||
fn SetVspace(&self, vspace: u32) {
|
fn SetVspace(&self, vspace: u32) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_uint_attribute("vspace", vspace)
|
element.set_uint_attribute("vspace", vspace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_getter!(LongDesc)
|
||||||
|
|
||||||
fn SetLongDesc(&self, longdesc: DOMString) {
|
fn SetLongDesc(&self, longdesc: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("longdesc", longdesc)
|
element.set_string_attribute("longdesc", longdesc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_getter!(Border)
|
||||||
|
|
||||||
fn SetBorder(&self, border: DOMString) {
|
fn SetBorder(&self, border: DOMString) {
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.set_string_attribute("border", border)
|
element.set_string_attribute("border", border)
|
||||||
|
@ -169,9 +194,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLImageElement> {
|
||||||
Some(htmlelement as &VirtualMethods)
|
Some(htmlelement as &VirtualMethods)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn after_set_attr(&self, name: DOMString, value: DOMString) {
|
fn after_set_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
|
Some(ref s) => s.after_set_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,9 +207,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLImageElement> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
|
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
|
||||||
match self.super_type() {
|
match self.super_type() {
|
||||||
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
|
Some(ref s) => s.before_remove_attr(name, value.clone()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,43 +5,40 @@
|
||||||
#![macro_escape]
|
#![macro_escape]
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! make_getters(
|
macro_rules! make_getter(
|
||||||
( $($attr:ident),+ ) => (
|
( $attr:ident ) => (
|
||||||
$(
|
fn $attr(&self) -> DOMString {
|
||||||
fn $attr(&self) -> DOMString {
|
use dom::element::{Element, AttributeHandlers};
|
||||||
use dom::element::{Element, AttributeHandlers};
|
use dom::bindings::codegen::InheritTypes::ElementCast;
|
||||||
use dom::bindings::codegen::InheritTypes::ElementCast;
|
use std::ascii::StrAsciiExt;
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.get_string_attribute(stringify!($attr))
|
element.get_string_attribute(stringify!($attr).to_ascii_lower().as_slice())
|
||||||
}
|
}
|
||||||
)+
|
|
||||||
);
|
);
|
||||||
)
|
)
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! make_bool_getters(
|
macro_rules! make_bool_getter(
|
||||||
( $($attr:ident),+ ) => (
|
( $attr:ident ) => (
|
||||||
$(
|
fn $attr(&self) -> bool {
|
||||||
fn $attr(&self) -> bool {
|
use dom::element::{Element, AttributeHandlers};
|
||||||
use dom::element::{Element, AttributeHandlers};
|
use dom::bindings::codegen::InheritTypes::ElementCast;
|
||||||
use dom::bindings::codegen::InheritTypes::ElementCast;
|
use std::ascii::StrAsciiExt;
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.has_attribute(stringify!($attr))
|
element.has_attribute(stringify!($attr).to_ascii_lower().as_slice())
|
||||||
}
|
}
|
||||||
)+
|
|
||||||
);
|
);
|
||||||
)
|
)
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! make_uint_getters(
|
macro_rules! make_uint_getter(
|
||||||
( $($attr:ident),+ ) => (
|
( $attr:ident ) => (
|
||||||
$(
|
fn $attr(&self) -> u32 {
|
||||||
fn $attr(&self) -> u32 {
|
use dom::element::{Element, AttributeHandlers};
|
||||||
use dom::element::{Element, AttributeHandlers};
|
use dom::bindings::codegen::InheritTypes::ElementCast;
|
||||||
use dom::bindings::codegen::InheritTypes::ElementCast;
|
use std::ascii::StrAsciiExt;
|
||||||
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
let element: &JSRef<Element> = ElementCast::from_ref(self);
|
||||||
element.get_uint_attribute(stringify!($attr))
|
element.get_uint_attribute(stringify!($attr).to_ascii_lower().as_slice())
|
||||||
}
|
}
|
||||||
)+
|
|
||||||
);
|
);
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue