mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 15:28:39 +09:00
issue #908 - implement missing parts of CSS mask
This commit is contained in:
parent
7b5e5f85de
commit
b5376e63c5
28 changed files with 574 additions and 449 deletions
|
|
@ -12005,7 +12005,6 @@ CSSParserImpl::ParsePropertyByFunction(nsCSSPropertyID aPropID)
|
|||
return ParsePaintOrder();
|
||||
case eCSSProperty_scroll_snap_type:
|
||||
return ParseScrollSnapType();
|
||||
#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
|
||||
case eCSSProperty_mask:
|
||||
return ParseImageLayers(nsStyleImageLayers::kMaskLayerTable);
|
||||
case eCSSProperty_mask_repeat:
|
||||
|
|
@ -12018,7 +12017,6 @@ CSSParserImpl::ParsePropertyByFunction(nsCSSPropertyID aPropID)
|
|||
aPropID == eCSSProperty_mask_position_x);
|
||||
case eCSSProperty_mask_size:
|
||||
return ParseImageLayerSize(eCSSProperty_mask_size);
|
||||
#endif
|
||||
case eCSSProperty__webkit_text_stroke:
|
||||
return ParseWebkitTextStroke();
|
||||
case eCSSProperty_all:
|
||||
|
|
@ -12424,7 +12422,7 @@ CSSParserImpl::ParseImageLayersItem(
|
|||
aState.mImage->mValue.SetNoneValue();
|
||||
aState.mAttachment->mValue.SetIntValue(NS_STYLE_IMAGELAYER_ATTACHMENT_SCROLL,
|
||||
eCSSUnit_Enumerated);
|
||||
aState.mClip->mValue.SetIntValue(NS_STYLE_IMAGELAYER_CLIP_BORDER,
|
||||
aState.mClip->mValue.SetIntValue(StyleGeometryBox::Border,
|
||||
eCSSUnit_Enumerated);
|
||||
|
||||
aState.mRepeat->mXValue.SetIntValue(NS_STYLE_IMAGELAYER_REPEAT_REPEAT,
|
||||
|
|
@ -12437,10 +12435,10 @@ CSSParserImpl::ParseImageLayersItem(
|
|||
aState.mPositionY->mValue.SetArrayValue(positionYArr, eCSSUnit_Array);
|
||||
|
||||
if (eCSSProperty_mask == aTable[nsStyleImageLayers::shorthand]) {
|
||||
aState.mOrigin->mValue.SetIntValue(NS_STYLE_IMAGELAYER_ORIGIN_BORDER,
|
||||
aState.mOrigin->mValue.SetIntValue(StyleGeometryBox::Border,
|
||||
eCSSUnit_Enumerated);
|
||||
} else {
|
||||
aState.mOrigin->mValue.SetIntValue(NS_STYLE_IMAGELAYER_ORIGIN_PADDING,
|
||||
aState.mOrigin->mValue.SetIntValue(StyleGeometryBox::Padding,
|
||||
eCSSUnit_Enumerated);
|
||||
}
|
||||
positionXArr->Item(1).SetPercentValue(0.0f);
|
||||
|
|
@ -12462,6 +12460,8 @@ CSSParserImpl::ParseImageLayersItem(
|
|||
haveMode = false,
|
||||
haveSomething = false;
|
||||
|
||||
const KTableEntry* originTable =
|
||||
nsCSSProps::kKeywordTableTable[aTable[nsStyleImageLayers::origin]];
|
||||
while (GetToken(true)) {
|
||||
nsCSSTokenType tt = mToken.mType;
|
||||
UngetToken(); // ...but we'll still cheat and use mToken
|
||||
|
|
@ -12531,8 +12531,7 @@ CSSParserImpl::ParseImageLayersItem(
|
|||
aState.mSize->mXValue = scratch.mXValue;
|
||||
aState.mSize->mYValue = scratch.mYValue;
|
||||
}
|
||||
} else if (nsCSSProps::FindKeyword(keyword,
|
||||
nsCSSProps::kImageLayerOriginKTable, dummy)) {
|
||||
} else if (nsCSSProps::FindKeyword(keyword, originTable, dummy)) {
|
||||
if (haveOrigin)
|
||||
return false;
|
||||
haveOrigin = true;
|
||||
|
|
@ -12547,23 +12546,15 @@ CSSParserImpl::ParseImageLayersItem(
|
|||
// immediately following the first one (for background-origin).
|
||||
|
||||
#ifdef DEBUG
|
||||
for (size_t i = 0; nsCSSProps::kImageLayerOriginKTable[i].mValue != -1; i++) {
|
||||
const KTableEntry* clipTable =
|
||||
nsCSSProps::kKeywordTableTable[aTable[nsStyleImageLayers::clip]];
|
||||
for (size_t i = 0; originTable[i].mValue != -1; i++) {
|
||||
// For each keyword & value in kOriginKTable, ensure that
|
||||
// kBackgroundKTable has a matching entry at the same position.
|
||||
MOZ_ASSERT(nsCSSProps::kImageLayerOriginKTable[i].mKeyword ==
|
||||
nsCSSProps::kBackgroundClipKTable[i].mKeyword);
|
||||
MOZ_ASSERT(nsCSSProps::kImageLayerOriginKTable[i].mValue ==
|
||||
nsCSSProps::kBackgroundClipKTable[i].mValue);
|
||||
MOZ_ASSERT(originTable[i].mKeyword == clipTable[i].mKeyword);
|
||||
MOZ_ASSERT(originTable[i].mValue == clipTable[i].mValue);
|
||||
}
|
||||
#endif
|
||||
static_assert(NS_STYLE_IMAGELAYER_CLIP_BORDER ==
|
||||
NS_STYLE_IMAGELAYER_ORIGIN_BORDER &&
|
||||
NS_STYLE_IMAGELAYER_CLIP_PADDING ==
|
||||
NS_STYLE_IMAGELAYER_ORIGIN_PADDING &&
|
||||
NS_STYLE_IMAGELAYER_CLIP_CONTENT ==
|
||||
NS_STYLE_IMAGELAYER_ORIGIN_CONTENT,
|
||||
"bg-clip and bg-origin style constants must agree");
|
||||
|
||||
CSSParseResult result =
|
||||
ParseSingleValueProperty(aState.mClip->mValue,
|
||||
aTable[nsStyleImageLayers::clip]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue