mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 16:28:38 +09:00
Issue #2489: ColorMixValue support and structure
This commit is contained in:
parent
055a685c2e
commit
7800eb0126
1 changed files with 40 additions and 0 deletions
|
|
@ -166,6 +166,10 @@ nsCSSValue::nsCSSValue(const nsCSSValue& aCopy)
|
|||
mValue.mComplexColor = aCopy.mValue.mComplexColor;
|
||||
mValue.mComplexColor->AddRef();
|
||||
}
|
||||
else if (eCSSUnit_ColorMix == mUnit) {
|
||||
mValue.mColorMix = aCopy.mValue.mColorMix;
|
||||
mValue.mColorMix->AddRef();
|
||||
}
|
||||
else if (eCSSUnit_Revert == mUnit) {
|
||||
mValue.mCascadeOrigin = aCopy.mValue.mCascadeOrigin;
|
||||
}
|
||||
|
|
@ -282,6 +286,14 @@ bool nsCSSValue::operator==(const nsCSSValue& aOther) const
|
|||
else if (eCSSUnit_ComplexColor == mUnit) {
|
||||
return *mValue.mComplexColor == *aOther.mValue.mComplexColor;
|
||||
}
|
||||
else if (eCSSUnit_ColorMix == mUnit) {
|
||||
return mValue.mColorMix == aOther.mValue.mColorMix ||
|
||||
(mValue.mColorMix->mColorSpace == aOther.mValue.mColorMix->mColorSpace &&
|
||||
mValue.mColorMix->mColor1 == aOther.mValue.mColorMix->mColor1 &&
|
||||
mValue.mColorMix->mColor2 == aOther.mValue.mColorMix->mColor2 &&
|
||||
mValue.mColorMix->mWeight1 == aOther.mValue.mColorMix->mWeight1 &&
|
||||
mValue.mColorMix->mWeight2 == aOther.mValue.mColorMix->mWeight2);
|
||||
}
|
||||
else if (eCSSUnit_Revert == mUnit) {
|
||||
return mValue.mCascadeOrigin == aOther.mValue.mCascadeOrigin;
|
||||
}
|
||||
|
|
@ -421,6 +433,8 @@ void nsCSSValue::DoReset()
|
|||
mValue.mFloatColor->Release();
|
||||
} else if (eCSSUnit_ComplexColor == mUnit) {
|
||||
mValue.mComplexColor->Release();
|
||||
} else if (eCSSUnit_ColorMix == mUnit) {
|
||||
mValue.mColorMix->Release();
|
||||
} else if (UnitHasArrayValue()) {
|
||||
mValue.mArray->Release();
|
||||
} else if (eCSSUnit_URL == mUnit) {
|
||||
|
|
@ -545,6 +559,14 @@ nsCSSValue::SetComplexColorValue(already_AddRefed<ComplexColorValue> aValue)
|
|||
mValue.mComplexColor = aValue.take();
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSValue::SetColorMixValue(already_AddRefed<ColorMixValue> aValue)
|
||||
{
|
||||
Reset();
|
||||
mUnit = eCSSUnit_ColorMix;
|
||||
mValue.mColorMix = aValue.take();
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSValue::SetCascadeOriginValue(mozilla::SheetType aValue, nsCSSUnit aUnit)
|
||||
{
|
||||
|
|
@ -2007,6 +2029,7 @@ nsCSSValue::AppendToString(nsCSSPropertyID aProperty, nsAString& aResult,
|
|||
case eCSSUnit_HSLColor: break;
|
||||
case eCSSUnit_HSLAColor: break;
|
||||
case eCSSUnit_ComplexColor: break;
|
||||
case eCSSUnit_ColorMix: break;
|
||||
case eCSSUnit_Percent: aResult.Append(char16_t('%')); break;
|
||||
case eCSSUnit_Number: break;
|
||||
case eCSSUnit_Gradient: break;
|
||||
|
|
@ -2221,6 +2244,11 @@ nsCSSValue::SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
|
|||
n += mValue.mComplexColor->SizeOfIncludingThis(aMallocSizeOf);
|
||||
break;
|
||||
|
||||
// Color Mix
|
||||
case eCSSUnit_ColorMix:
|
||||
n += mValue.mColorMix->SizeOfIncludingThis(aMallocSizeOf);
|
||||
break;
|
||||
|
||||
// Cascade Origin: nothing extra to measure.
|
||||
case eCSSUnit_Revert:
|
||||
break;
|
||||
|
|
@ -3075,6 +3103,18 @@ css::ComplexColorValue::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
|||
return n;
|
||||
}
|
||||
|
||||
size_t
|
||||
css::ColorMixValue::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
{
|
||||
// Only measure it if it's unshared, to avoid double-counting.
|
||||
size_t n = 0;
|
||||
if (mRefCnt <= 1) {
|
||||
n += aMallocSizeOf(this);
|
||||
n += mColor1.SizeOfExcludingThis(aMallocSizeOf);
|
||||
n += mColor2.SizeOfExcludingThis(aMallocSizeOf);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
nsCSSValueGradientStop::nsCSSValueGradientStop()
|
||||
: mLocation(eCSSUnit_None),
|
||||
mColor(eCSSUnit_Null),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue