зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
11860bb190
Коммит
3929b2eab0
|
@ -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",
|
||||
|
|
Загрузка…
Ссылка в новой задаче