mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Move the box builder to a separate module
This commit is contained in:
parent
6340a4a0bd
commit
624d77b2ff
4 changed files with 45 additions and 27 deletions
|
@ -50,28 +50,6 @@ impl of tree::wr_tree_ops<@box> for btree {
|
|||
}
|
||||
}
|
||||
|
||||
fn new_box(n: node) -> @box {
|
||||
@box({tree: tree::empty(),
|
||||
node: n,
|
||||
mut display: di_block,
|
||||
mut bounds: geom::zero_rect_au()})
|
||||
}
|
||||
|
||||
fn linked_box(n: node) -> @box {
|
||||
let b = new_box(n);
|
||||
n.set_aux(b);
|
||||
ret b;
|
||||
}
|
||||
|
||||
fn linked_subtree(p: node) -> @box {
|
||||
let p_box = linked_box(p);
|
||||
for ntree.each_child(p) { |c|
|
||||
let c_box = linked_subtree(c);
|
||||
btree.add_child(p_box, c_box);
|
||||
}
|
||||
ret p_box;
|
||||
}
|
||||
|
||||
impl block_layout_methods for @box {
|
||||
#[doc="The main reflow routine."]
|
||||
fn reflow(available_width: au) {
|
||||
|
|
39
src/servo/layout/box_builder.rs
Normal file
39
src/servo/layout/box_builder.rs
Normal file
|
@ -0,0 +1,39 @@
|
|||
#[doc="Creates CSS boxes from a DOM."]
|
||||
|
||||
import dom::base::node;
|
||||
import dom::rcu::reader_methods;
|
||||
import gfx::geom;
|
||||
import /*layout::*/base::{box, btree, di_block, di_inline, ntree, rd_tree_ops};
|
||||
import /*layout::*/base::wr_tree_ops;
|
||||
import util::tree;
|
||||
|
||||
export box_builder_methods;
|
||||
|
||||
fn new_box(n: node) -> @box {
|
||||
@box({tree: tree::empty(),
|
||||
node: n,
|
||||
mut display: di_block,
|
||||
mut bounds: geom::zero_rect_au()})
|
||||
}
|
||||
|
||||
impl box_builder_priv_methods for node {
|
||||
fn construct_boxes() -> @box {
|
||||
let b = new_box(self);
|
||||
self.set_aux(b);
|
||||
ret b;
|
||||
}
|
||||
}
|
||||
|
||||
impl box_builder_methods for node {
|
||||
#[doc="Creates boxes for a subtree. This is the entry point."]
|
||||
fn construct_boxes_for_subtree() -> @box {
|
||||
let p_box = self.construct_boxes();
|
||||
for ntree.each_child(self) {
|
||||
|c|
|
||||
let c_box = c.construct_boxes_for_subtree();
|
||||
btree.add_child(p_box, c_box);
|
||||
}
|
||||
ret p_box;
|
||||
}
|
||||
}
|
||||
|
|
@ -11,8 +11,8 @@ import gfx::geom;
|
|||
import gfx::renderer;
|
||||
import dom::base::node;
|
||||
import dom::rcu::scope;
|
||||
import base::{btree, rd_tree_ops, wr_tree_ops, linked_subtree};
|
||||
import base::block_layout_methods;
|
||||
import base::*;
|
||||
import box_builder::box_builder_methods;
|
||||
import dl = display_list;
|
||||
|
||||
enum msg {
|
||||
|
@ -29,9 +29,9 @@ fn layout(to_renderer: chan<renderer::msg>) -> chan<msg> {
|
|||
exit { break; }
|
||||
build(node) {
|
||||
#debug("layout: received layout request");
|
||||
let box = linked_subtree(node);
|
||||
box.reflow(geom::px_to_au(800));
|
||||
let dlist = build_display_list(box);
|
||||
let this_box = node.construct_boxes_for_subtree();
|
||||
this_box.reflow(geom::px_to_au(800));
|
||||
let dlist = build_display_list(this_box);
|
||||
to_renderer.send(renderer::render(dlist));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ mod image {
|
|||
|
||||
mod layout {
|
||||
mod base;
|
||||
mod box_builder;
|
||||
mod display_list;
|
||||
mod inline;
|
||||
mod layout;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue