style: Treat 3d translate/scale as 2d if the value can be expressed as 2d.

For the individual transform properties if they spec a value that can be
expressed as 2d we treat as 2d and serialize accordingly.

We drop Translate::Translate and Scale::Scale, and then rename
Translate::Translate3D as Translate::Translate, Scale::Scale3D as
Scale::Scale. So now we use Translate::Translate to represent 2d and 3d
translation, and Scale::Scale to represent 2d and 3d scale. There is no
difference between 2d and 3d translate/scale in Gecko because we always
convert them into 3d format to layers (on the compositor thread), so this
change makes things simpler.

Differential Revision: https://phabricator.services.mozilla.com/D52931
This commit is contained in:
Boris Chiou 2019-11-15 19:38:24 +00:00 committed by Emilio Cobos Álvarez
parent bb06ed7206
commit b420293a57
No known key found for this signature in database
GPG key ID: E1152D0994E4BF8A
3 changed files with 149 additions and 154 deletions

View file

@ -421,17 +421,22 @@ impl Parse for Translate {
if let Ok(ty) = input.try(|i| specified::LengthPercentage::parse(context, i)) {
if let Ok(tz) = input.try(|i| specified::Length::parse(context, i)) {
// 'translate: <length-percentage> <length-percentage> <length>'
return Ok(generic::Translate::Translate3D(tx, ty, tz));
return Ok(generic::Translate::Translate(tx, ty, tz));
}
// translate: <length-percentage> <length-percentage>'
return Ok(generic::Translate::Translate(tx, ty));
return Ok(generic::Translate::Translate(
tx,
ty,
specified::Length::zero(),
));
}
// 'translate: <length-percentage> '
Ok(generic::Translate::Translate(
tx,
specified::LengthPercentage::zero(),
specified::Length::zero(),
))
}
}
@ -452,14 +457,14 @@ impl Parse for Scale {
if let Ok(sy) = input.try(|i| Number::parse(context, i)) {
if let Ok(sz) = input.try(|i| Number::parse(context, i)) {
// 'scale: <number> <number> <number>'
return Ok(generic::Scale::Scale3D(sx, sy, sz));
return Ok(generic::Scale::Scale(sx, sy, sz));
}
// 'scale: <number> <number>'
return Ok(generic::Scale::Scale(sx, sy));
return Ok(generic::Scale::Scale(sx, sy, Number::new(1.0)));
}
// 'scale: <number>'
Ok(generic::Scale::Scale(sx, sx))
Ok(generic::Scale::Scale(sx, sx, Number::new(1.0)))
}
}