Move to_bidi_level method from Stylo to Servo (#37343)

This method is only used in Servo and is the only reason that `stylo`
depends on `unicode-bidi`.

Stylo PR: https://github.com/servo/stylo/pull/196
This commit is contained in:
Nico Burns 2025-06-11 15:44:13 +01:00 committed by GitHub
parent c1ee354c38
commit 7427ea4aed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 17 deletions

View file

@ -28,6 +28,7 @@ use style::values::generics::position::{GenericAspectRatio, PreferredRatio};
use style::values::generics::transform::{GenericRotate, GenericScale, GenericTranslate};
use style::values::specified::align::AlignFlags;
use style::values::specified::{Overflow, WillChangeBits, box_ as stylo};
use unicode_bidi::Level;
use webrender_api as wr;
use webrender_api::units::LayoutTransform;
@ -365,6 +366,7 @@ pub(crate) trait ComputedValuesExt {
) -> bool;
fn is_inline_box(&self, fragment_flags: FragmentFlags) -> bool;
fn overflow_direction(&self) -> OverflowDirection;
fn to_bidi_level(&self) -> Level;
}
impl ComputedValuesExt for ComputedValues {
@ -1017,6 +1019,17 @@ impl ComputedValuesExt for ComputedValues {
downward,
}
}
/// The default bidirectional embedding level for the writing mode of this style.
///
/// Returns bidi level 0 if the mode is LTR, or 1 otherwise.
fn to_bidi_level(&self) -> Level {
if self.writing_mode.is_bidi_ltr() {
Level::ltr()
} else {
Level::rtl()
}
}
}
pub(crate) enum LayoutStyle<'a> {