Bug 1477260 - Clip the rect in Matrix4x4TypedFlagged::TransformAndClipBounds, when transform is an identity matrix
MozReview-Commit-ID: 3a8vnl3K87n
--- a/gfx/2d/Matrix.h
+++ b/gfx/2d/Matrix.h
@@ -1902,17 +1902,19 @@ public:
return Parent::TransformPoint(aPoint);
}
template<class F>
RectTyped<TargetUnits, F> TransformAndClipBounds(const RectTyped<SourceUnits, F>& aRect,
const RectTyped<TargetUnits, F>& aClip) const
{
if (mType == MatrixType::Identity) {
- return aRect;
+ const RectTyped<SourceUnits, F>& clipped = aRect.Intersect(aClip);
+ return RectTyped<TargetUnits, F>(clipped.X(), clipped.Y(),
+ clipped.Width(), clipped.Height());
}
if (mType == MatrixType::Simple) {
PointTyped<UnknownUnits, F> p1 = TransformPointSimple(aRect.TopLeft());
PointTyped<UnknownUnits, F> p2 = TransformPointSimple(aRect.TopRight());
PointTyped<UnknownUnits, F> p3 = TransformPointSimple(aRect.BottomLeft());
PointTyped<UnknownUnits, F> p4 = TransformPointSimple(aRect.BottomRight());