Further changes required by Servo

This commit is contained in:
Oriol Brufau 2023-11-22 11:38:17 +01:00 committed by Martin Robinson
parent 7b4fb5dc22
commit 0fd2f08da1
7 changed files with 34 additions and 30 deletions

View file

@ -2208,14 +2208,15 @@ fn has_padding_or_border(values: &ComputedValues) -> bool {
let padding = values.get_padding();
let border = values.get_border();
use style::Zero;
!padding.padding_top.is_definitely_zero() ||
!padding.padding_right.is_definitely_zero() ||
!padding.padding_bottom.is_definitely_zero() ||
!padding.padding_left.is_definitely_zero() ||
border.border_top_width.px() != 0. ||
border.border_right_width.px() != 0. ||
border.border_bottom_width.px() != 0. ||
border.border_left_width.px() != 0.
!border.border_top_width.is_zero() ||
!border.border_right_width.is_zero() ||
!border.border_bottom_width.is_zero() ||
!border.border_left_width.is_zero()
}
/// Maintains a stack of anonymous boxes needed to ensure that the flow tree is *legal*. The tree

View file

@ -477,14 +477,12 @@ impl FragmentBorderBoxIterator for FragmentClientRectQueryIterator {
border_left_width: left_width,
..
} = *fragment.style.get_border();
let (left_width, right_width) = (left_width.px(), right_width.px());
let (top_width, bottom_width) = (top_width.px(), bottom_width.px());
self.client_rect.origin.y = top_width as i32;
self.client_rect.origin.x = left_width as i32;
self.client_rect.size.width =
(border_box.size.width.to_f32_px() - left_width - right_width) as i32;
self.client_rect.size.height =
(border_box.size.height.to_f32_px() - top_width - bottom_width) as i32;
let (left_width, right_width) = (left_width.to_px(), right_width.to_px());
let (top_width, bottom_width) = (top_width.to_px(), bottom_width.to_px());
self.client_rect.origin.y = top_width;
self.client_rect.origin.x = left_width;
self.client_rect.size.width = border_box.size.width.to_px() - left_width - right_width;
self.client_rect.size.height = border_box.size.height.to_px() - top_width - bottom_width;
}
fn should_process(&mut self, fragment: &Fragment) -> bool {
@ -507,11 +505,10 @@ impl FragmentBorderBoxIterator for UnioningFragmentScrollAreaIterator {
border_left_width: left_border,
..
} = *fragment.style.get_border();
let (left_border, right_border) = (left_border.px(), right_border.px());
let (top_border, bottom_border) = (top_border.px(), bottom_border.px());
let right_padding = (border_box.size.width.to_f32_px() - right_border - left_border) as i32;
let bottom_padding =
(border_box.size.height.to_f32_px() - bottom_border - top_border) as i32;
let (left_border, right_border) = (left_border.to_px(), right_border.to_px());
let (top_border, bottom_border) = (top_border.to_px(), bottom_border.to_px());
let right_padding = border_box.size.width.to_px() - right_border - left_border;
let bottom_padding = border_box.size.height.to_px() - bottom_border - top_border;
let top_padding = top_border as i32;
let left_padding = left_border as i32;

View file

@ -686,10 +686,10 @@ impl<'a> BuilderForBoxFragment<'a> {
fn build_border(&mut self, builder: &mut DisplayListBuilder) {
let border = self.fragment.style.get_border();
let widths = SideOffsets2D::new(
border.border_top_width.px(),
border.border_right_width.px(),
border.border_bottom_width.px(),
border.border_left_width.px(),
border.border_top_width.to_f32_px(),
border.border_right_width.to_f32_px(),
border.border_bottom_width.to_f32_px(),
border.border_left_width.to_f32_px(),
);
if widths == SideOffsets2D::zero() {
return;
@ -715,7 +715,7 @@ impl<'a> BuilderForBoxFragment<'a> {
fn build_outline(&mut self, builder: &mut DisplayListBuilder) {
let outline = self.fragment.style.get_outline();
let width = outline.outline_width.px();
let width = outline.outline_width.to_f32_px();
if width == 0.0 {
return;
}

View file

@ -1052,7 +1052,8 @@ impl BoxFragment {
containing_block: containing_block.rect,
fragment: fragment.clone(),
});
if self.style.get_outline().outline_width.px() > 0.0 {
use style::Zero;
if !self.style.get_outline().outline_width.is_zero() {
stacking_context
.contents
.push(StackingContextContent::Fragment {

View file

@ -160,8 +160,8 @@ impl FragmentTree {
let border = style.get_border();
Some(Rect::new(
Point2D::new(
border.border_left_width.px() as i32,
border.border_top_width.px() as i32,
border.border_left_width.to_px(),
border.border_top_width.to_px(),
),
Size2D::new(
padding_rect.size.width.px() as i32,

View file

@ -320,10 +320,10 @@ impl ComputedValuesExt for ComputedValues {
let border = self.get_border();
LogicalSides::from_physical(
&PhysicalSides::new(
border.border_top_width.0,
border.border_right_width.0,
border.border_bottom_width.0,
border.border_left_width.0,
border.border_top_width.into(),
border.border_right_width.into(),
border.border_bottom_width.into(),
border.border_left_width.into(),
),
containing_block_writing_mode,
)

View file

@ -17,7 +17,7 @@ use crate::values::computed::Resolution;
use crate::values::specified::font::FONT_MEDIUM_PX;
use crate::values::specified::ViewportVariant;
use crate::values::KeyframesName;
use app_units::Au;
use app_units::{Au, AU_PER_PX};
use euclid::default::Size2D as UntypedSize2D;
use euclid::{Scale, SideOffsets2D, Size2D};
use mime::Mime;
@ -159,6 +159,11 @@ impl Device {
self.used_viewport_units.load(Ordering::Relaxed)
}
/// Returns the number of app units per device pixel we're using currently.
pub fn app_units_per_device_pixel(&self) -> i32 {
(AU_PER_PX as f32 / self.device_pixel_ratio.0) as i32
}
/// Returns the device pixel ratio.
pub fn device_pixel_ratio(&self) -> Scale<f32, CSSPixel, DevicePixel> {
self.device_pixel_ratio