diff --git a/src/servo/image/base.rs b/src/servo/image/base.rs new file mode 100644 index 00000000000..9de3c84d5e8 --- /dev/null +++ b/src/servo/image/base.rs @@ -0,0 +1,4 @@ +export image; +export load; +import stb_image::image::{image, load}; + diff --git a/src/servo/layout/style/apply.rs b/src/servo/layout/style/apply.rs new file mode 100644 index 00000000000..41ea6ef691d --- /dev/null +++ b/src/servo/layout/style/apply.rs @@ -0,0 +1,48 @@ +#[doc="Applies style to boxes."] +import dom::base::{es_img, nk_element, node}; +import dom::rcu::reader_methods; +import image::base::load; +import /*layout::*/base::*; + +impl apply_style_methods for @box { + fn apply_style_for_subtree() { + self.apply_style(); + for btree.each_child(self) { + |child| + child.apply_style_for_subtree(); + } + } + + #[doc="Applies CSS style."] + fn apply_style() { + // Right now, we only handle images. + self.node.rd { + |node| + alt node.kind { + ~nk_element(element) { + alt element.subclass { + ~es_img(*) { + alt element.get_attr("src") { + some(url) { + // FIXME: Some sort of BASE HREF support! + // FIXME: Parse URLs! + // FIXME: Don't load synchronously! + #debug("loading image from %s", url); + let image = @load(url); + self.appearance.background_image = + some(image); + } + none { + /* Ignore. */ + } + } + } + _ { /* Ignore. */ } + } + } + _ { /* Ignore. */ } + } + } + } +} +