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 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 {
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue