Skip to content

Commit 993f411

Browse files
committed
Split up macro invocation
1 parent 738ee34 commit 993f411

File tree

3 files changed

+59
-36
lines changed

3 files changed

+59
-36
lines changed

src/components/script/dom/element.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
435435
}
436436

437437
fn get_uint_attribute(&self, name: &str) -> u32 {
438+
assert!(name == name.to_ascii_lower().as_slice());
438439
let attribute = self.get_attribute(Null, name).root();
439440
match attribute {
440441
Some(attribute) => {

src/components/script/dom/htmlimageelement.rs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
1616
use dom::htmlelement::HTMLElement;
1717
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
1818
use dom::virtualmethods::VirtualMethods;
19-
2019
use servo_net::image_cache_task;
2120
use servo_util::atom::Atom;
2221
use servo_util::geometry::to_px;
@@ -96,67 +95,93 @@ impl LayoutHTMLImageElementHelpers for JS<HTMLImageElement> {
9695
}
9796

9897
impl<'a> HTMLImageElementMethods for JSRef<'a, HTMLImageElement> {
99-
100-
make_getters!(Alt, Src, UseMap, Name, Align, LongDesc, Border)
101-
make_bool_getters!(IsMap)
102-
make_uint_getters!(Width, Height, Hspace, Vspace)
98+
make_getter!(Alt)
10399

104100
fn SetAlt(&self, alt: DOMString) {
105101
let element: &JSRef<Element> = ElementCast::from_ref(self);
106102
element.set_string_attribute("alt", alt)
107103
}
108104

105+
make_getter!(Src)
106+
109107
fn SetSrc(&self, src: DOMString) {
110108
let element: &JSRef<Element> = ElementCast::from_ref(self);
111109
element.set_url_attribute("src", src)
112110
}
113111

112+
make_getter!(UseMap)
113+
114114
fn SetUseMap(&self, use_map: DOMString) {
115115
let element: &JSRef<Element> = ElementCast::from_ref(self);
116116
element.set_string_attribute("useMap", use_map)
117117
}
118118

119+
make_bool_getter!(IsMap)
120+
119121
fn SetIsMap(&self, is_map: bool) {
120122
let element: &JSRef<Element> = ElementCast::from_ref(self);
121123
element.set_string_attribute("isMap", is_map.to_string())
122124
}
123125

124-
126+
fn Width(&self) -> u32 {
127+
let node: &JSRef<Node> = NodeCast::from_ref(self);
128+
let rect = node.get_bounding_content_box();
129+
to_px(rect.size.width) as u32
130+
}
131+
125132
fn SetWidth(&self, width: u32) {
126133
let elem: &JSRef<Element> = ElementCast::from_ref(self);
127134
elem.set_uint_attribute("width", width)
128135
}
129136

137+
fn Height(&self) -> u32 {
138+
let node: &JSRef<Node> = NodeCast::from_ref(self);
139+
let rect = node.get_bounding_content_box();
140+
to_px(rect.size.height) as u32
141+
}
142+
130143
fn SetHeight(&self, height: u32) {
131144
let elem: &JSRef<Element> = ElementCast::from_ref(self);
132145
elem.set_uint_attribute("height", height)
133146
}
134147

148+
make_getter!(Name)
149+
135150
fn SetName(&self, name: DOMString) {
136151
let element: &JSRef<Element> = ElementCast::from_ref(self);
137152
element.set_string_attribute("name", name)
138153
}
139154

155+
make_getter!(Align)
156+
140157
fn SetAlign(&self, align: DOMString) {
141158
let element: &JSRef<Element> = ElementCast::from_ref(self);
142159
element.set_string_attribute("align", align)
143160
}
144161

162+
make_uint_getter!(Hspace)
163+
145164
fn SetHspace(&self, hspace: u32) {
146165
let element: &JSRef<Element> = ElementCast::from_ref(self);
147166
element.set_uint_attribute("hspace", hspace)
148167
}
149168

169+
make_uint_getter!(Vspace)
170+
150171
fn SetVspace(&self, vspace: u32) {
151172
let element: &JSRef<Element> = ElementCast::from_ref(self);
152173
element.set_uint_attribute("vspace", vspace)
153174
}
154175

176+
make_getter!(LongDesc)
177+
155178
fn SetLongDesc(&self, longdesc: DOMString) {
156179
let element: &JSRef<Element> = ElementCast::from_ref(self);
157180
element.set_string_attribute("longdesc", longdesc)
158181
}
159182

183+
make_getter!(Border)
184+
160185
fn SetBorder(&self, border: DOMString) {
161186
let element: &JSRef<Element> = ElementCast::from_ref(self);
162187
element.set_string_attribute("border", border)

src/components/script/dom/macros.rs

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,40 @@
55
#![macro_escape]
66

77
#[macro_export]
8-
macro_rules! make_getters(
9-
( $($attr:ident),+ ) => (
10-
$(
11-
fn $attr(&self) -> DOMString {
12-
use dom::element::{Element, AttributeHandlers};
13-
use dom::bindings::codegen::InheritTypes::ElementCast;
14-
let element: &JSRef<Element> = ElementCast::from_ref(self);
15-
element.get_string_attribute(stringify!($attr))
16-
}
17-
)+
8+
macro_rules! make_getter(
9+
( $attr:ident ) => (
10+
fn $attr(&self) -> DOMString {
11+
use dom::element::{Element, AttributeHandlers};
12+
use dom::bindings::codegen::InheritTypes::ElementCast;
13+
use std::ascii::StrAsciiExt;
14+
let element: &JSRef<Element> = ElementCast::from_ref(self);
15+
element.get_string_attribute(stringify!($attr).to_ascii_lower().as_slice())
16+
}
1817
);
1918
)
2019

2120
#[macro_export]
22-
macro_rules! make_bool_getters(
23-
( $($attr:ident),+ ) => (
24-
$(
25-
fn $attr(&self) -> bool {
26-
use dom::element::{Element, AttributeHandlers};
27-
use dom::bindings::codegen::InheritTypes::ElementCast;
28-
let element: &JSRef<Element> = ElementCast::from_ref(self);
29-
element.has_attribute(stringify!($attr))
30-
}
31-
)+
21+
macro_rules! make_bool_getter(
22+
( $attr:ident ) => (
23+
fn $attr(&self) -> bool {
24+
use dom::element::{Element, AttributeHandlers};
25+
use dom::bindings::codegen::InheritTypes::ElementCast;
26+
use std::ascii::StrAsciiExt;
27+
let element: &JSRef<Element> = ElementCast::from_ref(self);
28+
element.has_attribute(stringify!($attr).to_ascii_lower().as_slice())
29+
}
3230
);
3331
)
3432

3533
#[macro_export]
36-
macro_rules! make_uint_getters(
37-
( $($attr:ident),+ ) => (
38-
$(
39-
fn $attr(&self) -> u32 {
40-
use dom::element::{Element, AttributeHandlers};
41-
use dom::bindings::codegen::InheritTypes::ElementCast;
42-
let element: &JSRef<Element> = ElementCast::from_ref(self);
43-
element.get_uint_attribute(stringify!($attr))
44-
}
45-
)+
34+
macro_rules! make_uint_getter(
35+
( $attr:ident ) => (
36+
fn $attr(&self) -> u32 {
37+
use dom::element::{Element, AttributeHandlers};
38+
use dom::bindings::codegen::InheritTypes::ElementCast;
39+
use std::ascii::StrAsciiExt;
40+
let element: &JSRef<Element> = ElementCast::from_ref(self);
41+
element.get_uint_attribute(stringify!($attr).to_ascii_lower().as_slice())
42+
}
4643
);
4744
)

0 commit comments

Comments
 (0)