Better support for rotation and perspective matrices.
Change-Id: I56b5ae3321735ba5ee42aafc9bc0eb399b9e75b5
diff --git a/libs/hwui/Snapshot.h b/libs/hwui/Snapshot.h
index 342e5b1..9495bee 100644
--- a/libs/hwui/Snapshot.h
+++ b/libs/hwui/Snapshot.h
@@ -96,14 +96,9 @@
bool clip(float left, float top, float right, float bottom, SkRegion::Op op) {
bool clipped = false;
- SkRect sr;
- sr.set(left, top, right, bottom);
+ Rect r(left, top, right, bottom);
+ transform.mapRect(r);
- SkMatrix m;
- transform.copyTo(m);
- m.mapRect(&sr);
-
- Rect r(sr.fLeft, sr.fTop, sr.fRight, sr.fBottom);
switch (op) {
case SkRegion::kDifference_Op:
break;
@@ -143,14 +138,8 @@
mat4 inverse;
inverse.loadInverse(transform);
- SkRect sr;
- sr.set(clipRect.left, clipRect.top, clipRect.right, clipRect.bottom);
-
- SkMatrix m;
- inverse.copyTo(m);
- m.mapRect(&sr);
-
- localClip.set(sr.fLeft, sr.fTop, sr.fRight, sr.fBottom);
+ localClip.set(clipRect);
+ inverse.mapRect(localClip);
flags &= ~Snapshot::kFlagDirtyLocalClip;
}