Commit Graph

105 Commits

Author SHA1 Message Date
Miko Mynttinen
c9202e2933 Bug 1477260 - Clip the rect in Matrix4x4TypedFlagged::TransformAndClipBounds, when transform is an identity matrix r=bas
MozReview-Commit-ID: 3a8vnl3K87n

--HG--
extra : rebase_source : b4bdd2b14e10becee20007e453497e9d7a204097
2018-07-20 17:28:37 +02:00
Boris Chiou
ffa1da7545 Bug 1467277 - Avoid getting zero normalized vector of rotate3d when setting a rotate matrix. r=nical
For example, if we set a transform to rotate3d(0, 0, 1e50, 45deg), the
expected normalized rotate axis is (0, 0, 1).
However, the length is larger than the maximum of float, so the actual value is
(0/inf, 0/inf, 1e50/inf) == (0, 0, 0). Therefore, we scale the vector before
doing normalization to avoid getting a zero vector.

MozReview-Commit-ID: 5LUDWD4RuNj

--HG--
extra : rebase_source : eb82f0b3979bf6ea3cd11b643ebb30a49edc24f8
2018-07-05 15:40:39 -07:00
Hiroyuki Ikezoe
5c588a8653 Bug 1464627 - Fix the spec link to 3D rotation matrix. r=emilio DONTBUILD
MozReview-Commit-ID: F5P4pCvD0Ww

--HG--
extra : rebase_source : 8c97814986517b81affa39c3be06e18427d1e4e8
2018-05-27 09:55:06 +09:00
Sebastian Hengst
0819f35e51 Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
Tristan Bourvon
a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Jeff Muizelaar
e81d471371 Bug 1440702. Add equality operators to Matrix4x4Flagged. r=Bas
This adds a naive implementation of equality. We can do better
in the future by looking at the flags.

MozReview-Commit-ID: K4xdfCmvvb9
2018-03-16 16:42:03 -04:00
Bas Schouten
051f79e412 Bug 1437492 - Part 1: Add a Matrix class with optimizations for simple matrices. r=mattwoodrow
MozReview-Commit-ID: EVrgqE0VlwM
2018-02-17 00:43:36 +01:00
Ryan Hunt
0b29c49678 Remove implicit fuzzy operator== from BaseMatrix (bug 1435406, r=mattwoodrow)
--HG--
extra : rebase_source : 2635f386b96644922a345cea3a8fca6e3614253f
extra : histedit_source : b7cc3424492f88cbd32f3f945c5af86ff43ca0d0
2018-02-02 15:14:08 -06:00
Milan Sreckovic
099cfc4242 Bug 1423570: Use BaseRect access methods instead of member variables in gfx/ r=bas.schouten
MozReview-Commit-ID: ZGySgc9oP3

--HG--
extra : rebase_source : 23aadc10e9885002290155684b2c495780d979ce
2017-12-19 15:48:39 -05:00
Kearwood "Kip" Gilbert
ccc6462307 Bug 1410493 - Update Oculus SDK from 1.5 to 1.9, update IPD during VR presentation r=daoshengmu
- Oculus SDK was updated from 1.5 to 1.9
- As the Oculus API now returns quaternion orientations for each
  eye-to-head transform, I needed to send more information to the
  content process.
- Rather than adding the quaternion, we now calculate the view matrices
  on the VR thread in the GPU process rather than calculating it in the
  content thread from parameters.
- OpenVR's full view matrix is now used, for compatibility with more devices.
- IPD adjustments are now updated every frame for both Oculus and OpenVR.


MozReview-Commit-ID: LOtfs4QIqc8

--HG--
extra : rebase_source : 0a69824012ede4bea0e0e709a2d027d0c35730bb
2017-10-23 14:23:03 -07:00
Daniel Holbert
126bd9e1a4 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
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: 77D61xpSmIl

