123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- import 'package:fis_measure/interfaces/date_types/rect_region.dart';
- import 'package:fis_measure/interfaces/enums/display_mode.dart';
- import 'package:fis_measure/interfaces/process/modes/mode.dart';
- import 'package:fis_measure/interfaces/enums/visual_area_type.dart';
- import 'package:fis_common/event/event_type.dart';
- import 'package:fis_measure/interfaces/process/viewports/viewport.dart';
- import 'package:fis_measure/interfaces/process/visuals/visual.dart';
- import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
- import 'package:fis_measure/process/layout/configuration.dart';
- import 'package:fis_measure/process/modes/mode_base.dart';
- import 'package:flutter/foundation.dart';
- import 'package:vid/us/vid_us_mode.dart';
- import 'package:vid/us/vid_us_visual_area_type.dart';
- abstract class VisualArea<T extends IViewPort> implements IVisualArea {
- bool _isActive = false;
- late final IVisual _visual;
- late final VidUsVisualAreaType _areaType;
- late final IMode _mode;
- IViewPort? _viewPort;
- RectRegion? _layoutRegion;
- RectRegion _displayRegion = RectRegion.fill(0, 0, 1, 1);
- VisualArea(
- IVisual visual,
- VidUsVisualAreaType areaType,
- VidUsModeType modeType,
- ) {
- _visual = visual;
- _areaType = areaType;
- _mode = matchAreaMode(modeType);
- loadData();
- }
- @override
- bool get isActive => _isActive;
- @override
- set isActive(bool value) {
- if (value != _isActive) {
- _isActive = value;
- isActiveChanged.emit(this, value);
- }
- }
- @override
- IMode get mode => _mode;
- @override
- IVisual get visual => _visual;
- @override
- IViewPort? get viewport => _viewPort;
- @override
- set viewport(IViewPort? value) {
- if (value != _viewPort) {
- _viewPort = value;
- }
- }
- @override
- RectRegion? get layoutRegion => _layoutRegion;
- @protected
- set layoutRegion(RectRegion? value) {
- if (value != _layoutRegion) {
- _layoutRegion = value;
- _updateDisplayRegion();
- }
- }
- set carotidLayoutRegioin(RectRegion? value) {
- if (value != _layoutRegion) {
- _layoutRegion = value;
- }
- }
- @override
- RectRegion get displayRegion => _displayRegion;
- @override
- VidUsVisualAreaType get visualAreaType => _areaType;
- @override
- var isActiveChanged = FEventHandler<bool>();
- /// 加载数据
- void loadData();
- @protected
- RectRegion findRegion(String section) {
- final displayMode =
- DisplayModeEnum.values[visual.visualData.displayMode.index];
- final rect = LayoutConfiguration.ins.getRect(
- section,
- VisualAreaTypeEnum.values[_areaType.index],
- displayMode,
- );
- final areaRegion = RectRegion.rect(rect);
- return areaRegion;
- }
- @protected
- ModeBase matchAreaMode(VidUsModeType type) {
- final modeInfo = visual.visualData.modes.firstWhere((e) => e.type == type);
- final mode = ModeBase(
- modeInfo.displayName,
- modeInfo.type,
- visual,
- );
- return mode;
- }
- 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);
- }
- }
|