未验证 提交 247139a8 编写于 作者: F Ferhat 提交者: GitHub

[web] Fix transform not invalidating path bounds causing debugValidate failure (#22172)

上级 b54bb88f
......@@ -42,7 +42,9 @@ class PathRef {
static const int kInitialPointsCapacity = 8;
static const int kInitialVerbsCapacity = 8;
/// Bounds of points that define path.
ui.Rect? fBounds;
/// Computed tight bounds of path (may exclude curve control points).
ui.Rect? cachedBounds;
int _fPointsCapacity = 0;
int _fPointsLength = 0;
......@@ -730,6 +732,7 @@ class PathRef {
fIsRRect = false;
fIsRect = false;
cachedBounds = null;
fBoundsIsDirty = true;
}
void setIsOval(bool isOval, bool isCCW, int start) {
......
......@@ -536,5 +536,19 @@ void testMain() {
end = iter.skipToNextContour();
expect(start, end);
});
/// Regression test for https://github.com/flutter/flutter/issues/68702.
test('Path should return correct bounds after transform', () {
final Path path1 = Path()
..moveTo(100, 100)
..lineTo(200, 100)
..lineTo(150, 200)
..close();
final SurfacePath path2 = Path.from(path1) as SurfacePath;
Rect bounds = path2.pathRef.getBounds();
SurfacePath transformedPath = path2.transform(
Matrix4.identity().scaled(0.5, 0.5).toFloat64());
expect(transformedPath.pathRef.getBounds(), isNot(bounds));
});
});
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册