Bug 1801458 - [refactor] Migrate NS_STYLE_UNICODE_BIDI_* defines r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D162487
This commit is contained in:
Ben Freist 2022-11-22 18:37:02 +00:00
parent 14e89d0d4e
commit a0881d2bec
10 changed files with 40 additions and 34 deletions

View file

@ -85,7 +85,8 @@ static char16_t GetBidiOverride(ComputedStyle* aComputedStyle) {
return kLRO;
}
const nsStyleTextReset* text = aComputedStyle->StyleTextReset();
if (text->mUnicodeBidi & NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE) {
if (text->mUnicodeBidi == StyleUnicodeBidi::BidiOverride ||
text->mUnicodeBidi == StyleUnicodeBidi::IsolateOverride) {
return StyleDirection::Rtl == vis->mDirection ? kRLO : kLRO;
}
return 0;
@ -104,21 +105,21 @@ static char16_t GetBidiOverride(ComputedStyle* aComputedStyle) {
static char16_t GetBidiControl(ComputedStyle* aComputedStyle) {
const nsStyleVisibility* vis = aComputedStyle->StyleVisibility();
const nsStyleTextReset* text = aComputedStyle->StyleTextReset();
if (text->mUnicodeBidi & NS_STYLE_UNICODE_BIDI_EMBED) {
return StyleDirection::Rtl == vis->mDirection ? kRLE : kLRE;
}
if (text->mUnicodeBidi & NS_STYLE_UNICODE_BIDI_ISOLATE) {
if (text->mUnicodeBidi & NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE) {
// isolate-override
switch (text->mUnicodeBidi) {
case StyleUnicodeBidi::Embed:
return StyleDirection::Rtl == vis->mDirection ? kRLE : kLRE;
case StyleUnicodeBidi::Isolate:
// <bdi> element already has its directionality set from content so
// we never need to return kFSI.
return StyleDirection::Rtl == vis->mDirection ? kRLI : kLRI;
case StyleUnicodeBidi::IsolateOverride:
case StyleUnicodeBidi::Plaintext:
return kFSI;
}
// <bdi> element already has its directionality set from content so
// we never need to return kFSI.
return StyleDirection::Rtl == vis->mDirection ? kRLI : kLRI;
}
if (text->mUnicodeBidi & NS_STYLE_UNICODE_BIDI_PLAINTEXT) {
return kFSI;
case StyleUnicodeBidi::Normal:
case StyleUnicodeBidi::BidiOverride:
break;
}
return 0;
}
@ -2474,8 +2475,8 @@ nsresult nsBidiPresUtils::ProcessTextForRenderingContext(
/* static */
BidiEmbeddingLevel nsBidiPresUtils::BidiLevelFromStyle(
ComputedStyle* aComputedStyle) {
if (aComputedStyle->StyleTextReset()->mUnicodeBidi &
NS_STYLE_UNICODE_BIDI_PLAINTEXT) {
if (aComputedStyle->StyleTextReset()->mUnicodeBidi ==
StyleUnicodeBidi::Plaintext) {
return BidiEmbeddingLevel::DefaultLTR();
}

View file

@ -2344,14 +2344,15 @@ void nsBlockFrame::MarkLineDirty(LineIterator aLine,
*/
static inline bool IsAlignedLeft(StyleTextAlign aAlignment,
StyleDirection aDirection,
uint8_t aUnicodeBidi, nsIFrame* aFrame) {
StyleUnicodeBidi aUnicodeBidi,
nsIFrame* aFrame) {
return SVGUtils::IsInSVGTextSubtree(aFrame) ||
StyleTextAlign::Left == aAlignment ||
(((StyleTextAlign::Start == aAlignment &&
StyleDirection::Ltr == aDirection) ||
(StyleTextAlign::End == aAlignment &&
StyleDirection::Rtl == aDirection)) &&
!(NS_STYLE_UNICODE_BIDI_PLAINTEXT & aUnicodeBidi));
aUnicodeBidi != StyleUnicodeBidi::Plaintext);
}
void nsBlockFrame::PrepareResizeReflow(BlockReflowState& aState) {

View file

@ -7350,8 +7350,8 @@ nsRect ScrollFrameHelper::GetScrolledRect() const {
StyleDirection ScrollFrameHelper::GetScrolledFrameDir() const {
// If the scrolled frame has unicode-bidi: plaintext, the paragraph
// direction set by the text content overrides the direction of the frame
if (mScrolledFrame->StyleTextReset()->mUnicodeBidi &
NS_STYLE_UNICODE_BIDI_PLAINTEXT) {
if (mScrolledFrame->StyleTextReset()->mUnicodeBidi ==
StyleUnicodeBidi::Plaintext) {
if (nsIFrame* child = mScrolledFrame->PrincipalChildList().FirstChild()) {
return nsBidiPresUtils::ParagraphDirection(child) ==
mozilla::intl::BidiDirection::LTR

View file

@ -1718,7 +1718,7 @@ WritingMode nsIFrame::WritingModeForLine(WritingMode aSelfWM,
MOZ_ASSERT(aSelfWM == GetWritingMode());
WritingMode writingMode = aSelfWM;
if (StyleTextReset()->mUnicodeBidi & NS_STYLE_UNICODE_BIDI_PLAINTEXT) {
if (StyleTextReset()->mUnicodeBidi == StyleUnicodeBidi::Plaintext) {
mozilla::intl::BidiEmbeddingLevel frameLevel =
nsBidiPresUtils::GetFrameBaseLevel(aSubFrame);
writingMode.SetDirectionFromBidiLevel(frameLevel);

View file

@ -2019,9 +2019,9 @@ bool BuildTextRunsScanner::ContinueTextRunAcrossFrames(nsTextFrame* aFrame1,
}
// 3. The boundary is a bidi isolation boundary.
const uint8_t unicodeBidi = ctx->StyleTextReset()->mUnicodeBidi;
if (unicodeBidi == NS_STYLE_UNICODE_BIDI_ISOLATE ||
unicodeBidi == NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE) {
const auto unicodeBidi = ctx->StyleTextReset()->mUnicodeBidi;
if (unicodeBidi == StyleUnicodeBidi::Isolate ||
unicodeBidi == StyleUnicodeBidi::IsolateOverride) {
return true;
}

View file

@ -151,6 +151,7 @@ rusty-enums = [
"mozilla::StyleTextOrientation",
"mozilla::StyleMozBoxLayout",
"mozilla::StyleTextCombineUpright",
"mozilla::StyleUnicodeBidi",
"mozilla::StyleTableLayout",
"mozilla::StyleEmptyCells",
"nsStyleImageType",

View file

@ -541,12 +541,14 @@ enum class StyleTextCombineUpright : uint8_t {
};
// See nsStyleText
#define NS_STYLE_UNICODE_BIDI_NORMAL 0x0
#define NS_STYLE_UNICODE_BIDI_EMBED 0x1
#define NS_STYLE_UNICODE_BIDI_ISOLATE 0x2
#define NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE 0x4
#define NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE 0x6
#define NS_STYLE_UNICODE_BIDI_PLAINTEXT 0x8
enum class StyleUnicodeBidi : uint8_t {
Normal,
Embed,
Isolate,
BidiOverride,
IsolateOverride,
Plaintext
};
enum class StyleTableLayout : uint8_t {
Auto,

View file

@ -2868,7 +2868,7 @@ nsStyleTextReset::nsStyleTextReset(const Document& aDocument)
: mTextOverflow(),
mTextDecorationLine(StyleTextDecorationLine::NONE),
mTextDecorationStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
mUnicodeBidi(NS_STYLE_UNICODE_BIDI_NORMAL),
mUnicodeBidi(StyleUnicodeBidi::Normal),
mInitialLetterSink(0),
mInitialLetterSize(0.0f),
mTextDecorationColor(StyleColor::CurrentColor()),

View file

@ -919,9 +919,9 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleTextReset {
mozilla::StyleTextDecorationLine mTextDecorationLine;
uint8_t mTextDecorationStyle; // NS_STYLE_TEXT_DECORATION_STYLE_*
uint8_t mUnicodeBidi; // NS_STYLE_UNICODE_BIDI_*
nscoord mInitialLetterSink; // 0 means normal
float mInitialLetterSize; // 0.0f means normal
mozilla::StyleUnicodeBidi mUnicodeBidi;
nscoord mInitialLetterSink; // 0 means normal
float mInitialLetterSize; // 0.0f means normal
mozilla::StyleColor mTextDecorationColor;
mozilla::StyleTextDecorationLength mTextDecorationThickness;
};

View file

@ -22,6 +22,7 @@ ${helpers.single_keyword(
"unicode-bidi",
"normal embed isolate bidi-override isolate-override plaintext",
engines="gecko servo-2013",
gecko_enum_prefix="StyleUnicodeBidi",
animation_value_type="none",
spec="https://drafts.csswg.org/css-writing-modes/#propdef-unicode-bidi",
servo_restyle_damage="rebuild_and_reflow",