mirror of
https://github.com/servo/servo.git
synced 2025-06-24 09:04:33 +01:00
Add default stylesheets
This commit is contained in:
parent
8a95120a8e
commit
75a88e4f08
6 changed files with 136 additions and 4 deletions
|
@ -1 +1 @@
|
|||
Subproject commit d5734c425ae0dacb37f116ec3b0b8243d600987a
|
||||
Subproject commit 935d2eb1cf334f8c90508c6bf20d6b0cdff7e331
|
|
@ -1 +1 @@
|
|||
Subproject commit 6d5b25957f5f6493b3acc6ed326354ad81c91cd1
|
||||
Subproject commit d37a1703d2753e6e671f23d7acfa3d9c66235ebb
|
125
src/servo/css/select.rs
Normal file
125
src/servo/css/select.rs
Normal file
|
@ -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; }"
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue