mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Further changes required by Servo
This commit is contained in:
parent
7b4fb5dc22
commit
0fd2f08da1
7 changed files with 34 additions and 30 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue