Stub style application; add an attribute accessor method

This commit is contained in:
Patrick Walton 2012-05-24 19:00:00 -07:00
parent e15c779b43
commit 8a007476ec
5 changed files with 34 additions and 6 deletions

View file

@ -2,7 +2,7 @@ import dom::rcu::{writer_methods};
import gfx::geom::{au, size}; import gfx::geom::{au, size};
import layout::base::layout_data; import layout::base::layout_data;
import util::tree; import util::tree;
import dvec::dvec; import dvec::{dvec, extensions};
enum node_data = { enum node_data = {
tree: tree::fields<node>, tree: tree::fields<node>,
@ -24,6 +24,17 @@ class element {
self.subclass = subclass; self.subclass = subclass;
self.attrs = dvec(); self.attrs = dvec();
} }
fn get_attr(attr_name: str) -> option<str> {
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 { class attr {

View file

@ -5,6 +5,7 @@ import dom::rcu;
import dom::rcu::reader_methods; import dom::rcu::reader_methods;
import gfx::geom; import gfx::geom;
import gfx::geom::{size, rect, point, au, zero_size_au}; import gfx::geom::{size, rect, point, au, zero_size_au};
import image::base::image;
import /*layout::*/block::block_layout_methods; import /*layout::*/block::block_layout_methods;
import /*layout::*/inline::inline_layout_methods; import /*layout::*/inline::inline_layout_methods;
import /*layout::*/style::style::*; import /*layout::*/style::style::*;
@ -18,11 +19,20 @@ enum box_kind {
bk_text(@text_box) bk_text(@text_box)
} }
class appearance {
let mut background_image: option<@image>;
new() {
self.background_image = none;
}
}
enum box = { enum box = {
tree: tree::fields<@box>, tree: tree::fields<@box>,
node: node, node: node,
mut bounds: geom::rect<au>, mut bounds: geom::rect<au>,
kind: box_kind kind: box_kind,
appearance: appearance
}; };
enum layout_data = { enum layout_data = {

View file

@ -3,9 +3,9 @@
import dom::base::{element, es_div, es_img, nk_element, nk_text, node}; import dom::base::{element, es_div, es_img, nk_element, nk_text, node};
import dom::rcu::reader_methods; import dom::rcu::reader_methods;
import gfx::geom; import gfx::geom;
import /*layout::*/base::{bk_block, bk_inline, bk_intrinsic, bk_text, box}; import /*layout::*/base::{appearance, bk_block, bk_inline, bk_intrinsic};
import /*layout::*/base::{box_kind, btree, node_methods, ntree, rd_tree_ops}; import /*layout::*/base::{bk_text, box, box_kind, btree, node_methods, ntree};
import /*layout::*/base::wr_tree_ops; import /*layout::*/base::{rd_tree_ops, wr_tree_ops};
import /*layout::*/style::style::{di_block, di_inline, style_methods}; import /*layout::*/style::style::{di_block, di_inline, style_methods};
import /*layout::*/text::text_box; import /*layout::*/text::text_box;
import util::tree; import util::tree;
@ -29,7 +29,8 @@ fn new_box(n: node, kind: box_kind) -> @box {
@box({tree: tree::empty(), @box({tree: tree::empty(),
node: n, node: n,
mut bounds: geom::zero_rect_au(), mut bounds: geom::zero_rect_au(),
kind: kind }) kind: kind,
appearance: appearance() })
} }
fn create_context(parent_node: node, parent_box: @box) -> ctxt { fn create_context(parent_node: node, parent_box: @box) -> ctxt {

View file

@ -12,6 +12,7 @@ import gfx::renderer;
import dom::base::node; import dom::base::node;
import dom::rcu::scope; import dom::rcu::scope;
import /*layout::*/base::*; import /*layout::*/base::*;
import /*layout::*/style::apply::apply_style_methods;
import /*layout::*/style::style::style_methods; import /*layout::*/style::style::style_methods;
import box_builder::box_builder_methods; import box_builder::box_builder_methods;
import dl = display_list; import dl = display_list;
@ -37,7 +38,9 @@ fn layout(to_renderer: chan<renderer::msg>) -> chan<msg> {
let this_box = node.construct_boxes(); let this_box = node.construct_boxes();
this_box.dump(); this_box.dump();
this_box.apply_style_for_subtree();
this_box.reflow(geom::px_to_au(800)); this_box.reflow(geom::px_to_au(800));
let dlist = build_display_list(this_box); let dlist = build_display_list(this_box);
to_renderer.send(renderer::render(dlist)); to_renderer.send(renderer::render(dlist));
} }

View file

@ -11,6 +11,7 @@ use sdl;
use azure; use azure;
use spidermonkey (name = "js"); use spidermonkey (name = "js");
use harfbuzz; use harfbuzz;
use stb_image;
mod dom { mod dom {
mod base; mod base;
@ -25,6 +26,7 @@ mod gfx {
} }
mod image { mod image {
mod base;
mod encode { mod encode {
mod tga; mod tga;
} }
@ -32,6 +34,7 @@ mod image {
mod layout { mod layout {
mod style { mod style {
mod apply;
mod style; mod style;
} }