mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
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:
parent
bb06ed7206
commit
b420293a57
3 changed files with 149 additions and 154 deletions
|
@ -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)))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue