Merge \"Fix rotated clip regions\" into nyc-mr1-dev
am: 06f13cba5f
Change-Id: I4afab3a863f1f873e9dd95ed671072874a6a4511
This commit is contained in:
@@ -530,14 +530,14 @@ void ClipArea::applyClip(const ClipBase* clip, const Matrix4& transform) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClipArea::applyTransformToRegion(const Matrix4& transform, SkRegion* region) {
|
void ClipArea::applyTransformToRegion(const Matrix4& transform, SkRegion* region) {
|
||||||
if (transform.isSimple() && !transform.isPureTranslate()) {
|
if (transform.rectToRect() && !transform.isPureTranslate()) {
|
||||||
// handle matrices with scale manually by mapping each rect
|
// handle matrices with scale manually by mapping each rect
|
||||||
SkRegion other;
|
SkRegion other;
|
||||||
SkRegion::Iterator it(*region);
|
SkRegion::Iterator it(*region);
|
||||||
while (!it.done()) {
|
while (!it.done()) {
|
||||||
Rect rect(it.rect());
|
Rect rect(it.rect());
|
||||||
transform.mapRect(rect);
|
transform.mapRect(rect);
|
||||||
rect.roundOut();
|
rect.snapGeometryToPixelBoundaries(true);
|
||||||
other.op(rect.left, rect.top, rect.right, rect.bottom, SkRegion::kUnion_Op);
|
other.op(rect.left, rect.top, rect.right, rect.bottom, SkRegion::kUnion_Op);
|
||||||
it.next();
|
it.next();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -334,5 +334,14 @@ TEST(ClipArea, applyTransformToRegion_translateScale) {
|
|||||||
EXPECT_EQ(SkIRect::MakeLTRB(12, 26, 16, 32), region.getBounds());
|
EXPECT_EQ(SkIRect::MakeLTRB(12, 26, 16, 32), region.getBounds());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(ClipArea, applyTransformToRegion_rotate90) {
|
||||||
|
SkRegion region(SkIRect::MakeLTRB(1, 2, 3, 4));
|
||||||
|
Matrix4 transform;
|
||||||
|
transform.loadRotate(90);
|
||||||
|
ClipArea::applyTransformToRegion(transform, ®ion);
|
||||||
|
EXPECT_TRUE(region.isRect());
|
||||||
|
EXPECT_EQ(SkIRect::MakeLTRB(-4, 1, -2, 3), region.getBounds());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace uirenderer
|
} // namespace uirenderer
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|||||||
Reference in New Issue
Block a user