--HG--
extra : rebase_source : c6162fa3cf539a07177a19838324bf368faa162b
2017-10-27 16:10:06 -07:00
Kartikaya Gupta
0df03f07af Bug 1377169 - Copy some useful functions from gfxRect into other places. r=jrmuizel
These functions need to survive the gfxRect purge as they are used in a
few places.

MozReview-Commit-ID: 1jGNlmAvV49

--HG--
extra : rebase_source : 0becc3b969063b5797502a3414dfd6573e82eee0
2017-07-05 11:21:58 -04:00
Kartikaya Gupta
8609d33dec Bug 1377090 - Further generify the Matrix class and define MatrixDouble. r=bas
To allow MatrixDouble to be a drop-in replacement for gfxMatrix, it
needs to accept the "double" versions of Point, Rect, and Size. This
patch does that by adding some extra typedefs inside BaseMatrix to
abstract over that.

It also moves some function implementations into the .h file as they
don't need specialization. I left some function implementations in
the Matrix.cpp file:
- Rotation, because it is specialized for Float and Double, since it uses
  sinf/cosf vs sin/cos in the two implementations.
- The Matrix4x4 multiplication operator overload, because if I put it
  inside the BaseMatrix class declaration Matrix4x4 isn't defined yet
  and the compiler doesn't like it.

MozReview-Commit-ID: K56dZjJhXWS

--HG--
extra : rebase_source : d009151942811a725ee6bf854238073e59665d5c
2017-07-05 11:18:49 -04:00
Kartikaya Gupta
1c54bb2347 Bug 1377090 - Make the Matrix class templated so we can instantiate it with a double type. r=bas
This extracts a BaseMatrix template of which Matrix is now a particular
specialization. The BaseMatrix allows us to reuse the same code for
floats and doubles, much like the other "base" classes (BasePoint,
BaseRect, etc.).

MozReview-Commit-ID: HO7bA83S9E0

--HG--
extra : rebase_source : dcd84d9a978cdea00bb54eb11eefcca9c6635901
2017-07-05 11:18:48 -04:00
Kartikaya Gupta
493543fcba Bug 1376522 - Remove unused code. r=botond
MozReview-Commit-ID: 7rfulZOILBT

--HG--
extra : rebase_source : 41edfea1b3a05d9b6431c3f4fad9eb4a40262ae8
2017-06-27 14:58:51 -04:00
David Anderson
65b03ef2d4 Add IsRectilinear to Matrix4x4. (bug 1365879 part 2, r=mattwoodrow)
This allows testing if a matrix is rectilinear without first converting
to a Matrix3x3.
2017-06-20 01:17:15 -07:00
Botond Ballo
9ebdb4f7f0 Bug 1352564 - Add a method to invert a Matrix4x4 if it's invertible. r=botond
Use it in HitTestingTreeNode::Untransform.

MozReview-Commit-ID: 1JkLh99FD0h

--HG--
extra : rebase_source : ca9836c1999a2af3cac5287a9efa875c415634f7
2017-04-02 17:20:23 -04:00
Boris Chiou
5e9077980f Bug 1272549 - Part 7: Compute distance for matrix and matrix3d. r=birtles
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
2016-10-04 18:32:20 +08:00
Miko Mynttinen
1314efc774 Bug 1286412 - Add compositor support for triangle layers (for OpenGL backend) r=jrmuizel
MozReview-Commit-ID: 75q8ja7G1ko

--HG--
extra : rebase_source : 99e2684351a6403d7a957b876337de20b16de139
2016-10-07 10:58:13 -07:00
Botond Ballo
16c6388fe9 Bug 1288210 - Improve the use of strongly typed units in AsyncCompositionManager. r=mstange
MozReview-Commit-ID: 1EfGg0MNSBm

