OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #ifndef SkRect_DEFINED | 10 #ifndef SkRect_DEFINED |
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
725 * Set the dst rectangle by rounding this rectangle's coordinates to their | 725 * Set the dst rectangle by rounding this rectangle's coordinates to their |
726 * nearest integer values using SkScalarRoundToInt. | 726 * nearest integer values using SkScalarRoundToInt. |
727 */ | 727 */ |
728 void round(SkIRect* dst) const { | 728 void round(SkIRect* dst) const { |
729 SkASSERT(dst); | 729 SkASSERT(dst); |
730 dst->set(SkScalarRoundToInt(fLeft), SkScalarRoundToInt(fTop), | 730 dst->set(SkScalarRoundToInt(fLeft), SkScalarRoundToInt(fTop), |
731 SkScalarRoundToInt(fRight), SkScalarRoundToInt(fBottom)); | 731 SkScalarRoundToInt(fRight), SkScalarRoundToInt(fBottom)); |
732 } | 732 } |
733 | 733 |
734 /** | 734 /** |
| 735 * Variant of round() that explicitly performs the rounding step (i.e. floo
r(x + 0.5)) using |
| 736 * double instead of SkScalar (float). It does this by calling SkDScalarRou
ndToInt(), which |
| 737 * may be slower than calling SkScalarRountToInt(), but gives slightly more
accurate results. |
| 738 * |
| 739 * e.g. |
| 740 * SkScalar x = 0.49999997f; |
| 741 * int ix = SkScalarRoundToInt(x); |
| 742 * SkASSERT(0 == ix); // <--- fails |
| 743 * ix = SkDScalarRoundToInt(x); |
| 744 * SkASSERT(0 == ix); // <--- succeeds |
| 745 */ |
| 746 void dround(SkIRect* dst) const { |
| 747 SkASSERT(dst); |
| 748 dst->set(SkDScalarRoundToInt(fLeft), SkDScalarRoundToInt(fTop), |
| 749 SkDScalarRoundToInt(fRight), SkDScalarRoundToInt(fBottom)); |
| 750 } |
| 751 |
| 752 /** |
735 * Set the dst rectangle by rounding "out" this rectangle, choosing the | 753 * Set the dst rectangle by rounding "out" this rectangle, choosing the |
736 * SkScalarFloor of top and left, and the SkScalarCeil of right and bottom. | 754 * SkScalarFloor of top and left, and the SkScalarCeil of right and bottom. |
737 */ | 755 */ |
738 void roundOut(SkIRect* dst) const { | 756 void roundOut(SkIRect* dst) const { |
739 SkASSERT(dst); | 757 SkASSERT(dst); |
740 dst->set(SkScalarFloorToInt(fLeft), SkScalarFloorToInt(fTop), | 758 dst->set(SkScalarFloorToInt(fLeft), SkScalarFloorToInt(fTop), |
741 SkScalarCeilToInt(fRight), SkScalarCeilToInt(fBottom)); | 759 SkScalarCeilToInt(fRight), SkScalarCeilToInt(fBottom)); |
742 } | 760 } |
743 | 761 |
744 /** | 762 /** |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 */ | 801 */ |
784 void sort(); | 802 void sort(); |
785 | 803 |
786 /** | 804 /** |
787 * cast-safe way to treat the rect as an array of (4) SkScalars. | 805 * cast-safe way to treat the rect as an array of (4) SkScalars. |
788 */ | 806 */ |
789 const SkScalar* asScalars() const { return &fLeft; } | 807 const SkScalar* asScalars() const { return &fLeft; } |
790 }; | 808 }; |
791 | 809 |
792 #endif | 810 #endif |
OLD | NEW |