mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #7502 - bjwbell:elliptical-borders, r=pcwalton
gfx: Add elliptical border radius support TODO: Add code for parsing shorthand border-radius e.g. "border-radius: 10px 5% / 20px". r? @pcwalton <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7502) <!-- Reviewable:end -->
This commit is contained in:
commit
5bad6b1b6e
9 changed files with 603 additions and 305 deletions
|
@ -280,18 +280,13 @@ fn handle_overlapping_radii(size: &Size2D<Au>, radii: &BorderRadii<Au>) -> Borde
|
|||
}
|
||||
}
|
||||
|
||||
let top_factor = scale_factor(radii.top_left, radii.top_right, size.width);
|
||||
let bottom_factor = scale_factor(radii.bottom_left, radii.bottom_right, size.width);
|
||||
let left_factor = scale_factor(radii.top_left, radii.bottom_left, size.height);
|
||||
let right_factor = scale_factor(radii.top_right, radii.bottom_right, size.height);
|
||||
let top_factor = scale_factor(radii.top_left.width, radii.top_right.width, size.width);
|
||||
let bottom_factor = scale_factor(radii.bottom_left.width, radii.bottom_right.width, size.width);
|
||||
let left_factor = scale_factor(radii.top_left.height, radii.bottom_left.height, size.height);
|
||||
let right_factor = scale_factor(radii.top_right.height, radii.bottom_right.height, size.height);
|
||||
let min_factor = top_factor.min(bottom_factor).min(left_factor).min(right_factor);
|
||||
if min_factor < 1.0 {
|
||||
BorderRadii {
|
||||
top_left: radii.top_left .scale_by(min_factor),
|
||||
top_right: radii.top_right .scale_by(min_factor),
|
||||
bottom_left: radii.bottom_left .scale_by(min_factor),
|
||||
bottom_right: radii.bottom_right.scale_by(min_factor),
|
||||
}
|
||||
radii.scale_by(min_factor)
|
||||
} else {
|
||||
*radii
|
||||
}
|
||||
|
@ -303,14 +298,14 @@ fn build_border_radius(abs_bounds: &Rect<Au>, border_style: &Border) -> BorderRa
|
|||
// radii will be relative to the width.
|
||||
|
||||
handle_overlapping_radii(&abs_bounds.size, &BorderRadii {
|
||||
top_left: model::specified(border_style.border_top_left_radius,
|
||||
abs_bounds.size.width),
|
||||
top_right: model::specified(border_style.border_top_right_radius,
|
||||
abs_bounds.size.width),
|
||||
bottom_right: model::specified(border_style.border_bottom_right_radius,
|
||||
abs_bounds.size.width),
|
||||
bottom_left: model::specified(border_style.border_bottom_left_radius,
|
||||
abs_bounds.size.width),
|
||||
top_left: model::specified_border_radius(border_style.border_top_left_radius,
|
||||
abs_bounds.size.width),
|
||||
top_right: model::specified_border_radius(border_style.border_top_right_radius,
|
||||
abs_bounds.size.width),
|
||||
bottom_right: model::specified_border_radius(border_style.border_bottom_right_radius,
|
||||
abs_bounds.size.width),
|
||||
bottom_left: model::specified_border_radius(border_style.border_bottom_left_radius,
|
||||
abs_bounds.size.width),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue