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

Side by Side Diff: src/core/SkMatrix.cpp

Issue 1192853002: Fix precision error in https://codereview.chromium.org/1188433011/ (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 6 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 | « include/core/SkMatrix.h ('k') | no next file » | 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 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 "SkMatrix.h" 8 #include "SkMatrix.h"
9 #include "SkFloatBits.h" 9 #include "SkFloatBits.h"
10 #include "SkString.h" 10 #include "SkString.h"
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 affine[kAScaleX] = this->fMat[kMScaleX]; 779 affine[kAScaleX] = this->fMat[kMScaleX];
780 affine[kASkewY] = this->fMat[kMSkewY]; 780 affine[kASkewY] = this->fMat[kMSkewY];
781 affine[kASkewX] = this->fMat[kMSkewX]; 781 affine[kASkewX] = this->fMat[kMSkewX];
782 affine[kAScaleY] = this->fMat[kMScaleY]; 782 affine[kAScaleY] = this->fMat[kMScaleY];
783 affine[kATransX] = this->fMat[kMTransX]; 783 affine[kATransX] = this->fMat[kMTransX];
784 affine[kATransY] = this->fMat[kMTransY]; 784 affine[kATransY] = this->fMat[kMTransY];
785 } 785 }
786 return true; 786 return true;
787 } 787 }
788 788
789 void SkMatrix::ComputeInv(SkScalar dst[9], const SkScalar src[9], SkScalar invDe t, bool isPersp) { 789 void SkMatrix::ComputeInv(SkScalar dst[9], const SkScalar src[9], double invDet, bool isPersp) {
790 SkASSERT(src != dst); 790 SkASSERT(src != dst);
791 SkASSERT(src && dst); 791 SkASSERT(src && dst);
792 792
793 if (isPersp) { 793 if (isPersp) {
794 dst[kMScaleX] = scross_dscale(src[kMScaleY], src[kMPersp2], src[kMTransY ], src[kMPersp1], invDet); 794 dst[kMScaleX] = scross_dscale(src[kMScaleY], src[kMPersp2], src[kMTransY ], src[kMPersp1], invDet);
795 dst[kMSkewX] = scross_dscale(src[kMTransX], src[kMPersp1], src[kMSkewX] , src[kMPersp2], invDet); 795 dst[kMSkewX] = scross_dscale(src[kMTransX], src[kMPersp1], src[kMSkewX] , src[kMPersp2], invDet);
796 dst[kMTransX] = scross_dscale(src[kMSkewX], src[kMTransY], src[kMTransX ], src[kMScaleY], invDet); 796 dst[kMTransX] = scross_dscale(src[kMSkewX], src[kMTransY], src[kMTransX ], src[kMScaleY], invDet);
797 797
798 dst[kMSkewY] = scross_dscale(src[kMTransY], src[kMPersp0], src[kMSkewY] , src[kMPersp2], invDet); 798 dst[kMSkewY] = scross_dscale(src[kMTransY], src[kMPersp0], src[kMSkewY] , src[kMPersp2], invDet);
799 dst[kMScaleY] = scross_dscale(src[kMScaleX], src[kMPersp2], src[kMTransX ], src[kMPersp0], invDet); 799 dst[kMScaleY] = scross_dscale(src[kMScaleX], src[kMPersp2], src[kMTransX ], src[kMPersp0], invDet);
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after
1816 rotation1->fX = cos1; 1816 rotation1->fX = cos1;
1817 rotation1->fY = sin1; 1817 rotation1->fY = sin1;
1818 } 1818 }
1819 if (rotation2) { 1819 if (rotation2) {
1820 rotation2->fX = cos2; 1820 rotation2->fX = cos2;
1821 rotation2->fY = sin2; 1821 rotation2->fY = sin2;
1822 } 1822 }
1823 1823
1824 return true; 1824 return true;
1825 } 1825 }
OLDNEW
« no previous file with comments | « include/core/SkMatrix.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698