mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 19:25:43 +00:00
Bug 1216843 - Part 12: Factor out AddWeightedFilterList. r=dholbert
MozReview-Commit-ID: 6PwAFJ2pia0
This commit is contained in:
parent
ec0fb59bd2
commit
1ca91ac957
@ -2427,6 +2427,41 @@ AddWeightedShadowList(double aCoeff1,
|
||||
return result;
|
||||
}
|
||||
|
||||
static UniquePtr<nsCSSValueList>
|
||||
AddWeightedFilterList(double aCoeff1, const nsCSSValueList* aList1,
|
||||
double aCoeff2, const nsCSSValueList* aList2)
|
||||
{
|
||||
UniquePtr<nsCSSValueList> result;
|
||||
nsCSSValueList* tail = nullptr;
|
||||
while (aList1 || aList2) {
|
||||
if ((aList1 && aList1->mValue.GetUnit() != eCSSUnit_Function) ||
|
||||
(aList2 && aList2->mValue.GetUnit() != eCSSUnit_Function)) {
|
||||
// If we don't have filter-functions, we must have filter-URLs, which
|
||||
// we can't add or interpolate.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
UniquePtr<nsCSSValueList> resultFunction =
|
||||
AddWeightedFilterFunction(aCoeff1, aList1, aCoeff2, aList2);
|
||||
if (!resultFunction) {
|
||||
// filter function mismatch
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
AppendToCSSValueList(result, Move(resultFunction), &tail);
|
||||
|
||||
// move to next aList items
|
||||
if (aList1) {
|
||||
aList1 = aList1->mNext;
|
||||
}
|
||||
if (aList2) {
|
||||
aList2 = aList2->mNext;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
StyleAnimationValue::AddWeighted(nsCSSPropertyID aProperty,
|
||||
double aCoeff1,
|
||||
@ -2749,35 +2784,11 @@ StyleAnimationValue::AddWeighted(nsCSSPropertyID aProperty,
|
||||
return true;
|
||||
}
|
||||
case eUnit_Filter: {
|
||||
const nsCSSValueList *list1 = aValue1.GetCSSValueListValue();
|
||||
const nsCSSValueList *list2 = aValue2.GetCSSValueListValue();
|
||||
|
||||
UniquePtr<nsCSSValueList> result;
|
||||
nsCSSValueList* tail = nullptr;
|
||||
while (list1 || list2) {
|
||||
if ((list1 && list1->mValue.GetUnit() != eCSSUnit_Function) ||
|
||||
(list2 && list2->mValue.GetUnit() != eCSSUnit_Function)) {
|
||||
// If we don't have filter-functions, we must have filter-URLs, which
|
||||
// we can't add or interpolate.
|
||||
return false;
|
||||
}
|
||||
|
||||
UniquePtr<nsCSSValueList> resultFunction =
|
||||
AddWeightedFilterFunction(aCoeff1, list1, aCoeff2, list2);
|
||||
if (!resultFunction) {
|
||||
// filter function mismatch
|
||||
return false;
|
||||
}
|
||||
|
||||
AppendToCSSValueList(result, Move(resultFunction), &tail);
|
||||
|
||||
// move to next list items
|
||||
if (list1) {
|
||||
list1 = list1->mNext;
|
||||
}
|
||||
if (list2) {
|
||||
list2 = list2->mNext;
|
||||
}
|
||||
UniquePtr<nsCSSValueList> result =
|
||||
AddWeightedFilterList(aCoeff1, aValue1.GetCSSValueListValue(),
|
||||
aCoeff2, aValue2.GetCSSValueListValue());
|
||||
if (!result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
aResultValue.SetAndAdoptCSSValueListValue(result.release(),
|
||||
|
Loading…
Reference in New Issue
Block a user