Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(412)

Side by Side Diff: sky/engine/core/css/CSSMatrix.cpp

Issue 922893002: Merge the Sky Engine changes from the SkyDart branch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/engine/core/css/CSSMatrix.h ('k') | sky/engine/core/css/CSSPrimitiveValue.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 10 matching lines...) Expand all
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #include "sky/engine/config.h" 26 #include "sky/engine/config.h"
27 #include "sky/engine/core/css/CSSMatrix.h" 27 #include "sky/engine/core/css/CSSMatrix.h"
28 28
29 #include "gen/sky/core/CSSPropertyNames.h" 29 #include "gen/sky/core/CSSPropertyNames.h"
30 #include "gen/sky/core/CSSValueKeywords.h" 30 #include "gen/sky/core/CSSValueKeywords.h"
31 #include "sky/engine/bindings/core/v8/ExceptionState.h" 31 #include "sky/engine/bindings2/exception_state.h"
32 #include "sky/engine/core/css/CSSToLengthConversionData.h" 32 #include "sky/engine/core/css/CSSToLengthConversionData.h"
33 #include "sky/engine/core/css/StylePropertySet.h" 33 #include "sky/engine/core/css/StylePropertySet.h"
34 #include "sky/engine/core/css/parser/BisonCSSParser.h" 34 #include "sky/engine/core/css/parser/BisonCSSParser.h"
35 #include "sky/engine/core/css/resolver/TransformBuilder.h" 35 #include "sky/engine/core/css/resolver/TransformBuilder.h"
36 #include "sky/engine/core/dom/ExceptionCode.h" 36 #include "sky/engine/core/dom/ExceptionCode.h"
37 #include "sky/engine/core/rendering/style/RenderStyle.h" 37 #include "sky/engine/core/rendering/style/RenderStyle.h"
38 #include "sky/engine/core/rendering/style/StyleInheritedData.h" 38 #include "sky/engine/core/rendering/style/StyleInheritedData.h"
39 #include "sky/engine/wtf/MathExtras.h" 39 #include "sky/engine/wtf/MathExtras.h"
40 40
41 namespace blink { 41 namespace blink {
(...skipping 20 matching lines...) Expand all
62 // requires style (i.e., param uses 'ems' or 'exs') 62 // requires style (i.e., param uses 'ems' or 'exs')
63 RefPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSProper tyWebkitTransform); 63 RefPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSProper tyWebkitTransform);
64 64
65 // Check for a "none" or empty transform. In these cases we can use the default identity matrix. 65 // Check for a "none" or empty transform. In these cases we can use the default identity matrix.
66 if (!value || (value->isPrimitiveValue() && (toCSSPrimitiveValue(value.g et()))->getValueID() == CSSValueNone)) 66 if (!value || (value->isPrimitiveValue() && (toCSSPrimitiveValue(value.g et()))->getValueID() == CSSValueNone))
67 return; 67 return;
68 68
69 DEFINE_STATIC_REF(RenderStyle, defaultStyle, RenderStyle::createDefaultS tyle()); 69 DEFINE_STATIC_REF(RenderStyle, defaultStyle, RenderStyle::createDefaultS tyle());
70 TransformOperations operations; 70 TransformOperations operations;
71 if (!TransformBuilder::createTransformOperations(value.get(), CSSToLengt hConversionData(defaultStyle, 0), operations)) { 71 if (!TransformBuilder::createTransformOperations(value.get(), CSSToLengt hConversionData(defaultStyle, 0), operations)) {
72 exceptionState.throwDOMException(SyntaxError, "Failed to interpret ' " + string + "' as a transformation operation."); 72 exceptionState.ThrowDOMException(SyntaxError, "Failed to interpret ' " + string + "' as a transformation operation.");
73 return; 73 return;
74 } 74 }
75 75
76 // Convert transform operations to a TransformationMatrix. This can fail 76 // Convert transform operations to a TransformationMatrix. This can fail
77 // if a param has a percentage ('%') 77 // if a param has a percentage ('%')
78 if (operations.dependsOnBoxSize()) 78 if (operations.dependsOnBoxSize())
79 exceptionState.throwDOMException(SyntaxError, "The transformation de pends on the box size, which is not supported."); 79 exceptionState.ThrowDOMException(SyntaxError, "The transformation de pends on the box size, which is not supported.");
80 TransformationMatrix t; 80 TransformationMatrix t;
81 operations.apply(FloatSize(0, 0), t); 81 operations.apply(FloatSize(0, 0), t);
82 82
83 // set the matrix 83 // set the matrix
84 m_matrix = t; 84 m_matrix = t;
85 } else { // There is something there but parsing failed. 85 } else { // There is something there but parsing failed.
86 exceptionState.throwDOMException(SyntaxError, "Failed to parse '" + stri ng + "'."); 86 exceptionState.ThrowDOMException(SyntaxError, "Failed to parse '" + stri ng + "'.");
87 } 87 }
88 } 88 }
89 89
90 // Perform a concatenation of the matrices (this * secondMatrix) 90 // Perform a concatenation of the matrices (this * secondMatrix)
91 PassRefPtr<CSSMatrix> CSSMatrix::multiply(CSSMatrix* secondMatrix) const 91 PassRefPtr<CSSMatrix> CSSMatrix::multiply(CSSMatrix* secondMatrix) const
92 { 92 {
93 if (!secondMatrix) 93 if (!secondMatrix)
94 return nullptr; 94 return nullptr;
95 95
96 return CSSMatrix::create(TransformationMatrix(m_matrix).multiply(secondMatri x->m_matrix)); 96 return CSSMatrix::create(TransformationMatrix(m_matrix).multiply(secondMatri x->m_matrix));
97 } 97 }
98 98
99 PassRefPtr<CSSMatrix> CSSMatrix::inverse(ExceptionState& exceptionState) const 99 PassRefPtr<CSSMatrix> CSSMatrix::inverse(ExceptionState& exceptionState) const
100 { 100 {
101 if (!m_matrix.isInvertible()) { 101 if (!m_matrix.isInvertible()) {
102 exceptionState.throwDOMException(NotSupportedError, "The matrix is not i nvertable."); 102 exceptionState.ThrowDOMException(NotSupportedError, "The matrix is not i nvertable.");
103 return nullptr; 103 return nullptr;
104 } 104 }
105 105
106 return CSSMatrix::create(m_matrix.inverse()); 106 return CSSMatrix::create(m_matrix.inverse());
107 } 107 }
108 108
109 PassRefPtr<CSSMatrix> CSSMatrix::translate(double x, double y, double z) const 109 PassRefPtr<CSSMatrix> CSSMatrix::translate(double x, double y, double z) const
110 { 110 {
111 if (std::isnan(x)) 111 if (std::isnan(x))
112 x = 0; 112 x = 0;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 if (m_matrix.isAffine()) 181 if (m_matrix.isAffine())
182 return String::format("matrix(%f, %f, %f, %f, %f, %f)", m_matrix.a(), m_ matrix.b(), m_matrix.c(), m_matrix.d(), m_matrix.e(), m_matrix.f()); 182 return String::format("matrix(%f, %f, %f, %f, %f, %f)", m_matrix.a(), m_ matrix.b(), m_matrix.c(), m_matrix.d(), m_matrix.e(), m_matrix.f());
183 return String::format("matrix3d(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", 183 return String::format("matrix3d(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)",
184 m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(), 184 m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(),
185 m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(), 185 m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(),
186 m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(), 186 m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(),
187 m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44()); 187 m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44());
188 } 188 }
189 189
190 } // namespace blink 190 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/css/CSSMatrix.h ('k') | sky/engine/core/css/CSSPrimitiveValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698