Commit Graph

94 Commits

Author SHA1 Message Date
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
Jonathan Watt
b841266ac1 Bug 1082477, part 2 - Remove the Matrix4x4::TranslatePost/ScalePost methods. r=Bas 2014-10-16 10:51:12 +01:00
Jonathan Watt
30c91163ad Bug 1077961, part 1 - Add various methods to Moz2D Matrix4x4 to allow us to minimize multiplications. r=Bas 2014-10-08 04:40:44 +01:00
Kartikaya Gupta
6636444d56 Bug 1074944 - Add Inverse functions on Matrix and Matrix4x4. r=Bas 2014-10-01 13:13:02 -04:00
Jonathan Watt
58325191a8 Bug 1065764, part 2 - Make Moz2D's Matrix::NudgeToIntegers() return a reference. r=Bas 2014-09-11 01:46:21 +01:00
Jonathan Watt
24dd1d2cf1 Bug 1065737 - Add a PreMultiply() method to Moz2D's Matrix class. r=Bas 2014-09-11 01:45:05 +01:00
Jonathan Watt
eda83caa4b Bug 1065526, part 1 - Add a Copy() method to Moz2D's Matrix. r=Bas 2014-09-10 21:41:51 +01:00
Jonathan Watt
fa99069d2a Bug 1065031, part 1 - Changes to Moz2D code to document and rename Moz2D Matrix's Translate, Scale and Rotate methods. r=Bas 2014-09-10 18:29:35 +01:00
Markus Stange
16ca30512b Bug 1055661 - Add Matrix5x4::operator*=. f=milan, r=Bas 2014-09-02 14:06:01 +02:00
Markus Stange
3757c2f101 Bug 1055661 - Add Matrix5x4::operator== which does exact equality comparison. f=Milan, r=Bas 2014-09-02 14:05:49 +02:00
David Zbarsky
0b7ba4a9b8 Bug 952977: Remove gfxPointH3D r=nical 2014-08-29 14:47:30 -04:00
Kartikaya Gupta
2310a16f84 Bug 1058048 - Implement the *= operator on Matrix4x4. r=Bas 2014-08-26 12:04:07 -04:00