Improve clip support (add intersect, union and replace.)
This change also modifies the way the clip is stored. The clip is now
always stored in screen-space coordinates.
Change-Id: I96375784d82dfe975bc6477a159e6866e7052487
diff --git a/libs/hwui/Rect.h b/libs/hwui/Rect.h
index ad57550..7be0c340 100644
--- a/libs/hwui/Rect.h
+++ b/libs/hwui/Rect.h
@@ -129,6 +129,25 @@
return intersect(r.left, r.top, r.right, r.bottom);
}
+ bool unionWith(const Rect& r) {
+ if (r.left < r.right && r.top < r.bottom) {
+ if (left < right && top < bottom) {
+ if (left > r.left) left = r.left;
+ if (top > r.top) top = r.top;
+ if (right < r.right) right = r.right;
+ if (bottom < r.bottom) bottom = r.bottom;
+ return true;
+ } else {
+ left = r.left;
+ top = r.top;
+ right = r.right;
+ bottom = r.bottom;
+ return true;
+ }
+ }
+ return false;
+ }
+
void dump() const {
LOGD("Rect[l=%f t=%f r=%f b=%f]", left, top, right, bottom);
}