OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/dom/DOMMatrix.h" | 5 #include "core/dom/DOMMatrix.h" |
6 | 6 |
7 namespace blink { | 7 namespace blink { |
8 | 8 |
9 DOMMatrix* DOMMatrix::create() | 9 DOMMatrix* DOMMatrix::create() |
10 { | 10 { |
(...skipping 10 matching lines...) Expand all Loading... |
21 TransformationMatrix transformationMatrix(matrix); | 21 TransformationMatrix transformationMatrix(matrix); |
22 return new DOMMatrix(transformationMatrix, transformationMatrix.isAffine()); | 22 return new DOMMatrix(transformationMatrix, transformationMatrix.isAffine()); |
23 } | 23 } |
24 | 24 |
25 DOMMatrix::DOMMatrix(const TransformationMatrix& matrix, bool is2D) | 25 DOMMatrix::DOMMatrix(const TransformationMatrix& matrix, bool is2D) |
26 { | 26 { |
27 m_matrix = TransformationMatrix::create(matrix); | 27 m_matrix = TransformationMatrix::create(matrix); |
28 m_is2D = is2D; | 28 m_is2D = is2D; |
29 } | 29 } |
30 | 30 |
| 31 DOMMatrix* DOMMatrix::fromMatrix(DOMMatrixInit& other, ExceptionState& exception
State) |
| 32 { |
| 33 validateAndFixup(other, exceptionState); |
| 34 if (exceptionState.hadException()) |
| 35 return nullptr; |
| 36 |
| 37 if (other.is2D()) { |
| 38 return new DOMMatrix({ |
| 39 other.m11(), other.m12(), other.m21(), |
| 40 other.m22(), other.m41(), other.m42()}, other.is2D()); |
| 41 } |
| 42 |
| 43 return new DOMMatrix({ |
| 44 other.m11(), other.m12(), other.m13(), other.m14(), |
| 45 other.m21(), other.m22(), other.m23(), other.m24(), |
| 46 other.m31(), other.m32(), other.m33(), other.m34(), |
| 47 other.m41(), other.m42(), other.m43(), other.m44()}, other.is2D()); |
| 48 } |
| 49 |
31 void DOMMatrix::setIs2D(bool value) | 50 void DOMMatrix::setIs2D(bool value) |
32 { | 51 { |
33 if (m_is2D) | 52 if (m_is2D) |
34 m_is2D = value; | 53 m_is2D = value; |
35 } | 54 } |
36 | 55 |
37 DOMMatrix* DOMMatrix::multiplySelf(DOMMatrix* other) | 56 DOMMatrix* DOMMatrix::multiplySelf(DOMMatrixInit& other, ExceptionState& excepti
onState) |
38 { | 57 { |
39 if (!other->is2D()) | 58 DOMMatrix* otherMatrix = DOMMatrix::fromMatrix(other, exceptionState); |
| 59 if (!otherMatrix->is2D()) |
40 m_is2D = false; | 60 m_is2D = false; |
41 | 61 |
42 *m_matrix *= other->matrix(); | 62 *m_matrix *= otherMatrix->matrix(); |
43 | 63 |
44 return this; | 64 return this; |
45 } | 65 } |
46 | 66 |
47 DOMMatrix* DOMMatrix::preMultiplySelf(DOMMatrix* other) | 67 DOMMatrix* DOMMatrix::preMultiplySelf(DOMMatrixInit& other, ExceptionState& exce
ptionState) |
48 { | 68 { |
49 if (!other->is2D()) | 69 DOMMatrix* otherMatrix = DOMMatrix::fromMatrix(other, exceptionState); |
| 70 if (!otherMatrix->is2D()) |
50 m_is2D = false; | 71 m_is2D = false; |
51 | 72 |
52 TransformationMatrix& matrix = *m_matrix; | 73 TransformationMatrix& matrix = *m_matrix; |
53 *m_matrix = other->matrix() * matrix; | 74 *m_matrix = otherMatrix->matrix() * matrix; |
54 | 75 |
55 return this; | 76 return this; |
56 } | 77 } |
57 | 78 |
58 DOMMatrix* DOMMatrix::translateSelf(double tx, double ty, double tz) | 79 DOMMatrix* DOMMatrix::translateSelf(double tx, double ty, double tz) |
59 { | 80 { |
60 if (!tx && !ty && !tz) | 81 if (!tx && !ty && !tz) |
61 return this; | 82 return this; |
62 | 83 |
63 if (tz) | 84 if (tz) |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 setM41(NAN); | 159 setM41(NAN); |
139 setM42(NAN); | 160 setM42(NAN); |
140 setM43(NAN); | 161 setM43(NAN); |
141 setM44(NAN); | 162 setM44(NAN); |
142 setIs2D(false); | 163 setIs2D(false); |
143 } | 164 } |
144 return this; | 165 return this; |
145 } | 166 } |
146 | 167 |
147 } // namespace blink | 168 } // namespace blink |
OLD | NEW |