diff options
author | Brian Anderson <banderson@mozilla.com> | 2012-11-06 19:00:48 -0800 |
---|---|---|
committer | Brian Anderson <banderson@mozilla.com> | 2012-11-06 19:34:12 -0800 |
commit | 75a88e4f0831d7d5a086dddf2ba2d24aa859dcf9 (patch) | |
tree | 1edd164b35627d70ecb72efc3c9a084493feb0d2 | |
parent | 8a95120a8e873df7be1b1bd10bbc2f9d5bb1bdf7 (diff) | |
download | servo-75a88e4f0831d7d5a086dddf2ba2d24aa859dcf9.tar.gz servo-75a88e4f0831d7d5a086dddf2ba2d24aa859dcf9.zip |
Add default stylesheets
m--------- | src/rust-css | 0 | ||||
m--------- | src/rust-netsurfcss | 0 | ||||
-rw-r--r-- | src/servo/css/select.rs | 125 | ||||
-rw-r--r-- | src/servo/css/select_handler.rs | 4 | ||||
-rw-r--r-- | src/servo/layout/layout_task.rs | 6 | ||||
-rwxr-xr-x | src/servo/servo.rc | 1 |
6 files changed, 134 insertions, 2 deletions
diff --git a/src/rust-css b/src/rust-css -Subproject d5734c425ae0dacb37f116ec3b0b8243d600987 +Subproject 935d2eb1cf334f8c90508c6bf20d6b0cdff7e33 diff --git a/src/rust-netsurfcss b/src/rust-netsurfcss -Subproject 6d5b25957f5f6493b3acc6ed326354ad81c91cd +Subproject d37a1703d2753e6e671f23d7acfa3d9c66235eb diff --git a/src/servo/css/select.rs b/src/servo/css/select.rs new file mode 100644 index 00000000000..8c58a218e68 --- /dev/null +++ b/src/servo/css/select.rs @@ -0,0 +1,125 @@ +use std::net::url::Url; +use url_from_str = std::net::url::from_str; +use std::cell::Cell; +use newcss::stylesheet::Stylesheet; +use newcss::select::SelectCtx; +use newcss::types::OriginUA; +use newcss::util::DataStream; + +pub fn new_css_select_ctx() -> SelectCtx { + let mut ctx = SelectCtx::new(); + ctx.append_sheet(html4_default_style(), OriginUA); + ctx.append_sheet(servo_default_style(), OriginUA); + return move ctx; +} + +fn html4_default_style() -> Stylesheet { + Stylesheet::new(default_url("html4_style"), + style_stream(html4_default_style_str())) +} + +fn servo_default_style() -> Stylesheet { + Stylesheet::new(default_url("servo_style"), + style_stream(servo_default_style_str())) +} + +fn default_url(name: &str) -> Url { + result::unwrap(url_from_str(fmt!("http://%s", name))) +} + +fn style_stream(style: &str) -> DataStream { + let style = Cell(str::to_bytes(style)); + |move style| if !style.is_empty() { + Some(style.take()) + } else { + None + } +} + +fn html4_default_style_str() -> ~str { +~" +html, address, +blockquote, +body, dd, div, +dl, dt, fieldset, form, +frame, frameset, +h1, h2, h3, h4, +h5, h6, noframes, +ol, p, ul, center, + dir, hr, menu, pre { display: block; unicode-bidi: embed } + li { display: list-item } + head { display: none } + table { display: table } + tr { display: table-row } + thead { display: table-header-group } + tbody { display: table-row-group } + tfoot { display: table-footer-group } + col { display: table-column } + colgroup { display: table-column-group } + td, th { display: table-cell } + caption { display: table-caption } + th { font-weight: bolder; text-align: center } + caption { text-align: center } + body { margin: 8px } + h1 { font-size: 2em; margin: .67em 0 } + h2 { font-size: 1.5em; margin: .75em 0 } + h3 { font-size: 1.17em; margin: .83em 0 } +h4, p, +blockquote, ul, +fieldset, form, +ol, dl, dir, + menu { margin: 1.12em 0 } + h5 { font-size: .83em; margin: 1.5em 0 } + h6 { font-size: .75em; margin: 1.67em 0 } +h1, h2, h3, h4, +h5, h6, b, + strong { font-weight: bolder } + blockquote { margin-left: 40px; margin-right: 40px } +i, cite, em, + var, address { font-style: italic } +pre, tt, code, + kbd, samp { font-family: monospace } + pre { white-space: pre } +button, textarea, + input, select { display: inline-block } + big { font-size: 1.17em } + small, sub, sup { font-size: .83em } + sub { vertical-align: sub } + sup { vertical-align: super } + table { border-spacing: 2px; } +thead, tbody, + tfoot { vertical-align: middle } + td, th, tr { vertical-align: inherit } + s, strike, del { text-decoration: line-through } + hr { border: 1px inset } +ol, ul, dir, + menu, dd { margin-left: 40px } + ol { list-style-type: decimal } +ol ul, ul ol, + ul ul, ol ol { margin-top: 0; margin-bottom: 0 } + u, ins { text-decoration: underline } + br:before { content: \"\\A\"; white-space: pre-line } +center { text-align: center } +:link, :visited { text-decoration: underline } +:focus { outline: thin dotted invert } + +/* Begin bidirectionality settings (do not change) */ +BDO[DIR=\"ltr\"] { direction: ltr; unicode-bidi: bidi-override } +BDO[DIR=\"rtl\"] { direction: rtl; unicode-bidi: bidi-override } + +*[DIR=\"ltr\"] { direction: ltr; unicode-bidi: embed } +*[DIR=\"rtl\"] { direction: rtl; unicode-bidi: embed } + +@media print { +h1 { page-break-before: always } + h1, h2, h3, +h4, h5, h6 { page-break-after: avoid } +ul, ol, dl { page-break-before: avoid } +} +" +} + +fn servo_default_style_str() -> ~str { + // libcss want's this to default to 2px.. + ~"* { border-width: 0px; }" +}
\ No newline at end of file diff --git a/src/servo/css/select_handler.rs b/src/servo/css/select_handler.rs index e3d94cfa6d9..02a583e2a08 100644 --- a/src/servo/css/select_handler.rs +++ b/src/servo/css/select_handler.rs @@ -39,4 +39,8 @@ impl NodeSelectHandler: SelectHandler<Node> { fn parent_node(node: &Node) -> Option<Node> { tree::parent(&NodeTree, node) } + + fn node_is_root(node: &Node) -> bool { + self.parent_node(node).is_none() + } }
\ No newline at end of file diff --git a/src/servo/layout/layout_task.rs b/src/servo/layout/layout_task.rs index 30f01bf1349..0fad5fd4a10 100644 --- a/src/servo/layout/layout_task.rs +++ b/src/servo/layout/layout_task.rs @@ -38,6 +38,8 @@ use comm::*; use task::*; use core::mutable::Mut; use newcss::select::SelectCtx; +use newcss::types::OriginAuthor; +use css::select::new_css_select_ctx; pub type LayoutTask = comm::Chan<Msg>; @@ -100,7 +102,7 @@ fn Layout(render_task: RenderTask, font_matcher: @FontMatcher::new(fctx), font_cache: @FontCache::new(fctx), layout_refs: DVec(), - css_select_ctx: Mut(SelectCtx::new()) + css_select_ctx: Mut(new_css_select_ctx()) } } @@ -143,7 +145,7 @@ impl Layout { fn handle_add_stylesheet(sheet: Stylesheet) { let sheet = Cell(move sheet); do self.css_select_ctx.borrow_mut |ctx| { - ctx.append_sheet(sheet.take()); + ctx.append_sheet(sheet.take(), OriginAuthor); } } diff --git a/src/servo/servo.rc b/src/servo/servo.rc index 44220302010..fe5c991d70a 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -30,6 +30,7 @@ pub mod css { priv mod node_util; priv mod node_void_ptr; + pub mod select; pub mod matching; pub mod node_style; } |