mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 07:18: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
|
|
@ -74,6 +74,30 @@ NS_NewComputedDOMStyle(dom::Element* aElement, const nsAString& aPseudoElt,
|
|||
return computedStyle.forget();
|
||||
}
|
||||
|
||||
static nsDOMCSSValueList*
|
||||
GetROCSSValueList(bool aCommaDelimited)
|
||||
{
|
||||
return new nsDOMCSSValueList(aCommaDelimited, true);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
already_AddRefed<CSSValue>
|
||||
GetBackgroundList(T nsStyleImageLayers::Layer::* aMember,
|
||||
uint32_t nsStyleImageLayers::* aCount,
|
||||
const nsStyleImageLayers& aLayers,
|
||||
const KTableEntry aTable[])
|
||||
{
|
||||
RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
|
||||
|
||||
for (uint32_t i = 0, i_end = aLayers.*aCount; i < i_end; ++i) {
|
||||
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
|
||||
val->SetIdent(nsCSSProps::ValueToKeywordEnum(aLayers.mLayers[i].*aMember, aTable));
|
||||
valueList->AppendCSSValue(val.forget());
|
||||
}
|
||||
|
||||
return valueList.forget();
|
||||
}
|
||||
|
||||
/**
|
||||
* An object that represents the ordered set of properties that are exposed on
|
||||
* an nsComputedDOMStyle object and how their computed values can be obtained.
|
||||
|
|
@ -1801,24 +1825,6 @@ nsComputedDOMStyle::DoGetFontVariantPosition()
|
|||
return val.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<CSSValue>
|
||||
nsComputedDOMStyle::GetBackgroundList(uint8_t nsStyleImageLayers::Layer::* aMember,
|
||||
uint32_t nsStyleImageLayers::* aCount,
|
||||
const nsStyleImageLayers& aLayers,
|
||||
const KTableEntry aTable[])
|
||||
{
|
||||
RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
|
||||
|
||||
for (uint32_t i = 0, i_end = aLayers.*aCount; i < i_end; ++i) {
|
||||
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
|
||||
val->SetIdent(nsCSSProps::ValueToKeywordEnum(aLayers.mLayers[i].*aMember,
|
||||
aTable));
|
||||
valueList->AppendCSSValue(val.forget());
|
||||
}
|
||||
|
||||
return valueList.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<CSSValue>
|
||||
nsComputedDOMStyle::DoGetBackgroundAttachment()
|
||||
{
|
||||
|
|
@ -2366,7 +2372,7 @@ nsComputedDOMStyle::DoGetBackgroundOrigin()
|
|||
return GetBackgroundList(&nsStyleImageLayers::Layer::mOrigin,
|
||||
&nsStyleImageLayers::mOriginCount,
|
||||
StyleBackground()->mImage,
|
||||
nsCSSProps::kImageLayerOriginKTable);
|
||||
nsCSSProps::kBackgroundOriginKTable);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -5012,12 +5018,6 @@ nsComputedDOMStyle::DoGetTop()
|
|||
return GetOffsetWidthFor(NS_SIDE_TOP);
|
||||
}
|
||||
|
||||
nsDOMCSSValueList*
|
||||
nsComputedDOMStyle::GetROCSSValueList(bool aCommaDelimited)
|
||||
{
|
||||
return new nsDOMCSSValueList(aCommaDelimited, true);
|
||||
}
|
||||
|
||||
already_AddRefed<CSSValue>
|
||||
nsComputedDOMStyle::GetOffsetWidthFor(mozilla::css::Side aSide)
|
||||
{
|
||||
|
|
@ -6179,8 +6179,8 @@ nsComputedDOMStyle::DoGetMask()
|
|||
// need to support computed style for the cases where it used to be
|
||||
// a longhand.
|
||||
if (svg->mMask.mImageCount > 1 ||
|
||||
firstLayer.mClip != NS_STYLE_IMAGELAYER_CLIP_BORDER ||
|
||||
firstLayer.mOrigin != NS_STYLE_IMAGELAYER_ORIGIN_BORDER ||
|
||||
firstLayer.mClip != StyleGeometryBox::Border ||
|
||||
firstLayer.mOrigin != StyleGeometryBox::Border ||
|
||||
firstLayer.mComposite != NS_STYLE_MASK_COMPOSITE_ADD ||
|
||||
firstLayer.mMaskMode != NS_STYLE_MASK_MODE_MATCH_SOURCE ||
|
||||
!nsStyleImageLayers::IsInitialPositionForLayerType(
|
||||
|
|
@ -6199,14 +6199,13 @@ nsComputedDOMStyle::DoGetMask()
|
|||
return val.forget();
|
||||
}
|
||||
|
||||
#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
|
||||
already_AddRefed<CSSValue>
|
||||
nsComputedDOMStyle::DoGetMaskClip()
|
||||
{
|
||||
return GetBackgroundList(&nsStyleImageLayers::Layer::mClip,
|
||||
&nsStyleImageLayers::mClipCount,
|
||||
StyleSVGReset()->mMask,
|
||||
nsCSSProps::kImageLayerOriginKTable);
|
||||
nsCSSProps::kMaskClipKTable);
|
||||
}
|
||||
|
||||
already_AddRefed<CSSValue>
|
||||
|
|
@ -6240,7 +6239,7 @@ nsComputedDOMStyle::DoGetMaskOrigin()
|
|||
return GetBackgroundList(&nsStyleImageLayers::Layer::mOrigin,
|
||||
&nsStyleImageLayers::mOriginCount,
|
||||
StyleSVGReset()->mMask,
|
||||
nsCSSProps::kImageLayerOriginKTable);
|
||||
nsCSSProps::kMaskOriginKTable);
|
||||
}
|
||||
|
||||
already_AddRefed<CSSValue>
|
||||
|
|
@ -6277,7 +6276,6 @@ nsComputedDOMStyle::DoGetMaskSize()
|
|||
const nsStyleImageLayers& layers = StyleSVGReset()->mMask;
|
||||
return DoGetImageLayerSize(layers);
|
||||
}
|
||||
#endif
|
||||
|
||||
already_AddRefed<CSSValue>
|
||||
nsComputedDOMStyle::DoGetMaskType()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue