|
@@ -1,5 +1,6 @@
|
|
import 'dart:ui';
|
|
import 'dart:ui';
|
|
|
|
|
|
|
|
+import 'package:fis_jsonrpc/rpc.dart';
|
|
import 'package:fis_measure/interfaces/date_types/point.dart';
|
|
import 'package:fis_measure/interfaces/date_types/point.dart';
|
|
import 'package:fis_measure/interfaces/enums/items.dart';
|
|
import 'package:fis_measure/interfaces/enums/items.dart';
|
|
import 'package:fis_measure/interfaces/process/items/item.dart';
|
|
import 'package:fis_measure/interfaces/process/items/item.dart';
|
|
@@ -15,11 +16,13 @@ import 'package:fis_measure/process/calcuators/urm_calcuators/urm_rect_vel_measu
|
|
import 'package:fis_measure/process/items/item.dart';
|
|
import 'package:fis_measure/process/items/item.dart';
|
|
import 'package:fis_measure/utils/canvas.dart';
|
|
import 'package:fis_measure/utils/canvas.dart';
|
|
import 'package:fis_measure/utils/prompt_box.dart';
|
|
import 'package:fis_measure/utils/prompt_box.dart';
|
|
|
|
+import 'dart:ui' as ui;
|
|
|
|
|
|
import '../../items/item_feature.dart';
|
|
import '../../items/item_feature.dart';
|
|
|
|
|
|
class URMRectMeasure extends MeasureItem<URMRectFeature> {
|
|
class URMRectMeasure extends MeasureItem<URMRectFeature> {
|
|
URMRectMeasure(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
|
|
URMRectMeasure(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
|
|
|
|
+ static bool needPerfusion = false;
|
|
|
|
|
|
static URMRectMeasure createMeasureRect(ItemMeta meta,
|
|
static URMRectMeasure createMeasureRect(ItemMeta meta,
|
|
[IMeasureItem? parent]) {
|
|
[IMeasureItem? parent]) {
|
|
@@ -57,6 +60,7 @@ class URMRectMeasure extends MeasureItem<URMRectFeature> {
|
|
|
|
|
|
static URMRectMeasure createURMRectPerfusion(ItemMeta meta,
|
|
static URMRectMeasure createURMRectPerfusion(ItemMeta meta,
|
|
[IMeasureItem? parent]) {
|
|
[IMeasureItem? parent]) {
|
|
|
|
+ needPerfusion = true;
|
|
URMRectMeasure measureRect = URMRectMeasure(meta, parent);
|
|
URMRectMeasure measureRect = URMRectMeasure(meta, parent);
|
|
measureRect.calculator = URMRectPerfusionCal(
|
|
measureRect.calculator = URMRectPerfusionCal(
|
|
measureRect,
|
|
measureRect,
|
|
@@ -137,10 +141,18 @@ class URMRectMeasure extends MeasureItem<URMRectFeature> {
|
|
// TODO: 判断是否当前area
|
|
// TODO: 判断是否当前area
|
|
// 转换为Area逻辑位置
|
|
// 转换为Area逻辑位置
|
|
final point = args.toAreaLogicPoint();
|
|
final point = args.toAreaLogicPoint();
|
|
- feature = URMRectFeature(this, point, point);
|
|
|
|
- if (args.hostVisualArea != null) {
|
|
|
|
- feature!.hostVisualArea = args.hostVisualArea;
|
|
|
|
|
|
+ if (needPerfusion) {
|
|
|
|
+ feature = RectPerfusionImageFeature(this, point, point);
|
|
|
|
+ if (args.hostVisualArea != null) {
|
|
|
|
+ feature!.hostVisualArea = args.hostVisualArea;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ feature = URMRectFeature(this, point, point);
|
|
|
|
+ if (args.hostVisualArea != null) {
|
|
|
|
+ feature!.hostVisualArea = args.hostVisualArea;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
state = ItemStates.running;
|
|
state = ItemStates.running;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -188,3 +200,36 @@ class URMRectFeature extends MeasureItemFeature {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+class RectPerfusionImageFeature extends URMRectFeature {
|
|
|
|
+ RectPerfusionImageFeature(
|
|
|
|
+ IMeasureItem refItem,
|
|
|
|
+ DPoint startPoint,
|
|
|
|
+ DPoint endPoint,
|
|
|
|
+ ) : super(refItem, startPoint, endPoint);
|
|
|
|
+
|
|
|
|
+ ui.Image? perfusionImg;
|
|
|
|
+ IntRect? perfusionPiexlRect;
|
|
|
|
+ Rect? perfusionScaleDRect;
|
|
|
|
+ @override
|
|
|
|
+ void paint(Canvas canvas, Size size) {
|
|
|
|
+ if (perfusionImg != null) {
|
|
|
|
+ Paint paint = Paint();
|
|
|
|
+
|
|
|
|
+ Rect src = Rect.fromLTWH(
|
|
|
|
+ 0,
|
|
|
|
+ 0,
|
|
|
|
+ perfusionImg!.width.toDouble(),
|
|
|
|
+ perfusionImg!.height.toDouble(),
|
|
|
|
+ );
|
|
|
|
+ Rect dst = Rect.fromLTWH(
|
|
|
|
+ perfusionScaleDRect!.left.toDouble() * size.width,
|
|
|
|
+ perfusionScaleDRect!.top.toDouble() * size.height,
|
|
|
|
+ perfusionScaleDRect!.width.toDouble() * size.width,
|
|
|
|
+ perfusionScaleDRect!.height.toDouble() * size.height,
|
|
|
|
+ );
|
|
|
|
+ canvas.drawImageRect(perfusionImg!, src, dst, paint);
|
|
|
|
+ }
|
|
|
|
+ super.paint(canvas, size);
|
|
|
|
+ }
|
|
|
|
+}
|