mirror of
https://github.com/servo/servo.git
synced 2025-07-25 08:10:21 +01: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 padding = values.get_padding();
|
||||||
let border = values.get_border();
|
let border = values.get_border();
|
||||||
|
|
||||||
|
use style::Zero;
|
||||||
!padding.padding_top.is_definitely_zero() ||
|
!padding.padding_top.is_definitely_zero() ||
|
||||||
!padding.padding_right.is_definitely_zero() ||
|
!padding.padding_right.is_definitely_zero() ||
|
||||||
!padding.padding_bottom.is_definitely_zero() ||
|
!padding.padding_bottom.is_definitely_zero() ||
|
||||||
!padding.padding_left.is_definitely_zero() ||
|
!padding.padding_left.is_definitely_zero() ||
|
||||||
border.border_top_width.px() != 0. ||
|
!border.border_top_width.is_zero() ||
|
||||||
border.border_right_width.px() != 0. ||
|
!border.border_right_width.is_zero() ||
|
||||||
border.border_bottom_width.px() != 0. ||
|
!border.border_bottom_width.is_zero() ||
|
||||||
border.border_left_width.px() != 0.
|
!border.border_left_width.is_zero()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Maintains a stack of anonymous boxes needed to ensure that the flow tree is *legal*. The tree
|
/// 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,
|
border_left_width: left_width,
|
||||||
..
|
..
|
||||||
} = *fragment.style.get_border();
|
} = *fragment.style.get_border();
|
||||||
let (left_width, right_width) = (left_width.px(), right_width.px());
|
let (left_width, right_width) = (left_width.to_px(), right_width.to_px());
|
||||||
let (top_width, bottom_width) = (top_width.px(), bottom_width.px());
|
let (top_width, bottom_width) = (top_width.to_px(), bottom_width.to_px());
|
||||||
self.client_rect.origin.y = top_width as i32;
|
self.client_rect.origin.y = top_width;
|
||||||
self.client_rect.origin.x = left_width as i32;
|
self.client_rect.origin.x = left_width;
|
||||||
self.client_rect.size.width =
|
self.client_rect.size.width = border_box.size.width.to_px() - left_width - right_width;
|
||||||
(border_box.size.width.to_f32_px() - left_width - right_width) as i32;
|
self.client_rect.size.height = border_box.size.height.to_px() - top_width - bottom_width;
|
||||||
self.client_rect.size.height =
|
|
||||||
(border_box.size.height.to_f32_px() - top_width - bottom_width) as i32;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn should_process(&mut self, fragment: &Fragment) -> bool {
|
fn should_process(&mut self, fragment: &Fragment) -> bool {
|
||||||
|
@ -507,11 +505,10 @@ impl FragmentBorderBoxIterator for UnioningFragmentScrollAreaIterator {
|
||||||
border_left_width: left_border,
|
border_left_width: left_border,
|
||||||
..
|
..
|
||||||
} = *fragment.style.get_border();
|
} = *fragment.style.get_border();
|
||||||
let (left_border, right_border) = (left_border.px(), right_border.px());
|
let (left_border, right_border) = (left_border.to_px(), right_border.to_px());
|
||||||
let (top_border, bottom_border) = (top_border.px(), bottom_border.px());
|
let (top_border, bottom_border) = (top_border.to_px(), bottom_border.to_px());
|
||||||
let right_padding = (border_box.size.width.to_f32_px() - right_border - left_border) as i32;
|
let right_padding = border_box.size.width.to_px() - right_border - left_border;
|
||||||
let bottom_padding =
|
let bottom_padding = border_box.size.height.to_px() - bottom_border - top_border;
|
||||||
(border_box.size.height.to_f32_px() - bottom_border - top_border) as i32;
|
|
||||||
let top_padding = top_border as i32;
|
let top_padding = top_border as i32;
|
||||||
let left_padding = left_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) {
|
fn build_border(&mut self, builder: &mut DisplayListBuilder) {
|
||||||
let border = self.fragment.style.get_border();
|
let border = self.fragment.style.get_border();
|
||||||
let widths = SideOffsets2D::new(
|
let widths = SideOffsets2D::new(
|
||||||
border.border_top_width.px(),
|
border.border_top_width.to_f32_px(),
|
||||||
border.border_right_width.px(),
|
border.border_right_width.to_f32_px(),
|
||||||
border.border_bottom_width.px(),
|
border.border_bottom_width.to_f32_px(),
|
||||||
border.border_left_width.px(),
|
border.border_left_width.to_f32_px(),
|
||||||
);
|
);
|
||||||
if widths == SideOffsets2D::zero() {
|
if widths == SideOffsets2D::zero() {
|
||||||
return;
|
return;
|
||||||
|
@ -715,7 +715,7 @@ impl<'a> BuilderForBoxFragment<'a> {
|
||||||
|
|
||||||
fn build_outline(&mut self, builder: &mut DisplayListBuilder) {
|
fn build_outline(&mut self, builder: &mut DisplayListBuilder) {
|
||||||
let outline = self.fragment.style.get_outline();
|
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 {
|
if width == 0.0 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1052,7 +1052,8 @@ impl BoxFragment {
|
||||||
containing_block: containing_block.rect,
|
containing_block: containing_block.rect,
|
||||||
fragment: fragment.clone(),
|
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
|
stacking_context
|
||||||
.contents
|
.contents
|
||||||
.push(StackingContextContent::Fragment {
|
.push(StackingContextContent::Fragment {
|
||||||
|
|
|
@ -160,8 +160,8 @@ impl FragmentTree {
|
||||||
let border = style.get_border();
|
let border = style.get_border();
|
||||||
Some(Rect::new(
|
Some(Rect::new(
|
||||||
Point2D::new(
|
Point2D::new(
|
||||||
border.border_left_width.px() as i32,
|
border.border_left_width.to_px(),
|
||||||
border.border_top_width.px() as i32,
|
border.border_top_width.to_px(),
|
||||||
),
|
),
|
||||||
Size2D::new(
|
Size2D::new(
|
||||||
padding_rect.size.width.px() as i32,
|
padding_rect.size.width.px() as i32,
|
||||||
|
|
|
@ -320,10 +320,10 @@ impl ComputedValuesExt for ComputedValues {
|
||||||
let border = self.get_border();
|
let border = self.get_border();
|
||||||
LogicalSides::from_physical(
|
LogicalSides::from_physical(
|
||||||
&PhysicalSides::new(
|
&PhysicalSides::new(
|
||||||
border.border_top_width.0,
|
border.border_top_width.into(),
|
||||||
border.border_right_width.0,
|
border.border_right_width.into(),
|
||||||
border.border_bottom_width.0,
|
border.border_bottom_width.into(),
|
||||||
border.border_left_width.0,
|
border.border_left_width.into(),
|
||||||
),
|
),
|
||||||
containing_block_writing_mode,
|
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::font::FONT_MEDIUM_PX;
|
||||||
use crate::values::specified::ViewportVariant;
|
use crate::values::specified::ViewportVariant;
|
||||||
use crate::values::KeyframesName;
|
use crate::values::KeyframesName;
|
||||||
use app_units::Au;
|
use app_units::{Au, AU_PER_PX};
|
||||||
use euclid::default::Size2D as UntypedSize2D;
|
use euclid::default::Size2D as UntypedSize2D;
|
||||||
use euclid::{Scale, SideOffsets2D, Size2D};
|
use euclid::{Scale, SideOffsets2D, Size2D};
|
||||||
use mime::Mime;
|
use mime::Mime;
|
||||||
|
@ -159,6 +159,11 @@ impl Device {
|
||||||
self.used_viewport_units.load(Ordering::Relaxed)
|
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.
|
/// Returns the device pixel ratio.
|
||||||
pub fn device_pixel_ratio(&self) -> Scale<f32, CSSPixel, DevicePixel> {
|
pub fn device_pixel_ratio(&self) -> Scale<f32, CSSPixel, DevicePixel> {
|
||||||
self.device_pixel_ratio
|
self.device_pixel_ratio
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue