123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import 'package:fis_common/event/event_type.dart';
- import 'package:fis_measure/interfaces/process/items/item.dart';
- import 'package:fis_measure/interfaces/process/workspace/cross_frame.dart';
- import 'package:vid/us/vid_us_image.dart';
- import 'package:vid/us/vid_us_probe.dart';
- class CrossFrameContext implements ICrossFrameContext {
- late final String _originUrl;
- late final VidUsImage _originFrame;
- late final IMeasureItem _measureItem;
- final Map<String, List<VidUsImage>> _imageFrameCache = {};
- late VidUsImage? _currentFrame;
- late String _currentUrl;
- bool _isOver = false;
- CrossFrameContext(String url, VidUsImage frame, IMeasureItem item) {
- measureAutoOver = FEventHandler<void>();
- _currentUrl = _originUrl = url;
- _currentFrame = _originFrame = frame;
- _imageFrameCache[url] = [frame];
- _measureItem = item;
- }
- int? imageCount;
- VidUsProbe? probe;
- @override
- String get originUrl => _originUrl;
- @override
- String get currentUrl => _currentUrl;
- @override
- VidUsImage? get currentFrame => _currentFrame;
- @override
- int get originIndex => _originFrame.index;
- @override
- int? get currentIndex => _currentFrame?.index;
- @override
- IMeasureItem get measureItem => _measureItem;
- @override
- List<int> get recordIndexList =>
- _imageFrameCache[_currentUrl]!.map((e) => e.index).toList();
- @override
- bool get isOver => _isOver;
- @override
- late final FEventHandler<void> measureAutoOver;
- @override
- bool switchImage(String url) {
- if (url == _currentUrl) {
- return true;
- }
- _currentUrl = url;
- _currentFrame = null;
- if (!_imageFrameCache.containsKey(url)) {
- // if (_imageFrameCache.keys.length > 1) {
- // TODO [melon][lvstudy] 暂时屏蔽跨图支持
- if (_imageFrameCache.keys.isNotEmpty) {
- // 结束测量
- finish();
- measureAutoOver.emit(this, null);
- return false;
- }
- _imageFrameCache[url] = [];
- }
- return true;
- }
- @override
- void switchFrame(VidUsImage frame) {
- if (frame == _currentFrame) {
- return;
- }
- _currentFrame = frame;
- }
- @override
- bool recordFrame(int index) {
- if (_currentFrame == null) {
- return false;
- }
- final records = _imageFrameCache[_currentUrl]!;
- if (records.contains(_currentFrame)) {
- return false;
- } else {
- records.add(_currentFrame!);
- }
- return true;
- }
- @override
- void finish() {
- _isOver = true;
- }
- }
|