mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
layout: support tiled gradients
Use background-size, background-position properties to render CSS gradients. Some cleanup in display_list_builder.rs related to gradient calculations. Adds two wpt tests for tiled gradients. Note: For now even gradients with background-repeat: no-repeat are repeated. Sometimes the gradient is not repeated everywhere. Enable vars-background-shorthand-001.html CSS test.
This commit is contained in:
parent
80341b291b
commit
9502e9f42a
9 changed files with 353 additions and 164 deletions
|
@ -428,7 +428,6 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
builder.push_border(&self.prim_info(), widths, details);
|
||||
}
|
||||
DisplayItem::Gradient(ref item) => {
|
||||
let rect = item.base.bounds;
|
||||
let start_point = item.gradient.start_point.to_pointf();
|
||||
let end_point = item.gradient.end_point.to_pointf();
|
||||
let extend_mode = if item.gradient.repeating {
|
||||
|
@ -442,11 +441,10 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
extend_mode);
|
||||
builder.push_gradient(&self.prim_info(),
|
||||
gradient,
|
||||
rect.size.to_sizef(),
|
||||
item.tile.to_sizef(),
|
||||
webrender_api::LayoutSize::zero());
|
||||
}
|
||||
DisplayItem::RadialGradient(ref item) => {
|
||||
let rect = item.base.bounds;
|
||||
let center = item.gradient.center.to_pointf();
|
||||
let radius = item.gradient.radius.to_sizef();
|
||||
let extend_mode = if item.gradient.repeating {
|
||||
|
@ -460,7 +458,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
extend_mode);
|
||||
builder.push_radial_gradient(&self.prim_info(),
|
||||
gradient,
|
||||
rect.size.to_sizef(),
|
||||
item.tile.to_sizef(),
|
||||
webrender_api::LayoutSize::zero());
|
||||
}
|
||||
DisplayItem::Line(ref item) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue