|
@@ -16,7 +16,8 @@ abstract class VisualArea<T extends IViewPort> implements IVisualArea {
|
|
|
late final VidUsVisualAreaType _areaType;
|
|
|
late final IMode _mode;
|
|
|
IViewPort? _viewPort;
|
|
|
- RectRegion? _displayRegion;
|
|
|
+ RectRegion? _layoutRegion;
|
|
|
+ RectRegion _displayRegion = RectRegion.fill(0, 0, 1, 1);
|
|
|
|
|
|
VisualArea(IVisual visual, IMode mode) {
|
|
|
_visual = visual;
|
|
@@ -52,14 +53,18 @@ abstract class VisualArea<T extends IViewPort> implements IVisualArea {
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
- RectRegion? get displayRegion => _displayRegion;
|
|
|
+ RectRegion? get layoutRegion => _layoutRegion;
|
|
|
@protected
|
|
|
- set displayRegion(RectRegion? value) {
|
|
|
- if (value != _displayRegion) {
|
|
|
- _displayRegion = value;
|
|
|
+ set layoutRegion(RectRegion? value) {
|
|
|
+ if (value != _layoutRegion) {
|
|
|
+ _layoutRegion = value;
|
|
|
+ _updateDisplayRegion();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @override
|
|
|
+ RectRegion get displayRegion => _displayRegion;
|
|
|
+
|
|
|
@override
|
|
|
VidUsVisualAreaType get visualAreaType => _areaType;
|
|
|
|
|
@@ -79,4 +84,17 @@ abstract class VisualArea<T extends IViewPort> implements IVisualArea {
|
|
|
final areaRegion = RectRegion.rect(rect);
|
|
|
return areaRegion;
|
|
|
}
|
|
|
+
|
|
|
+ void _updateDisplayRegion() {
|
|
|
+ if (layoutRegion == null) {
|
|
|
+ _displayRegion = RectRegion.fill(0, 0, 1, 1);
|
|
|
+ }
|
|
|
+ final parent = visual.region;
|
|
|
+ final child = layoutRegion!;
|
|
|
+ final x = parent.left + child.left * parent.width;
|
|
|
+ final y = parent.top + child.top * parent.height;
|
|
|
+ final width = child.width * parent.width;
|
|
|
+ final height = child.height * parent.height;
|
|
|
+ _displayRegion = RectRegion.fill(x, y, width, height);
|
|
|
+ }
|
|
|
}
|