Bug 1286150 - Part 1: Simplify AddTransformTranslate and reuse AddCSSValuePixelPercentCalc. r=hiro

Two things in this patch:
1. Move AddCSSValuePixelPercentCalc to the position above AddTransformTranslate.
2. Simplify AddTransformTranslate, i.e. re-use the same switch case of
   AddCSSValuePixelPercentCalc.

MozReview-Commit-ID: BMEpkOHDoaT

--HG--
extra : rebase_source : 591da977266c5be01fdb5f27aa11e26f94fc6060
This commit is contained in:
Boris Chiou 2016-10-14 15:22:45 +08:00
parent 11a3ebddba
commit 360bd35d49

View File

@ -604,30 +604,59 @@ AddCSSValuePixel(double aCoeff1, const nsCSSValue &aValue1,
eCSSUnit_Pixel);
}
static bool
AddCSSValuePixelPercentCalc(const uint32_t aValueRestrictions,
const nsCSSUnit aCommonUnit,
double aCoeff1, const nsCSSValue &aValue1,
double aCoeff2, const nsCSSValue &aValue2,
nsCSSValue &aResult)
{
switch (aCommonUnit) {
case eCSSUnit_Pixel:
AddCSSValuePixel(aCoeff1, aValue1,
aCoeff2, aValue2,
aResult, aValueRestrictions);
break;
case eCSSUnit_Percent:
AddCSSValuePercent(aCoeff1, aValue1,
aCoeff2, aValue2,
aResult, aValueRestrictions);
break;
case eCSSUnit_Calc:
AddCSSValueCanonicalCalc(aCoeff1, aValue1,
aCoeff2, aValue2,
aResult);
break;
default:
return false;
}
return true;
}
static void
AddTransformTranslate(double aCoeff1, const nsCSSValue &aValue1,
double aCoeff2, const nsCSSValue &aValue2,
nsCSSValue &aResult)
{
// Only three possible units: eCSSUnit_Pixel, eCSSUnit_Percent, or
// eCSSUnit_Calc.
MOZ_ASSERT(aValue1.GetUnit() == eCSSUnit_Percent ||
aValue1.GetUnit() == eCSSUnit_Pixel ||
aValue1.IsCalcUnit(),
"unexpected unit");
aValue1.IsCalcUnit(),
"unexpected unit");
MOZ_ASSERT(aValue2.GetUnit() == eCSSUnit_Percent ||
aValue2.GetUnit() == eCSSUnit_Pixel ||
aValue2.IsCalcUnit(),
"unexpected unit");
if (aValue1.GetUnit() != aValue2.GetUnit() || aValue1.IsCalcUnit()) {
// different units; create a calc() expression
AddCSSValueCanonicalCalc(aCoeff1, aValue1, aCoeff2, aValue2, aResult);
} else if (aValue1.GetUnit() == eCSSUnit_Percent) {
// both percent
AddCSSValuePercent(aCoeff1, aValue1, aCoeff2, aValue2, aResult);
} else {
// both pixels
AddCSSValuePixel(aCoeff1, aValue1, aCoeff2, aValue2, aResult);
}
AddCSSValuePixelPercentCalc(0,
(aValue1.GetUnit() != aValue2.GetUnit() ||
aValue1.IsCalcUnit())
? eCSSUnit_Calc
: aValue1.GetUnit(),
aCoeff1, aValue1,
aCoeff2, aValue2,
aResult);
}
// CLASS METHODS
@ -1541,36 +1570,6 @@ AddCSSValueNumber(double aCoeff1, const nsCSSValue &aValue1,
eCSSUnit_Number);
}
static bool
AddCSSValuePixelPercentCalc(const uint32_t aValueRestrictions,
const nsCSSUnit aCommonUnit,
double aCoeff1, const nsCSSValue &aValue1,
double aCoeff2, const nsCSSValue &aValue2,
nsCSSValue &aResult)
{
switch (aCommonUnit) {
case eCSSUnit_Pixel:
AddCSSValuePixel(aCoeff1, aValue1,
aCoeff2, aValue2,
aResult, aValueRestrictions);
break;
case eCSSUnit_Percent:
AddCSSValuePercent(aCoeff1, aValue1,
aCoeff2, aValue2,
aResult, aValueRestrictions);
break;
case eCSSUnit_Calc:
AddCSSValueCanonicalCalc(aCoeff1, aValue1,
aCoeff2, aValue2,
aResult);
break;
default:
return false;
}
return true;
}
static inline float
GetNumberOrPercent(const nsCSSValue &aValue)
{