This follows from the previous patch; these values feed into UpdateMinMaxScale
as well, which explicitly wants to use floats, so there's no point in creating
doubles. The source of this information is also a float-based matrix.
MozReview-Commit-ID: LPk4Xm9AaJJ
--HG--
extra : rebase_source : d7714755fb1078880133d6f044cc9bc7743439ee
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py
For every file that is modified in this patch, the changes are as follows:
(1) The patch changes the file to use the exact C++ mode lines from the
Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line
(2) The patch deletes any blank lines between the mode line & the MPL
boilerplate comment.
(3) If the file previously had the mode lines and MPL boilerplate in a
single contiguous C++ comment, then the patch splits them into
separate C++ comments, to match the boilerplate in the coding style.
MozReview-Commit-ID: EuRsDue63tK
--HG--
extra : rebase_source : 3356d4b80ff6213935192e87cdbc9103fec6084c
According to the spec, if one of the matrices for transform interpolation is
non-invertible, the used animation function must fall-back to a discrete
animation. However, in the current implementation, we always use an identity
matrix as a fallback for the non-invertible matrix.
Decompose2DMatrix and Decompose3DMatrix both return a boolean, but we just
never use it. So, in this patch, we use the returned boolean from the matrix
decomposition as a condition, and do the fallback discrete procedure for the
non-invertible matrices case.
MozReview-Commit-ID: E7i1a1MJOXN
--HG--
extra : rebase_source : 3dc9b777793dd783cd5e1c4ff750b6f8db0d2185
The unit of nsCSSValue is always number/pixel/percent or eCSSUnit_Calc,
so we don't need the style context for Servo backend.
Besides, ReadTransform is a public API used in many places, so we keep
its argument type as nsStyleContext.
MozReview-Commit-ID: KLdrJ5BJXg8
--HG--
extra : rebase_source : 778ca38b06e2a13d3db0465b9e74bd0c33c62a88
Use Servo backend to decompose/interpolate/recompose matrices on both
main thread and compositor thread.
Note: Due there may be differences in precision used to represent the
components, and the computation of matrix interpolation are not
exactly same (still following the formulas in spec). There are some
tiny differences between the interpolation results of 2d/3d
matrices on Gecko and Servo, especially if there is skew() or any 3d
transform function.
MozReview-Commit-ID: 6T8vlR4MJGr
--HG--
extra : rebase_source : 3309f4a4541c6612109a441c38bb896deb83c018
We create interpolatematrix and accumulatematrix from Servo side
not on the main thread, so we cannot use nsCSSValueList_heap (which is not
thread safe so we cannot create it and destroy it on different threads).
Therefore, we use nsCSSValueSharedList to represent the cloned lists in
interpolatematrix and accumulatematrix.
MozReview-Commit-ID: L5WBKHwsrUz
--HG--
extra : rebase_source : af6e7700cfa93e6a27454aeebd3088ba32265fed
This change is to use gecko_enum_prefix in helpers.mako.rs, so that we do not
need to manually write code for nsStyleDisplay::mTransformBox.
MozReview-Commit-ID: 7UAL0iUcSIO
--HG--
extra : rebase_source : e99b7c163991df7ef3e7c0404fcef1832718a150
Move the common part of GetScaleValue into nsStyleTransformMatrix, and add a
new method, GetScaleValue, on AnimationValue, which can get the scale value from
StyleAnimationValue or RawServoAnimationValue.
MozReview-Commit-ID: 4spi1LkZrWP
--HG--
extra : rebase_source : 81e352edb85c9abb16fb0ef2780ff27c4f264709
To avoid exposing the template ProcessInterpolateMatrix is left because it is
used in AddTransformFunctions in nsDisplayList.cpp.
MozReview-Commit-ID: D9KW7du5j04
--HG--
extra : rebase_source : afec2823ac615598ec965571f465ca2c6420a3cc
Decompose the 2d/3d matrix and calculate the Euclidean distance of
translate, scale, skew, quaternion, and perspective vectors.
MozReview-Commit-ID: 5nX9EeqvZi9
--HG--
extra : rebase_source : a15f2e4350e5c097eee8856a76244a81d589427a
Move Decompose2DMatrix and Decompose3DMatrix into nsStyleTransformMatrix
and remove some trailing spaces.
Both AddWeighted and ComputeDistance need Decompose2DMatrix and
Decompose3DMatrix on transform property, and both decomposition functions are
related to nsStyleTransformMatrix, so we move them into nsStyleTransformMatrix
to make StyleAnimationValue more concise.
MozReview-Commit-ID: 5aVK7971rDD
--HG--
extra : rebase_source : 75823b96a165ef65e3edfb00978b706d9db09393
Reuse AddTransformLists to get the identity transform functions to
replace none, and then treat them with another transform list as two matched
ones.
MozReview-Commit-ID: HwdBPCiUivg
--HG--
extra : rebase_source : 552ff668e2ac19dbfcfe2a37894b278f699f0c0b
This patch also moves the static methods defined on nsStyleAnimation so that
they are part of StyleAnimationValue class.
Renaming nsStyleAnimation.h to StyleAnimationValue.h is performed in a separate
patch to simplify the diff (since some tools may not handle file renames
elegantly).