Unverified Commit cac8835d authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

Update annotated region findAll implementation to use Iterable (#35725)

parent bcd28e7e
...@@ -524,10 +524,12 @@ class ContainerLayer extends Layer { ...@@ -524,10 +524,12 @@ class ContainerLayer extends Layer {
'for more details.'), 'for more details.'),
library: 'rendering library', library: 'rendering library',
context: ErrorDescription('during compositing'), context: ErrorDescription('during compositing'),
informationCollector: () sync* { informationCollector: () {
yield child.toDiagnosticsNode(name: 'Attempted to composite layer', style: DiagnosticsTreeStyle.errorProperty); return <DiagnosticsNode>[
yield predecessor.toDiagnosticsNode(name: 'after layer', style: DiagnosticsTreeStyle.errorProperty); child.toDiagnosticsNode(name: 'Attempted to composite layer', style: DiagnosticsTreeStyle.errorProperty),
yield ErrorDescription('which occupies the same area at a higher elevation.'); predecessor.toDiagnosticsNode(name: 'after layer', style: DiagnosticsTreeStyle.errorProperty),
ErrorDescription('which occupies the same area at a higher elevation.'),
];
} }
)); ));
return <PictureLayer>[ return <PictureLayer>[
...@@ -615,16 +617,18 @@ class ContainerLayer extends Layer { ...@@ -615,16 +617,18 @@ class ContainerLayer extends Layer {
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
Iterable<S> result = Iterable<S>.empty();
if (firstChild == null) if (firstChild == null)
return; return result;
Layer child = lastChild; Layer child = lastChild;
while (true) { while (true) {
yield* child.findAll<S>(regionOffset); result = result.followedBy(child.findAll<S>(regionOffset));
if (child == firstChild) if (child == firstChild)
break; break;
child = child.previousSibling; child = child.previousSibling;
} }
return result;
} }
@override @override
...@@ -1006,10 +1010,10 @@ class ClipRectLayer extends ContainerLayer { ...@@ -1006,10 +1010,10 @@ class ClipRectLayer extends ContainerLayer {
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
if (!clipRect.contains(regionOffset)) if (!clipRect.contains(regionOffset))
return; return Iterable<S>.empty();
yield* super.findAll<S>(regionOffset); return super.findAll<S>(regionOffset);
} }
@override @override
...@@ -1087,10 +1091,10 @@ class ClipRRectLayer extends ContainerLayer { ...@@ -1087,10 +1091,10 @@ class ClipRRectLayer extends ContainerLayer {
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
if (!clipRRect.contains(regionOffset)) if (!clipRRect.contains(regionOffset))
return; return Iterable<S>.empty();
yield* super.findAll<S>(regionOffset); return super.findAll<S>(regionOffset);
} }
@override @override
...@@ -1168,10 +1172,10 @@ class ClipPathLayer extends ContainerLayer { ...@@ -1168,10 +1172,10 @@ class ClipPathLayer extends ContainerLayer {
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
if (!clipPath.contains(regionOffset)) if (!clipPath.contains(regionOffset))
return; return Iterable<S>.empty();
yield* super.findAll<S>(regionOffset); return super.findAll<S>(regionOffset);
} }
@override @override
...@@ -1264,12 +1268,12 @@ class TransformLayer extends OffsetLayer { ...@@ -1264,12 +1268,12 @@ class TransformLayer extends OffsetLayer {
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
final Offset transformedOffset = _transformOffset(regionOffset); final Offset transformedOffset = _transformOffset(regionOffset);
if (transformedOffset == null) { if (transformedOffset == null) {
return; return Iterable<S>.empty();
} }
yield* super.findAll<S>(transformedOffset); return super.findAll<S>(transformedOffset);
} }
@override @override
...@@ -1582,10 +1586,10 @@ class PhysicalModelLayer extends ContainerLayer { ...@@ -1582,10 +1586,10 @@ class PhysicalModelLayer extends ContainerLayer {
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
if (!clipPath.contains(regionOffset)) if (!clipPath.contains(regionOffset))
return; return Iterable<S>.empty();
yield* super.findAll<S>(regionOffset); return super.findAll<S>(regionOffset);
} }
@override @override
...@@ -2031,20 +2035,21 @@ class AnnotatedRegionLayer<T> extends ContainerLayer { ...@@ -2031,20 +2035,21 @@ class AnnotatedRegionLayer<T> extends ContainerLayer {
final S typedResult = untypedResult; final S typedResult = untypedResult;
return typedResult; return typedResult;
} }
return super.find<S>(regionOffset); return null;
} }
@override @override
Iterable<S> findAll<S>(Offset regionOffset) sync* { Iterable<S> findAll<S>(Offset regionOffset) {
yield* super.findAll<S>(regionOffset); final Iterable<S> childResults = super.findAll<S>(regionOffset);
if (size != null && !(offset & size).contains(regionOffset)) { if (size != null && !(offset & size).contains(regionOffset)) {
return; return childResults;
} }
if (T == S) { if (T == S) {
final Object untypedResult = value; final Object untypedResult = value;
final S typedResult = untypedResult; final S typedResult = untypedResult;
yield typedResult; return childResults.followedBy(<S>[typedResult]);
} }
return childResults;
} }
@override @override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment