OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 return; | 70 return; |
71 | 71 |
72 m_contextTransform->target()->onMatrixChange(); | 72 m_contextTransform->target()->onMatrixChange(); |
73 m_contextTransform->commitChange(); | 73 m_contextTransform->commitChange(); |
74 } | 74 } |
75 | 75 |
76 #define DEFINE_SETTER(ATTRIBUTE) \ | 76 #define DEFINE_SETTER(ATTRIBUTE) \ |
77 void SVGMatrixTearOff::set##ATTRIBUTE(double f, ExceptionState& exceptionSta
te) \ | 77 void SVGMatrixTearOff::set##ATTRIBUTE(double f, ExceptionState& exceptionSta
te) \ |
78 { \ | 78 { \ |
79 if (m_contextTransform && m_contextTransform->isImmutable()) { \ | 79 if (m_contextTransform && m_contextTransform->isImmutable()) { \ |
80 exceptionState.throwDOMException(NoModificationAllowedError, "The at
tribute is read-only."); \ | 80 SVGPropertyTearOffBase::throwReadOnly(exceptionState); \ |
81 return; \ | 81 return; \ |
82 } \ | 82 } \ |
83 mutableValue()->set##ATTRIBUTE(f); \ | 83 mutableValue()->set##ATTRIBUTE(f); \ |
84 commitChange(); \ | 84 commitChange(); \ |
85 } | 85 } |
86 | 86 |
87 DEFINE_SETTER(A); | 87 DEFINE_SETTER(A); |
88 DEFINE_SETTER(B); | 88 DEFINE_SETTER(B); |
89 DEFINE_SETTER(C); | 89 DEFINE_SETTER(C); |
90 DEFINE_SETTER(D); | 90 DEFINE_SETTER(D); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 | 151 |
152 SVGMatrixTearOff* SVGMatrixTearOff::multiply(SVGMatrixTearOff* other) | 152 SVGMatrixTearOff* SVGMatrixTearOff::multiply(SVGMatrixTearOff* other) |
153 { | 153 { |
154 SVGMatrixTearOff* matrix = create(value()); | 154 SVGMatrixTearOff* matrix = create(value()); |
155 *matrix->mutableValue() *= other->value(); | 155 *matrix->mutableValue() *= other->value(); |
156 return matrix; | 156 return matrix; |
157 } | 157 } |
158 | 158 |
159 SVGMatrixTearOff* SVGMatrixTearOff::inverse(ExceptionState& exceptionState) | 159 SVGMatrixTearOff* SVGMatrixTearOff::inverse(ExceptionState& exceptionState) |
160 { | 160 { |
161 AffineTransform transform = value().inverse(); | 161 if (!value().isInvertible()) { |
162 if (!value().isInvertible()) | |
163 exceptionState.throwDOMException(InvalidStateError, "The matrix is not i
nvertible."); | 162 exceptionState.throwDOMException(InvalidStateError, "The matrix is not i
nvertible."); |
164 | 163 return nullptr; |
165 return create(transform); | 164 } |
| 165 return create(value().inverse()); |
166 } | 166 } |
167 | 167 |
168 SVGMatrixTearOff* SVGMatrixTearOff::rotateFromVector(double x, double y, Excepti
onState& exceptionState) | 168 SVGMatrixTearOff* SVGMatrixTearOff::rotateFromVector(double x, double y, Excepti
onState& exceptionState) |
169 { | 169 { |
170 if (!x || !y) | 170 if (!x || !y) { |
171 exceptionState.throwDOMException(InvalidAccessError, "Arguments cannot b
e zero."); | 171 exceptionState.throwDOMException(InvalidAccessError, "Arguments cannot b
e zero."); |
172 | 172 return nullptr; |
| 173 } |
173 AffineTransform copy = value(); | 174 AffineTransform copy = value(); |
174 copy.rotateFromVector(x, y); | 175 copy.rotateFromVector(x, y); |
175 return create(copy); | 176 return create(copy); |
176 } | 177 } |
177 | 178 |
178 DEFINE_TRACE_WRAPPERS(SVGMatrixTearOff) | 179 DEFINE_TRACE_WRAPPERS(SVGMatrixTearOff) |
179 { | 180 { |
180 visitor->traceWrappers(m_contextTransform); | 181 visitor->traceWrappers(m_contextTransform); |
181 } | 182 } |
182 | 183 |
183 } // namespace blink | 184 } // namespace blink |
OLD | NEW |