Index: include/core/SkRect.h |
diff --git a/include/core/SkRect.h b/include/core/SkRect.h |
index 39cbb330f82b207cd6a508570fe41f1372353590..c71d71259b6fbdda35d5ef6bc2d2cb0a854be44b 100644 |
--- a/include/core/SkRect.h |
+++ b/include/core/SkRect.h |
@@ -10,6 +10,7 @@ |
#include "SkPoint.h" |
#include "SkSize.h" |
+#include "../private/SkNx.h" |
struct SkRect; |
@@ -869,7 +870,28 @@ public: |
this->roundOut(&ir); |
return ir; |
} |
- |
+ |
+ /** |
+ * Round the rect's values and return the result as a new SkIRect. |
+ * This follows the same semantics as SkScalarRoundToInt(). |
+ */ |
+ SkIRect round2i() const { |
+ SkIRect dst; |
+ Sk4s rd = (Sk4s::Load(&fLeft) + Sk4s(0.5)).floor(); |
+ SkNx_cast<int32_t>(rd).store(&dst.fLeft); |
+ return dst; |
+ } |
+ |
+ /** |
+ * Round the rect's values and return the result as a new SkRect. |
+ * This follows the same semantics as SkScalarRoundToScalar(). |
+ */ |
+ SkRect round2s() const { |
+ SkRect dst; |
+ (Sk4s::Load(&fLeft) + Sk4s(0.5)).floor().store(&dst.fLeft); |
+ return dst; |
+ } |
+ |
/** |
* Swap top/bottom or left/right if there are flipped (i.e. if width() |
* or height() would have returned a negative value.) This should be called |