--HG--
extra : rebase_source : 50cdacad5c5e8b30bddf253584711a5668d23c8a
2016-09-21 17:33:29 -04:00
Nicolas Silva
56e5119c61 Bug 1301027 - Remove the matrix * point operator and replace it with TransformPoint methods. r=Bas 2016-09-08 18:26:03 +02:00
Nicolas Silva
ce8729cb81 Bug 1297986 - Don't assume w=1 when transforming 4d points. r=mattwoodrow 2016-08-26 14:31:29 +02:00
vincentliu
6a774f87dd Bug 1283113 - Add matrix checking before set matrix in Cairo. r=milan
---
 gfx/2d/Matrix.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
2016-07-13 16:47:32 +08:00
Carsten "Tomcat" Book
284c26c669 Bug 1268854 - Break out of loop if no intersecting points on positive side of clipping plane. r=kip 2016-06-23 12:41:04 +02:00
Kearwood (Kip) Gilbert
b25f2d6a84 Bug 1276066 - Add Union with "components" member to math classes to enable array access to members. r=bas
- Adding an array member to access the components of vector, size,
  and matrix classes reduces the code needed when passing all of the
  members to functions.

MozReview-Commit-ID: A6XL7y3zwsV

--HG--
extra : rebase_source : 77fb1b9784ae1213530cff7f42563e0afc8859e3
2016-04-18 12:12:36 -07:00
Markus Stange
04177e1aa2 Bug 1209100 - Back out bug 1165185 on inbound.
MozReview-Commit-ID: JqohyXNvjiU

--HG--
extra : rebase_source : c2165d279a6ca57a3439ebbfc081961369a42124
2016-03-21 16:16:52 -04:00
Lee Salzman
04fb5babb0 Bug 1241161 - make Matrix4x4::ProjectTo2D normalize out perpective where possible. r=mattwoodrow 2016-03-10 16:10:04 -05:00
William Chen
a7c2c21d89 Bug 1245242 - Normalize to unit vector for DOMMatrix.rotateAxisAngleSelf. r=roc 2016-02-04 00:30:00 -08:00
Bas Schouten
888d48a29a Bug 1245525: Fix some compiler errors in Moz2D type classes. r=jrmuizel
--HG--
extra : commitid : FmfVYTFF0DR
2016-02-03 19:44:41 +01:00
Botond Ballo
0858698ac3 Bug 1069417 - Generalize Matrix4x4 into Matrix4x4Typed<SourceUnits, TargetUnits>. r=Bas
Matrix4x4 remains a typedef for Matrix4x4Typed<UnknownUnits, UnknownUnits>.

