diff options
author | 2013-10-29 21:08:51 +0000 | |
---|---|---|
committer | 2013-10-29 21:08:51 +0000 | |
commit | 658e28b0810d01dc03f8c48b93f6659d41f25b09 (patch) | |
tree | 72670337dd82c524cc77d9885c21e8bdd5d83ad7 /src/utils/SkMatrix44.cpp | |
parent | 950923b43761c10d9c8ffc1dfc0c878100d1e702 (diff) |
Remove SkMatrix44 float conversions without precision loss
BUG=none
R=reed@google.com
Author: enne@chromium.org
Review URL: https://codereview.chromium.org/50423004
git-svn-id: http://skia.googlecode.com/svn/trunk@12009 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/utils/SkMatrix44.cpp')
-rw-r--r-- | src/utils/SkMatrix44.cpp | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/utils/SkMatrix44.cpp b/src/utils/SkMatrix44.cpp index 37ab8db27f..440bf36b62 100644 --- a/src/utils/SkMatrix44.cpp +++ b/src/utils/SkMatrix44.cpp @@ -229,14 +229,8 @@ void SkMatrix44::preTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz) { return; } - const double X = SkMScalarToDouble(dx); - const double Y = SkMScalarToDouble(dy); - const double Z = SkMScalarToDouble(dz); - - double tmp; for (int i = 0; i < 4; ++i) { - tmp = fMat[0][i] * X + fMat[1][i] * Y + fMat[2][i] * Z + fMat[3][i]; - fMat[3][i] = SkDoubleToMScalar(tmp); + fMat[3][i] = fMat[0][i] * dx + fMat[1][i] * dy + fMat[2][i] * dz + fMat[3][i]; } this->dirtyTypeMask(); } @@ -783,10 +777,10 @@ static void map2_sd(const SkMScalar mat[][4], const double* SK_RESTRICT src2, static void map2_af(const SkMScalar mat[][4], const float* SK_RESTRICT src2, int count, float* SK_RESTRICT dst4) { - double r; + SkMScalar r; for (int n = 0; n < count; ++n) { - double sx = src2[0]; - double sy = src2[1]; + SkMScalar sx = SkFloatToMScalar(src2[0]); + SkMScalar sy = SkFloatToMScalar(src2[1]); r = mat[0][0] * sx + mat[1][0] * sy + mat[3][0]; dst4[0] = SkMScalarToFloat(r); r = mat[0][1] * sx + mat[1][1] * sy + mat[3][1]; @@ -815,14 +809,13 @@ static void map2_ad(const SkMScalar mat[][4], const double* SK_RESTRICT src2, static void map2_pf(const SkMScalar mat[][4], const float* SK_RESTRICT src2, int count, float* SK_RESTRICT dst4) { + SkMScalar r; for (int n = 0; n < count; ++n) { - float sx = src2[0]; - float sy = src2[1]; + SkMScalar sx = SkFloatToMScalar(src2[0]); + SkMScalar sy = SkFloatToMScalar(src2[1]); for (int i = 0; i < 4; i++) { - dst4[i] = - SkMScalarToFloat(mat[0][i]) * sx + - SkMScalarToFloat(mat[1][i]) * sy + - SkMScalarToFloat(mat[3][i]); + r = mat[0][i] * sx + mat[1][i] * sy + mat[3][i]; + dst4[i] = SkMScalarToFloat(r); } src2 += 2; dst4 += 4; |