mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Stub text support
This commit is contained in:
parent
dccee997e8
commit
1cbc5e9dfe
6 changed files with 30 additions and 11 deletions
|
@ -10,7 +10,8 @@ enum node_data = {
|
|||
|
||||
enum node_kind {
|
||||
nk_div,
|
||||
nk_img(size<au>)
|
||||
nk_img(size<au>),
|
||||
nk_text(str)
|
||||
}
|
||||
|
||||
#[doc="The rd_aux data is a (weak) pointer to the layout data, which contains
|
||||
|
|
|
@ -7,14 +7,14 @@ import gfx::geom;
|
|||
import gfx::geom::{size, rect, point, au, zero_size_au};
|
||||
import /*layout::*/block::block_layout_methods;
|
||||
import /*layout::*/inline::inline_layout_methods;
|
||||
import /*layout::*/style::style::{computed_style, di_block, di_inline};
|
||||
import /*layout::*/style::style::style_methods;
|
||||
import /*layout::*/style::style::*;
|
||||
import util::tree;
|
||||
|
||||
enum box_kind {
|
||||
bk_block,
|
||||
bk_inline,
|
||||
bk_intrinsic(@geom::size<au>)
|
||||
bk_intrinsic(@geom::size<au>),
|
||||
bk_text(str)
|
||||
}
|
||||
|
||||
enum box = {
|
||||
|
@ -84,6 +84,7 @@ impl layout_methods for @box {
|
|||
bk_block { self.reflow_block(available_width) }
|
||||
bk_inline { self.reflow_inline(available_width) }
|
||||
bk_intrinsic(size) { self.reflow_intrinsic(*size) }
|
||||
bk_text(s) { self.reflow_text(s) }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,6 +95,14 @@ impl layout_methods for @box {
|
|||
#debug["reflow_intrinsic size=%?", self.bounds];
|
||||
}
|
||||
|
||||
#[doc="The reflow routine for text frames."]
|
||||
fn reflow_text(text: str) {
|
||||
self.bounds.size = {
|
||||
mut width: au(text.len() as int * 60 * 10),
|
||||
mut height: au(60 * 14)
|
||||
};
|
||||
}
|
||||
|
||||
#[doc="Dumps the box tree, for debugging."]
|
||||
fn dump() {
|
||||
self.dump_indent(0u);
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#[doc="Creates CSS boxes from a DOM."]
|
||||
|
||||
import dom::base::{nk_div, nk_img, node};
|
||||
import dom::base::{nk_div, nk_img, nk_text, node};
|
||||
import dom::rcu::reader_methods;
|
||||
import gfx::geom;
|
||||
import /*layout::*/base::{bk_block, bk_inline, bk_intrinsic, box, box_kind};
|
||||
import /*layout::*/base::{btree, node_methods, ntree, rd_tree_ops};
|
||||
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::*/style::style::{di_block, di_inline, style_methods};
|
||||
import util::tree;
|
||||
|
@ -120,6 +120,7 @@ impl box_builder_priv for node {
|
|||
alt self.rd({ |n| n.kind }) {
|
||||
nk_img(size) { bk_intrinsic(@size) }
|
||||
nk_div { bk_block }
|
||||
nk_text(s) { bk_text(s) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#[doc="High-level interface to CSS selector matching."]
|
||||
|
||||
import dom::base::{nk_div, nk_img, node, node_kind};
|
||||
import dom::base::{nk_div, nk_img, nk_text, node, node_kind};
|
||||
import dom::rcu::reader_methods;
|
||||
import /*layout::*/base::*; // FIXME: resolve bug requires *
|
||||
|
||||
|
@ -16,8 +16,10 @@ enum display {
|
|||
#[doc="Returns the default style for the given node kind."]
|
||||
fn default_style_for_node_kind(kind : node_kind) -> computed_style {
|
||||
alt kind {
|
||||
nk_div { computed_style({ mut display: di_block }) }
|
||||
nk_img(*) { computed_style({ mut display: di_inline }) }
|
||||
nk_div { computed_style({ mut display: di_block }) }
|
||||
nk_img(*) | nk_text(*) {
|
||||
computed_style({ mut display: di_inline })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,8 +40,12 @@ fn build_dom(scope: dom::node_scope,
|
|||
// spec) if we close more tags than we open.
|
||||
cur = scope.get_parent(cur).get();
|
||||
}
|
||||
parser::to_text(s) if !s.is_whitespace() {
|
||||
let new_node = scope.new_node(dom::nk_text(s));
|
||||
scope.add_child(cur, new_node);
|
||||
}
|
||||
parser::to_text(_) {
|
||||
// TODO
|
||||
// FIXME: Whitespace should not be ignored.
|
||||
}
|
||||
parser::to_doctype {
|
||||
// TODO: Do something here...
|
||||
|
|
2
test-text.html
Normal file
2
test-text.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
<div><img></img>Hello world!<img></img></div>
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue