Bug 1914777 - Use cbindgen for border-image-repeat. r=firefox-style-system-reviewers,layout-reviewers,emilio

nsStyleBorder field mBorderImageRepeat replaces fields
mBorderImageRepeatH and mBorderImageRepeatY.

Differential Revision: https://phabricator.services.mozilla.com/D220074
This commit is contained in:
Zach Hoffman 2024-08-25 15:57:04 +00:00
Родитель 11860bb190
Коммит 3929b2eab0
8 изменённых файлов: 14 добавлений и 37 удалений

Просмотреть файл

@ -716,9 +716,9 @@ ImgDrawResult nsCSSRendering::CreateWebRenderCommandsForBorderWithStyleBorder(
return ImgDrawResult::NOT_SUPPORTED;
}
if (aStyleBorder.mBorderImageRepeatH ==
if (aStyleBorder.mBorderImageRepeat._0 ==
StyleBorderImageRepeatKeyword::Space ||
aStyleBorder.mBorderImageRepeatV ==
aStyleBorder.mBorderImageRepeat._1 ==
StyleBorderImageRepeatKeyword::Space) {
return ImgDrawResult::NOT_SUPPORTED;
}

Просмотреть файл

@ -3884,7 +3884,7 @@ nsCSSBorderImageRenderer::nsCSSBorderImageRenderer(
"rounding error in width reduction???");
}
mRepeatModeHorizontal = aStyleBorder.mBorderImageRepeatH;
mRepeatModeVertical = aStyleBorder.mBorderImageRepeatV;
mRepeatModeHorizontal = aStyleBorder.mBorderImageRepeat._0;
mRepeatModeVertical = aStyleBorder.mBorderImageRepeat._1;
mFill = aStyleBorder.mBorderImageSlice.fill;
}

Просмотреть файл

@ -459,6 +459,7 @@ cbindgen-types = [
{ gecko = "StyleGenericPositionOrAuto", servo = "crate::values::generics::position::PositionOrAuto" },
{ gecko = "StyleBackgroundSize", servo = "crate::values::computed::BackgroundSize" },
{ gecko = "StyleGenericBackgroundSize", servo = "crate::values::generics::background::BackgroundSize" },
{ gecko = "StyleBorderImageRepeat", servo = "crate::values::specified::border::BorderImageRepeat" },
{ gecko = "StyleBorderImageRepeatKeyword", servo = "crate::values::specified::border::BorderImageRepeatKeyword" },
{ gecko = "StyleBorderImageSlice", servo = "crate::values::computed::BorderImageSlice" },
{ gecko = "StyleBorderSpacing", servo = "crate::values::computed::BorderSpacing" },

Просмотреть файл

@ -397,8 +397,8 @@ nsStyleBorder::nsStyleBorder()
mBorderImageSlice(
{StyleRectWithAllSides(StyleNumberOrPercentage::Percentage({1.})),
false}),
mBorderImageRepeatH(StyleBorderImageRepeatKeyword::Stretch),
mBorderImageRepeatV(StyleBorderImageRepeatKeyword::Stretch),
mBorderImageRepeat{StyleBorderImageRepeatKeyword::Stretch,
StyleBorderImageRepeatKeyword::Stretch},
mFloatEdge(StyleFloatEdge::ContentBox),
mBoxDecorationBreak(StyleBoxDecorationBreak::Slice),
mBorderTopColor(StyleColor::CurrentColor()),
@ -421,8 +421,7 @@ nsStyleBorder::nsStyleBorder(const nsStyleBorder& aSrc)
mBorderImageWidth(aSrc.mBorderImageWidth),
mBorderImageOutset(aSrc.mBorderImageOutset),
mBorderImageSlice(aSrc.mBorderImageSlice),
mBorderImageRepeatH(aSrc.mBorderImageRepeatH),
mBorderImageRepeatV(aSrc.mBorderImageRepeatV),
mBorderImageRepeat(aSrc.mBorderImageRepeat),
mFloatEdge(aSrc.mFloatEdge),
mBoxDecorationBreak(aSrc.mBoxDecorationBreak),
mBorderTopColor(aSrc.mBorderTopColor),
@ -516,8 +515,7 @@ nsChangeHint nsStyleBorder::CalcDifference(
// actually loaded.
if (!mBorderImageSource.IsNone() || !aNewData.mBorderImageSource.IsNone()) {
if (mBorderImageSource != aNewData.mBorderImageSource ||
mBorderImageRepeatH != aNewData.mBorderImageRepeatH ||
mBorderImageRepeatV != aNewData.mBorderImageRepeatV ||
mBorderImageRepeat != aNewData.mBorderImageRepeat ||
mBorderImageSlice != aNewData.mBorderImageSlice ||
mBorderImageWidth != aNewData.mBorderImageWidth) {
return nsChangeHint_RepaintFrame;
@ -533,8 +531,7 @@ nsChangeHint nsStyleBorder::CalcDifference(
// mBorderImage* fields are checked only when border-image is not 'none'.
if (mBorderImageSource != aNewData.mBorderImageSource ||
mBorderImageRepeatH != aNewData.mBorderImageRepeatH ||
mBorderImageRepeatV != aNewData.mBorderImageRepeatV ||
mBorderImageRepeat != aNewData.mBorderImageRepeat ||
mBorderImageSlice != aNewData.mBorderImageSlice ||
mBorderImageWidth != aNewData.mBorderImageWidth) {
return nsChangeHint_NeutralChange;

Просмотреть файл

@ -501,8 +501,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleBorder {
mozilla::StyleBorderImageWidth mBorderImageWidth;
mozilla::StyleNonNegativeLengthOrNumberRect mBorderImageOutset;
mozilla::StyleBorderImageSlice mBorderImageSlice; // factor, percent
mozilla::StyleBorderImageRepeatKeyword mBorderImageRepeatH;
mozilla::StyleBorderImageRepeatKeyword mBorderImageRepeatV;
mozilla::StyleBorderImageRepeat mBorderImageRepeat;
mozilla::StyleFloatEdge mFloatEdge;
mozilla::StyleBoxDecorationBreak mBoxDecorationBreak;

Просмотреть файл

@ -598,7 +598,7 @@ fn static_assert() {
for x in CORNERS]) %>
<%self:impl_trait style_struct_name="Border"
skip_longhands="${skip_border_longhands} border-image-repeat">
skip_longhands="${skip_border_longhands}">
% for side in SIDES:
pub fn set_border_${side.ident}_style(&mut self, v: BorderStyle) {
self.mBorderStyle[${side.index}] = v;
@ -658,28 +658,6 @@ fn static_assert() {
% for corner in CORNERS:
${impl_simple("border_%s_radius" % corner, "mBorderRadius.%s" % corner)}
% endfor
pub fn set_border_image_repeat(&mut self, v: longhands::border_image_repeat::computed_value::T) {
% for i, side in enumerate(["H", "V"]):
self.mBorderImageRepeat${side} = v.${i};
% endfor
}
pub fn copy_border_image_repeat_from(&mut self, other: &Self) {
self.mBorderImageRepeatH = other.mBorderImageRepeatH;
self.mBorderImageRepeatV = other.mBorderImageRepeatV;
}
pub fn reset_border_image_repeat(&mut self, other: &Self) {
self.copy_border_image_repeat_from(other)
}
pub fn clone_border_image_repeat(&self) -> longhands::border_image_repeat::computed_value::T {
% for side in ["H", "V"]:
let servo_${side.lower()} = self.mBorderImageRepeat${side};
% endfor
longhands::border_image_repeat::computed_value::T(servo_h, servo_v)
}
</%self:impl_trait>
<% skip_scroll_margin_longhands = " ".join(["scroll-margin-%s" % x.ident for x in SIDES]) %>

Просмотреть файл

@ -327,6 +327,7 @@ pub enum BorderImageRepeatKeyword {
ToResolvedValue,
ToShmem,
)]
#[repr(C)]
pub struct BorderImageRepeat(pub BorderImageRepeatKeyword, pub BorderImageRepeatKeyword);
impl ToCss for BorderImageRepeat {

Просмотреть файл

@ -189,6 +189,7 @@ include = [
"BackgroundSize",
"BaselineSource",
"BorderImageSlice",
"BorderImageRepeat",
"BorderImageRepeatKeyword",
"BorderSpacing",
"BorderRadius",