| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkMatrix44.h" | 8 #include "SkMatrix44.h" |
| 9 | 9 |
| 10 static inline bool eq4(const SkMScalar* SK_RESTRICT a, | 10 static inline bool eq4(const SkMScalar* SK_RESTRICT a, |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 if (this->isScaleTranslate()) { | 466 if (this->isScaleTranslate()) { |
| 467 if (0 == fMat[0][0] * fMat[1][1] * fMat[2][2]) { | 467 if (0 == fMat[0][0] * fMat[1][1] * fMat[2][2]) { |
| 468 return false; | 468 return false; |
| 469 } | 469 } |
| 470 | 470 |
| 471 if (inverse) { | 471 if (inverse) { |
| 472 double invXScale = 1 / fMat[0][0]; | 472 double invXScale = 1 / fMat[0][0]; |
| 473 double invYScale = 1 / fMat[1][1]; | 473 double invYScale = 1 / fMat[1][1]; |
| 474 double invZScale = 1 / fMat[2][2]; | 474 double invZScale = 1 / fMat[2][2]; |
| 475 | 475 |
| 476 inverse->fMat[0][0] = invXScale; | 476 inverse->fMat[0][0] = SkDoubleToMScalar(invXScale); |
| 477 inverse->fMat[0][1] = 0; | 477 inverse->fMat[0][1] = 0; |
| 478 inverse->fMat[0][2] = 0; | 478 inverse->fMat[0][2] = 0; |
| 479 inverse->fMat[0][3] = 0; | 479 inverse->fMat[0][3] = 0; |
| 480 | 480 |
| 481 inverse->fMat[1][0] = 0; | 481 inverse->fMat[1][0] = 0; |
| 482 inverse->fMat[1][1] = invYScale; | 482 inverse->fMat[1][1] = SkDoubleToMScalar(invYScale); |
| 483 inverse->fMat[1][2] = 0; | 483 inverse->fMat[1][2] = 0; |
| 484 inverse->fMat[1][3] = 0; | 484 inverse->fMat[1][3] = 0; |
| 485 | 485 |
| 486 inverse->fMat[2][0] = 0; | 486 inverse->fMat[2][0] = 0; |
| 487 inverse->fMat[2][1] = 0; | 487 inverse->fMat[2][1] = 0; |
| 488 inverse->fMat[2][2] = invZScale; | 488 inverse->fMat[2][2] = SkDoubleToMScalar(invZScale); |
| 489 inverse->fMat[2][3] = 0; | 489 inverse->fMat[2][3] = 0; |
| 490 | 490 |
| 491 inverse->fMat[3][0] = -fMat[3][0] * invXScale; | 491 inverse->fMat[3][0] = SkDoubleToMScalar(-fMat[3][0] * invXScale); |
| 492 inverse->fMat[3][1] = -fMat[3][1] * invYScale; | 492 inverse->fMat[3][1] = SkDoubleToMScalar(-fMat[3][1] * invYScale); |
| 493 inverse->fMat[3][2] = -fMat[3][2] * invZScale; | 493 inverse->fMat[3][2] = SkDoubleToMScalar(-fMat[3][2] * invZScale); |
| 494 inverse->fMat[3][3] = 1; | 494 inverse->fMat[3][3] = 1; |
| 495 | 495 |
| 496 inverse->setTypeMask(this->getType()); | 496 inverse->setTypeMask(this->getType()); |
| 497 } | 497 } |
| 498 | 498 |
| 499 return true; | 499 return true; |
| 500 } | 500 } |
| 501 | 501 |
| 502 double a00 = fMat[0][0]; | 502 double a00 = fMat[0][0]; |
| 503 double a01 = fMat[0][1]; | 503 double a01 = fMat[0][1]; |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 dst[SkMatrix::kMSkewY] = SkMScalarToScalar(fMat[0][1]); | 963 dst[SkMatrix::kMSkewY] = SkMScalarToScalar(fMat[0][1]); |
| 964 dst[SkMatrix::kMScaleY] = SkMScalarToScalar(fMat[1][1]); | 964 dst[SkMatrix::kMScaleY] = SkMScalarToScalar(fMat[1][1]); |
| 965 dst[SkMatrix::kMTransY] = SkMScalarToScalar(fMat[3][1]); | 965 dst[SkMatrix::kMTransY] = SkMScalarToScalar(fMat[3][1]); |
| 966 | 966 |
| 967 dst[SkMatrix::kMPersp0] = SkMScalarToScalar(fMat[0][3]); | 967 dst[SkMatrix::kMPersp0] = SkMScalarToScalar(fMat[0][3]); |
| 968 dst[SkMatrix::kMPersp1] = SkMScalarToScalar(fMat[1][3]); | 968 dst[SkMatrix::kMPersp1] = SkMScalarToScalar(fMat[1][3]); |
| 969 dst[SkMatrix::kMPersp2] = SkMScalarToScalar(fMat[3][3]); | 969 dst[SkMatrix::kMPersp2] = SkMScalarToScalar(fMat[3][3]); |
| 970 | 970 |
| 971 return dst; | 971 return dst; |
| 972 } | 972 } |
| OLD | NEW |