From 8a007476ec0e36df0c3cec8318b9fce183447927 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 24 May 2012 19:00:00 -0700 Subject: [PATCH] Stub style application; add an attribute accessor method --- src/servo/dom/base.rs | 13 ++++++++++++- src/servo/layout/base.rs | 12 +++++++++++- src/servo/layout/box_builder.rs | 9 +++++---- src/servo/layout/layout.rs | 3 +++ src/servo/servo.rc | 3 +++ 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/servo/dom/base.rs b/src/servo/dom/base.rs index f1a1ace01f6..1228b3edbdf 100644 --- a/src/servo/dom/base.rs +++ b/src/servo/dom/base.rs @@ -2,7 +2,7 @@ import dom::rcu::{writer_methods}; import gfx::geom::{au, size}; import layout::base::layout_data; import util::tree; -import dvec::dvec; +import dvec::{dvec, extensions}; enum node_data = { tree: tree::fields, @@ -24,6 +24,17 @@ class element { self.subclass = subclass; self.attrs = dvec(); } + + fn get_attr(attr_name: str) -> option { + let mut i = 0u; + while i < self.attrs.len() { + if attr_name == self.attrs[i].name { + ret some(self.attrs[i].value); + } + i += 1u; + } + ret none; + } } class attr { diff --git a/src/servo/layout/base.rs b/src/servo/layout/base.rs index 0dc3474ca88..f51a2249384 100644 --- a/src/servo/layout/base.rs +++ b/src/servo/layout/base.rs @@ -5,6 +5,7 @@ import dom::rcu; import dom::rcu::reader_methods; import gfx::geom; import gfx::geom::{size, rect, point, au, zero_size_au}; +import image::base::image; import /*layout::*/block::block_layout_methods; import /*layout::*/inline::inline_layout_methods; import /*layout::*/style::style::*; @@ -18,11 +19,20 @@ enum box_kind { bk_text(@text_box) } +class appearance { + let mut background_image: option<@image>; + + new() { + self.background_image = none; + } +} + enum box = { tree: tree::fields<@box>, node: node, mut bounds: geom::rect, - kind: box_kind + kind: box_kind, + appearance: appearance }; enum layout_data = { diff --git a/src/servo/layout/box_builder.rs b/src/servo/layout/box_builder.rs index b9178d80eb3..e4bfa5dc2a9 100644 --- a/src/servo/layout/box_builder.rs +++ b/src/servo/layout/box_builder.rs @@ -3,9 +3,9 @@ import dom::base::{element, es_div, es_img, nk_element, nk_text, node}; import dom::rcu::reader_methods; import gfx::geom; -import /*layout::*/base::{bk_block, bk_inline, bk_intrinsic, bk_text, box}; -import /*layout::*/base::{box_kind, btree, node_methods, ntree, rd_tree_ops}; -import /*layout::*/base::wr_tree_ops; +import /*layout::*/base::{appearance, bk_block, bk_inline, bk_intrinsic}; +import /*layout::*/base::{bk_text, box, box_kind, btree, node_methods, ntree}; +import /*layout::*/base::{rd_tree_ops, wr_tree_ops}; import /*layout::*/style::style::{di_block, di_inline, style_methods}; import /*layout::*/text::text_box; import util::tree; @@ -29,7 +29,8 @@ fn new_box(n: node, kind: box_kind) -> @box { @box({tree: tree::empty(), node: n, mut bounds: geom::zero_rect_au(), - kind: kind }) + kind: kind, + appearance: appearance() }) } fn create_context(parent_node: node, parent_box: @box) -> ctxt { diff --git a/src/servo/layout/layout.rs b/src/servo/layout/layout.rs index 36d2dbb3d09..c3215183607 100644 --- a/src/servo/layout/layout.rs +++ b/src/servo/layout/layout.rs @@ -12,6 +12,7 @@ import gfx::renderer; import dom::base::node; import dom::rcu::scope; import /*layout::*/base::*; +import /*layout::*/style::apply::apply_style_methods; import /*layout::*/style::style::style_methods; import box_builder::box_builder_methods; import dl = display_list; @@ -37,7 +38,9 @@ fn layout(to_renderer: chan) -> chan { let this_box = node.construct_boxes(); this_box.dump(); + this_box.apply_style_for_subtree(); this_box.reflow(geom::px_to_au(800)); + let dlist = build_display_list(this_box); to_renderer.send(renderer::render(dlist)); } diff --git a/src/servo/servo.rc b/src/servo/servo.rc index cb906505790..ddb3764d689 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -11,6 +11,7 @@ use sdl; use azure; use spidermonkey (name = "js"); use harfbuzz; +use stb_image; mod dom { mod base; @@ -25,6 +26,7 @@ mod gfx { } mod image { + mod base; mod encode { mod tga; } @@ -32,6 +34,7 @@ mod image { mod layout { mod style { + mod apply; mod style; }