diff options
author | 2015-04-16 12:18:28 -0700 | |
---|---|---|
committer | 2015-04-16 12:18:28 -0700 | |
commit | fd0ecf46ce7736a86dd38d8cfc96078e588d10a3 (patch) | |
tree | e7fe604419464cc70c70eb940258b29df0b608a2 | |
parent | 5b9f42c4d1ddc776334b3de676450f4cdaf607bd (diff) |
Add SkTPin.
Currently there exist SkScalarPin and SkPin32, and in a future change
another version is desired. This change introduces SkTPin and changes
SkScalarPin and SkPin32 to use it.
Review URL: https://codereview.chromium.org/1090003002
-rw-r--r-- | include/core/SkScalar.h | 4 | ||||
-rw-r--r-- | include/core/SkTypes.h | 15 |
2 files changed, 7 insertions, 12 deletions
diff --git a/include/core/SkScalar.h b/include/core/SkScalar.h index fae23eb23a..443454a2ef 100644 --- a/include/core/SkScalar.h +++ b/include/core/SkScalar.h @@ -175,9 +175,7 @@ static inline SkScalar SkScalarClampMax(SkScalar x, SkScalar max) { } static inline SkScalar SkScalarPin(SkScalar x, SkScalar min, SkScalar max) { - x = SkTMin(x, max); - x = SkTMax(x, min); - return x; + return SkTPin(x, min, max); } SkScalar SkScalarSinCos(SkScalar radians, SkScalar* cosValue); diff --git a/include/core/SkTypes.h b/include/core/SkTypes.h index 9014620695..c2c8f0a80b 100644 --- a/include/core/SkTypes.h +++ b/include/core/SkTypes.h @@ -400,16 +400,13 @@ static inline int32_t SkFastMin32(int32_t value, int32_t max) { return value; } -/** Returns signed 32 bit value pinned between min and max, inclusively -*/ +template <typename T> static inline const T& SkTPin(const T& x, const T& min, const T& max) { + return SkTMax(SkTMin(x, max), min); +} + +/** Returns signed 32 bit value pinned between min and max, inclusively. */ static inline int32_t SkPin32(int32_t value, int32_t min, int32_t max) { - if (value < min) { - value = min; - } - if (value > max) { - value = max; - } - return value; + return SkTPin(value, min, max); } static inline uint32_t SkSetClearShift(uint32_t bits, bool cond, |