No client code needed changing, except for forward-declarations of Matrix4x4
as a class (since it's now a typedef).

--HG--
extra : rebase_source : ecd9470b9defcc55cfb9e7dbd26e928a6219c3e5
extra : source : 0fc99b5490830953f37a4d8769e42dad2d10bc6e
2015-12-02 18:52:00 -05:00
Matt Woodrow
545885b406 Bug 1217012 - Use doubles when untransforming points since we need the extra precision. r=kip 2015-11-16 17:05:55 +13:00
Thinker K.F. Li
2a3f9839c2 Bug 1211360 - Don't snap for non-translation 3D transform. r=roc
--HG--
extra : histedit_source : 7515376b0eb76c7957adce0fc37cc5bb52361de5
2015-10-25 22:05:00 -04:00
Lee Salzman
36f6069f0c Bug 1201937 - push transform onto cairo context when evaluating path bounds. r=eihrul 2015-09-21 13:33:06 -04:00
Timothy Nikkel
1341b9b27d Bug 1204824. Make Matrix4x4::PreScale scale all values in the first three rows. r=bas 2015-09-16 23:39:09 -05:00
Jeremy Chen
866bb24e7e Bug 1149923 - Let 2D mask effect can check whether to use IntermediateSurface or not in its own logic. r=roc 2015-08-28 03:47:00 -04:00
Kearwood (Kip) Gilbert
5265775c94 Bug 1157984 - Part 2: Implement double precision clipping functions in Matrix4x4,r=vlad
- Implement Matrix4x4::TransformAndClipBounds
- Update methods in Matrix4x4 with templates, allowing for both single
  and double precision.

--HG--
extra : rebase_source : 6d5710a85bf5d82c441463debd98b31be4ec2ace
2015-08-06 17:26:03 -07:00
Lee Salzman
5036a0f61a Bug 1190705 - Ensure that canvas 2d matrix transforms are finite. r=Bas, r=jrmuizel 2015-08-05 18:48:25 -04:00
Kearwood (Kip) Gilbert
60dfc52e22 Bug 1181240 - Part 1: Copy methods from gfx3DMatrix,r=vlad
- Copied methods from gfx3DMatrix to Matrix4x4, gfxPoint, and gfxRect that
  with at double-precision floating point.
2015-07-09 16:27:38 -07:00
Birunthan Mohanathas
a8939590de Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Markus Stange
8f3e1c59d9 Bug 1165185 - Try to avoid invalidations when scrolling transformed elements. r=roc
--HG--
extra : rebase_source : e044d64a50c6afff9e518cf53c51aa9658f3b41e
2015-06-15 19:20:59 -04:00
Kearwood (Kip) Gilbert
8371055034 Bug 766345 - Part 2 - Implement Matrix4x4::TransformAndClipRect (v2 Patch). r=vladimir
- Implemented Matrix4x4::TransformAndClipRect, which emulates
the frustum clipping behavior of the GPU.
2015-04-29 14:25:47 -07:00
Jonathan Watt
d4fbb52a81 Bug 1168427 - Add a PostScale method to Moz2D's Matrix class. r=Bas 2015-05-14 16:47:20 +01:00
Vladimir Vukicevic
9a93b6f1a0 Bug 1148009; [webvr] Add Quaternion class to Moz2D; r=jrmuizel 2015-04-01 16:02:20 -04:00
Kearwood (Kip) Gilbert
f97c17593c Bug 1035611 - Part 1: Updated Matrix4x4::ProjectRectBounds to properly handle infinite values when untransformed rects cross the w=0 plane. r=mattwoodrow
- Added specialized rect clipping functionality to Matrix4x4::ProjectRectBounds
  so we don't have to return infinite values when rects cross the w=0 plane
  in homogenous coordinate space.
- Updated callsites of ProjectRectBounds to pass a clipping rect that is
  appropriate for the units that are returned.

--HG--
extra : rebase_source : 9b1088a77e88259e2c32379ade23fbc2236596fb
2015-03-13 16:42:00 -04:00
Botond Ballo
c3259de44b Bug 1120609 - Printing support for gfx::Matrix. r=Bas
--HG--
extra : rebase_source : 38e46208c14df09dc49c73c7fddfc3b5534efd4c
2015-01-19 11:29:16 -05:00
Vladimir Vukicevic
27e56b034e Bug 1036604 - Add VRDevice interfaces, navigator.getVRDevices call, and Oculus Rift gfxVR; r=bz,jrmuizel 2014-07-09 12:24:49 -07:00
Robert O'Callahan
98a7a56835 Bug 1097437. Work around Quartz bug where corners of stroked rects don't get a solid color when they should. r=jrmuizel
--HG--
extra : rebase_source : deb88329b8948686119df73122032db999006cae
2014-11-12 20:52:57 +13:00
Markus Stange
cd9122458b Bug 1078262 - Only use the fixed epsilon for the translation components. r=roc 2014-10-16 12:37:09 +02:00
Jonathan Watt
370a10c692 Bug 1082483, part 3 - Remove the temporary Matrix4x4::Translate/Scale methods. r=Bas 2014-10-16 10:51:13 +01:00
Jonathan Watt
a47a426fe5 Bug 1082483, part 1 - Rename Matrix4x4::Translate/Scale to Matrix4x4::PreTranslate/PreScale, leaving temporary inlines for the old names. r=Bas 2014-10-16 10:51:12 +01:00