| 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/geometry/DOMMatrixReadOnly.h" | 5 #include "core/geometry/DOMMatrixReadOnly.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/V8ObjectBuilder.h" | 7 #include "bindings/core/v8/V8ObjectBuilder.h" |
| 8 #include "core/css/CSSIdentifierValue.h" | 8 #include "core/css/CSSIdentifierValue.h" |
| 9 #include "core/css/CSSToLengthConversionData.h" | 9 #include "core/css/CSSToLengthConversionData.h" |
| 10 #include "core/css/CSSValueList.h" | 10 #include "core/css/CSSValueList.h" |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 NotShared<DOMFloat64Array> DOMMatrixReadOnly::toFloat64Array() const { | 315 NotShared<DOMFloat64Array> DOMMatrixReadOnly::toFloat64Array() const { |
| 316 double array[] = { | 316 double array[] = { |
| 317 matrix_->M11(), matrix_->M12(), matrix_->M13(), matrix_->M14(), | 317 matrix_->M11(), matrix_->M12(), matrix_->M13(), matrix_->M14(), |
| 318 matrix_->M21(), matrix_->M22(), matrix_->M23(), matrix_->M24(), | 318 matrix_->M21(), matrix_->M22(), matrix_->M23(), matrix_->M24(), |
| 319 matrix_->M31(), matrix_->M32(), matrix_->M33(), matrix_->M34(), | 319 matrix_->M31(), matrix_->M32(), matrix_->M33(), matrix_->M34(), |
| 320 matrix_->M41(), matrix_->M42(), matrix_->M43(), matrix_->M44()}; | 320 matrix_->M41(), matrix_->M42(), matrix_->M43(), matrix_->M44()}; |
| 321 | 321 |
| 322 return NotShared<DOMFloat64Array>(DOMFloat64Array::Create(array, 16)); | 322 return NotShared<DOMFloat64Array>(DOMFloat64Array::Create(array, 16)); |
| 323 } | 323 } |
| 324 | 324 |
| 325 const String DOMMatrixReadOnly::toString() const { | 325 const String DOMMatrixReadOnly::toString( |
| 326 std::stringstream stream; | 326 ExceptionState& exception_state) const { |
| 327 const char* kComma = ", "; |
| 328 String result; |
| 329 |
| 327 if (is2D()) { | 330 if (is2D()) { |
| 328 stream << "matrix(" << a() << ", " << b() << ", " << c() << ", " << d() | 331 if (!std::isfinite(a()) || !std::isfinite(b()) || !std::isfinite(c()) || |
| 329 << ", " << e() << ", " << f(); | 332 !std::isfinite(d()) || !std::isfinite(e()) || !std::isfinite(f())) { |
| 330 } else { | 333 exception_state.ThrowDOMException( |
| 331 stream << "matrix3d(" << m11() << ", " << m12() << ", " << m13() << ", " | 334 kInvalidStateError, |
| 332 << m14() << ", " << m21() << ", " << m22() << ", " << m23() << ", " | 335 "DOMMatrix cannot be serialized with NaN or Infinity values."); |
| 333 << m24() << ", " << m31() << ", " << m32() << ", " << m33() << ", " | 336 return String(); |
| 334 << m34() << ", " << m41() << ", " << m42() << ", " << m43() << ", " | 337 } |
| 335 << m44(); | 338 |
| 339 result.append("matrix("); |
| 340 result.append(String::NumberToStringECMAScript(a())); |
| 341 result.append(kComma); |
| 342 result.append(String::NumberToStringECMAScript(b())); |
| 343 result.append(kComma); |
| 344 result.append(String::NumberToStringECMAScript(c())); |
| 345 result.append(kComma); |
| 346 result.append(String::NumberToStringECMAScript(d())); |
| 347 result.append(kComma); |
| 348 result.append(String::NumberToStringECMAScript(e())); |
| 349 result.append(kComma); |
| 350 result.append(String::NumberToStringECMAScript(f())); |
| 351 result.append(")"); |
| 352 return result; |
| 336 } | 353 } |
| 337 stream << ")"; | |
| 338 | 354 |
| 339 return String(stream.str().c_str()); | 355 if (!std::isfinite(m11()) || !std::isfinite(m12()) || !std::isfinite(m13()) || |
| 356 !std::isfinite(m14()) || !std::isfinite(m21()) || !std::isfinite(m22()) || |
| 357 !std::isfinite(m23()) || !std::isfinite(m24()) || !std::isfinite(m31()) || |
| 358 !std::isfinite(m32()) || !std::isfinite(m33()) || !std::isfinite(m34()) || |
| 359 !std::isfinite(m41()) || !std::isfinite(m42()) || !std::isfinite(m43()) || |
| 360 !std::isfinite(m44())) { |
| 361 exception_state.ThrowDOMException( |
| 362 kInvalidStateError, |
| 363 "DOMMatrix cannot be serialized with NaN or Infinity values."); |
| 364 return String(); |
| 365 } |
| 366 |
| 367 result.append("matrix3d("); |
| 368 result.append(String::NumberToStringECMAScript(m11())); |
| 369 result.append(kComma); |
| 370 result.append(String::NumberToStringECMAScript(m12())); |
| 371 result.append(kComma); |
| 372 result.append(String::NumberToStringECMAScript(m13())); |
| 373 result.append(kComma); |
| 374 result.append(String::NumberToStringECMAScript(m14())); |
| 375 result.append(kComma); |
| 376 result.append(String::NumberToStringECMAScript(m21())); |
| 377 result.append(kComma); |
| 378 result.append(String::NumberToStringECMAScript(m22())); |
| 379 result.append(kComma); |
| 380 result.append(String::NumberToStringECMAScript(m23())); |
| 381 result.append(kComma); |
| 382 result.append(String::NumberToStringECMAScript(m24())); |
| 383 result.append(kComma); |
| 384 result.append(String::NumberToStringECMAScript(m31())); |
| 385 result.append(kComma); |
| 386 result.append(String::NumberToStringECMAScript(m32())); |
| 387 result.append(kComma); |
| 388 result.append(String::NumberToStringECMAScript(m33())); |
| 389 result.append(kComma); |
| 390 result.append(String::NumberToStringECMAScript(m34())); |
| 391 result.append(kComma); |
| 392 result.append(String::NumberToStringECMAScript(m41())); |
| 393 result.append(kComma); |
| 394 result.append(String::NumberToStringECMAScript(m42())); |
| 395 result.append(kComma); |
| 396 result.append(String::NumberToStringECMAScript(m43())); |
| 397 result.append(kComma); |
| 398 result.append(String::NumberToStringECMAScript(m44())); |
| 399 result.append(")"); |
| 400 |
| 401 return result; |
| 340 } | 402 } |
| 341 | 403 |
| 342 ScriptValue DOMMatrixReadOnly::toJSONForBinding( | 404 ScriptValue DOMMatrixReadOnly::toJSONForBinding( |
| 343 ScriptState* script_state) const { | 405 ScriptState* script_state) const { |
| 344 V8ObjectBuilder result(script_state); | 406 V8ObjectBuilder result(script_state); |
| 345 result.AddNumber("a", a()); | 407 result.AddNumber("a", a()); |
| 346 result.AddNumber("b", b()); | 408 result.AddNumber("b", b()); |
| 347 result.AddNumber("c", c()); | 409 result.AddNumber("c", c()); |
| 348 result.AddNumber("d", d()); | 410 result.AddNumber("d", d()); |
| 349 result.AddNumber("e", e()); | 411 result.AddNumber("e", e()); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 | 474 |
| 413 matrix_->MakeIdentity(); | 475 matrix_->MakeIdentity(); |
| 414 operations.Apply(FloatSize(0, 0), *matrix_); | 476 operations.Apply(FloatSize(0, 0), *matrix_); |
| 415 | 477 |
| 416 is2d_ = !operations.Has3DOperation(); | 478 is2d_ = !operations.Has3DOperation(); |
| 417 | 479 |
| 418 return; | 480 return; |
| 419 } | 481 } |
| 420 | 482 |
| 421 } // namespace blink | 483 } // namespace blink |
| OLD | NEW |