Bug 1805097 - [refactor] Migrate NS_STYLE_MASONRY_* defines r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D164422
This commit is contained in:
Ben Freist 2023-01-03 12:14:56 +00:00
Родитель 265b52fb1f
Коммит 8b3a740547
8 изменённых файлов: 17 добавлений и 41 удалений

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

@ -8026,7 +8026,8 @@ nscoord nsGridContainerFrame::MasonryLayout(GridReflowInput& aState,
}
}
const auto masonryAutoFlow = aState.mGridStyle->mMasonryAutoFlow;
bool definiteFirst = masonryAutoFlow & NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST;
const bool definiteFirst =
masonryAutoFlow.order == StyleMasonryItemOrder::DefiniteFirst;
if (masonryAxis == eLogicalAxisBlock) {
std::stable_sort(sortedItems.begin(), sortedItems.end(),
definiteFirst ? GridItemInfo::RowMasonryDefiniteFirst
@ -8077,7 +8078,7 @@ nscoord nsGridContainerFrame::MasonryLayout(GridReflowInput& aState,
uint32_t cursor = 0;
const auto containerToMasonryBoxOffset =
fragStartPos - aContentArea.Start(masonryAxis, wm);
const bool isPack = masonryAutoFlow & NS_STYLE_MASONRY_PLACEMENT_PACK;
const bool isPack = masonryAutoFlow.placement == StyleMasonryPlacement::Pack;
bool didAlignStartAlignedFirstItems = false;
// Return true if any of the lastItems in aRange are baseline-aligned in

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

@ -522,6 +522,9 @@ cbindgen-types = [
{ gecko = "StyleWillChange", servo = "crate::values::specified::box_::WillChange" },
{ gecko = "StyleColorScheme", servo = "crate::values::specified::color::ColorScheme" },
{ gecko = "StyleTextDecorationLine", servo = "crate::values::computed::TextDecorationLine" },
{ gecko = "StyleMasonryAutoFlow", servo = "crate::values::specified::MasonryAutoFlow" },
{ gecko = "StyleMasonryPlacement", servo = "crate::values::specified::MasonryPlacement" },
{ gecko = "StyleMasonryItemOrder", servo = "crate::values::specified::MasonryItemOrder" },
{ gecko = "StyleTextTransform", servo = "crate::values::computed::TextTransform" },
{ gecko = "StyleTextUnderlinePosition", servo = "crate::values::computed::TextUnderlinePosition" },
{ gecko = "StyleOwned", servo = "crate::gecko_bindings::sugar::ownership::Owned" },

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

@ -345,11 +345,6 @@ enum class StyleFlexWrap : uint8_t {
// (rather than an internal numerical representation of some keyword).
#define NS_STYLE_ORDER_INITIAL 0
#define NS_STYLE_MASONRY_PLACEMENT_PACK (1 << 0)
#define NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST (1 << 1)
#define NS_STYLE_MASONRY_AUTO_FLOW_INITIAL_VALUE \
(NS_STYLE_MASONRY_PLACEMENT_PACK | NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST)
// 'subgrid' keyword in grid-template-{columns,rows}
#define NS_STYLE_GRID_TEMPLATE_SUBGRID 0

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

@ -1080,7 +1080,8 @@ nsStylePosition::nsStylePosition(const Document& aDocument)
mFlexBasis(StyleFlexBasis::Size(StyleSize::Auto())),
mAspectRatio(StyleAspectRatio::Auto()),
mGridAutoFlow(StyleGridAutoFlow::ROW),
mMasonryAutoFlow(NS_STYLE_MASONRY_AUTO_FLOW_INITIAL_VALUE),
mMasonryAutoFlow(
{StyleMasonryPlacement::Pack, StyleMasonryItemOrder::DefiniteFirst}),
mAlignContent({StyleAlignFlags::NORMAL}),
mAlignItems({StyleAlignFlags::NORMAL}),
mAlignSelf({StyleAlignFlags::AUTO}),

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

@ -833,7 +833,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStylePosition {
StyleImplicitGridTracks mGridAutoRows;
mozilla::StyleAspectRatio mAspectRatio;
mozilla::StyleGridAutoFlow mGridAutoFlow;
uint8_t mMasonryAutoFlow; // NS_STYLE_MASONRY_*
mozilla::StyleMasonryAutoFlow mMasonryAutoFlow;
mozilla::StyleAlignContent mAlignContent;
mozilla::StyleAlignItems mAlignItems;

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

@ -76,8 +76,9 @@ pub use self::page::{PageName, PageSize, PageSizeOrientation, PaperSize};
pub use self::percentage::{NonNegativePercentage, Percentage};
pub use self::position::AspectRatio;
pub use self::position::{
GridAutoFlow, GridTemplateAreas, MasonryAutoFlow, Position, PositionOrAuto,
GridAutoFlow, GridTemplateAreas, Position, PositionOrAuto,
};
pub use self::position::{MasonryAutoFlow, MasonryPlacement, MasonryItemOrder};
pub use self::position::{PositionComponent, ZIndex};
pub use self::ratio::Ratio;
pub use self::rect::NonNegativeLengthOrNumberRect;

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

@ -391,6 +391,7 @@ bitflags! {
}
}
#[repr(u8)]
#[derive(
Clone,
Copy,
@ -412,6 +413,7 @@ pub enum MasonryPlacement {
Next,
}
#[repr(u8)]
#[derive(
Clone,
Copy,
@ -446,6 +448,7 @@ pub enum MasonryItemOrder {
ToResolvedValue,
ToShmem,
)]
#[repr(C)]
/// Controls how the Masonry layout algorithm works
/// specifying exactly how auto-placed items get flowed in the masonry axis.
pub struct MasonryAutoFlow {
@ -525,37 +528,6 @@ impl Parse for MasonryAutoFlow {
}
}
#[cfg(feature = "gecko")]
impl From<u8> for MasonryAutoFlow {
fn from(bits: u8) -> MasonryAutoFlow {
use crate::gecko_bindings::structs;
let mut value = MasonryAutoFlow::initial();
if bits & structs::NS_STYLE_MASONRY_PLACEMENT_PACK as u8 == 0 {
value.placement = MasonryPlacement::Next;
}
if bits & structs::NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST as u8 == 0 {
value.order = MasonryItemOrder::Ordered;
}
value
}
}
#[cfg(feature = "gecko")]
impl From<MasonryAutoFlow> for u8 {
fn from(v: MasonryAutoFlow) -> u8 {
use crate::gecko_bindings::structs;
let mut result: u8 = 0;
if v.placement == MasonryPlacement::Pack {
result |= structs::NS_STYLE_MASONRY_PLACEMENT_PACK as u8;
}
if v.order == MasonryItemOrder::DefiniteFirst {
result |= structs::NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST as u8;
}
result
}
}
// TODO: Can be derived with some care.
impl Parse for GridAutoFlow {
/// [ row | column ] || dense

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

@ -163,6 +163,9 @@ include = [
"TouchAction",
"WillChange",
"TextDecorationLine",
"MasonryAutoFlow",
"MasonryPlacement",
"MasonryItemOrder",
"TextUnderlinePosition",
"TextTransform",
"TextJustify",