mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Stub style application; add an attribute accessor method
This commit is contained in:
parent
e15c779b43
commit
8a007476ec
5 changed files with 34 additions and 6 deletions
|
@ -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<node>,
|
||||
|
@ -24,6 +24,17 @@ class element {
|
|||
self.subclass = subclass;
|
||||
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 {
|
||||
|
|
|
@ -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<au>,
|
||||
kind: box_kind
|
||||
kind: box_kind,
|
||||
appearance: appearance
|
||||
};
|
||||
|
||||
enum layout_data = {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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<renderer::msg>) -> chan<msg> {
|
|||
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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue