OLD | NEW |
---|---|
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 "SkFloatBits.h" | 8 #include "SkFloatBits.h" |
9 #include "SkMatrix.h" | 9 #include "SkMatrix.h" |
10 #include "SkNx.h" | 10 #include "SkNx.h" |
(...skipping 1553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1564 } else if (kMax_MinMaxOrBoth == MIN_MAX_OR_BOTH) { | 1564 } else if (kMax_MinMaxOrBoth == MIN_MAX_OR_BOTH) { |
1565 results[0] = apluscdiv2 + x; | 1565 results[0] = apluscdiv2 + x; |
1566 } else { | 1566 } else { |
1567 results[0] = apluscdiv2 - x; | 1567 results[0] = apluscdiv2 - x; |
1568 results[1] = apluscdiv2 + x; | 1568 results[1] = apluscdiv2 + x; |
1569 } | 1569 } |
1570 } | 1570 } |
1571 if (!SkScalarIsFinite(results[0])) { | 1571 if (!SkScalarIsFinite(results[0])) { |
1572 return false; | 1572 return false; |
1573 } | 1573 } |
1574 if (results[0] < 0 && results[0] > -SK_ScalarNearlyZero) { | 1574 SkASSERT(results[0] >= -SK_ScalarNearlyZero); |
reed1
2016/07/18 14:10:06
Thanks, this is better. Lets add a comment why we'
| |
1575 if (results[0] < 0) { | |
1575 results[0] = 0; | 1576 results[0] = 0; |
1576 } | 1577 } |
1577 SkASSERT(results[0] >= 0); | |
1578 results[0] = SkScalarSqrt(results[0]); | 1578 results[0] = SkScalarSqrt(results[0]); |
1579 if (kBoth_MinMaxOrBoth == MIN_MAX_OR_BOTH) { | 1579 if (kBoth_MinMaxOrBoth == MIN_MAX_OR_BOTH) { |
1580 if (!SkScalarIsFinite(results[1])) { | 1580 if (!SkScalarIsFinite(results[1])) { |
1581 return false; | 1581 return false; |
1582 } | 1582 } |
1583 if (results[1] < 0 && results[1] > -SK_ScalarNearlyZero) { | 1583 SkASSERT(results[1] >= -SK_ScalarNearlyZero); |
1584 if (results[1] < 0) { | |
1584 results[1] = 0; | 1585 results[1] = 0; |
1585 } | 1586 } |
1586 SkASSERT(results[1] >= 0); | |
1587 results[1] = SkScalarSqrt(results[1]); | 1587 results[1] = SkScalarSqrt(results[1]); |
1588 } | 1588 } |
1589 return true; | 1589 return true; |
1590 } | 1590 } |
1591 | 1591 |
1592 SkScalar SkMatrix::getMinScale() const { | 1592 SkScalar SkMatrix::getMinScale() const { |
1593 SkScalar factor; | 1593 SkScalar factor; |
1594 if (get_scale_factor<kMin_MinMaxOrBoth>(this->getType(), fMat, &factor)) { | 1594 if (get_scale_factor<kMin_MinMaxOrBoth>(this->getType(), fMat, &factor)) { |
1595 return factor; | 1595 return factor; |
1596 } else { | 1596 } else { |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1883 const SkScalar m10 = -m01; | 1883 const SkScalar m10 = -m01; |
1884 const SkScalar m11 = m00; | 1884 const SkScalar m11 = m00; |
1885 const SkScalar m12 = fTy; | 1885 const SkScalar m12 = fTy; |
1886 | 1886 |
1887 quad[0].set(m02, m12); | 1887 quad[0].set(m02, m12); |
1888 quad[1].set(m00 * width + m02, m10 * width + m12); | 1888 quad[1].set(m00 * width + m02, m10 * width + m12); |
1889 quad[2].set(m00 * width + m01 * height + m02, m10 * width + m11 * height + m 12); | 1889 quad[2].set(m00 * width + m01 * height + m02, m10 * width + m11 * height + m 12); |
1890 quad[3].set(m01 * height + m02, m11 * height + m12); | 1890 quad[3].set(m01 * height + m02, m11 * height + m12); |
1891 #endif | 1891 #endif |
1892 } | 1892 } |
OLD | NEW |