瀏覽代碼

clear frame measure cache

melon.yin 2 年之前
父節點
當前提交
cd999be38d

+ 1 - 0
lib/process/primitives/polyline.dart

@@ -12,6 +12,7 @@ import 'package:fis_measure/process/items/item_feature.dart';
 import 'package:fis_measure/process/primitives/utils/auto_snap.dart';
 import 'package:fis_measure/utils/canvas.dart';
 
+/// 折线多边形
 class Polyline extends MeasureItem<PolylineFeature> with AutoSnapMixin {
   Polyline(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
 

+ 36 - 0
lib/process/primitives/spline.dart

@@ -0,0 +1,36 @@
+import 'dart:ui';
+
+import 'package:fis_measure/interfaces/date_types/point.dart';
+import 'package:fis_measure/interfaces/process/items/item.dart';
+import 'package:fis_measure/interfaces/process/items/item_metas.dart';
+import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
+import 'package:fis_measure/process/items/item.dart';
+import 'package:fis_measure/process/items/item_feature.dart';
+
+/// 曲线连线
+class Spline extends MeasureItem<SplineFeature> {
+  Spline(ItemMeta meta, [ITopMeasureItem? parent]) : super(meta, parent);
+
+  @override
+  bool onExecuteMouse(PointInfo args) {
+    // TODO: implement onExecuteMouse
+    throw UnimplementedError();
+  }
+
+  @override
+  bool onExecuteTouch(PointInfo args) {
+    // TODO: implement onExecuteTouch
+    throw UnimplementedError();
+  }
+}
+
+class SplineFeature extends MeasureItemFeature {
+  SplineFeature(IMeasureItem refItem, DPoint point) : super(refItem) {
+    innerPoints.add(point.clone());
+  }
+
+  @override
+  void paint(Canvas canvas, Size size) {
+    // TODO: implement paint
+  }
+}

+ 1 - 1
lib/process/primitives/straightline.dart

@@ -4,7 +4,6 @@ import 'package:fis_measure/interfaces/date_types/point.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_metas.dart';
-import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
 import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
 import 'package:fis_measure/process/items/item.dart';
 import 'package:fis_measure/utils/canvas.dart';
@@ -12,6 +11,7 @@ import 'package:fis_measure/utils/canvas.dart';
 import '../calcuators/distance.dart';
 import '../items/item_feature.dart';
 
+/// 直线
 class StraightLine extends MeasureItem<StraightLineFeature> {
   StraightLine(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
 

+ 1 - 2
lib/process/primitives/trace.dart

@@ -6,8 +6,6 @@ import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
 import 'package:fis_measure/process/primitives/utils/auto_snap.dart';
-import 'package:fis_measure/utils/canvas.dart';
-import 'package:flutter/services.dart';
 import 'package:path_drawing/path_drawing.dart';
 
 import '../calcuators/area.dart';
@@ -15,6 +13,7 @@ import '../calcuators/perimeter.dart';
 import '../items/item.dart';
 import '../items/item_feature.dart';
 
+/// 手势轨迹图形
 class Trace extends MeasureItem<TraceFeature> with AutoSnapMixin {
   final bool _initialClosed = false;
   PointInfo? _firstPoint;

+ 7 - 0
lib/process/workspace/application.dart

@@ -249,6 +249,7 @@ class Application implements IApplication {
   void loadFrame(VidUsImage frame) {
     bool frameLoaded = _frame != null;
     _frame = frame;
+    _clearFrameCache();
     if (!frameLoaded && canMeasure) {
       loadVisuals();
     }
@@ -569,6 +570,12 @@ class Application implements IApplication {
     return VisualsLoader(frameData!.visuals).load();
   }
 
+  void _clearFrameCache() {
+    clearRecords();
+    _measureItems.clear();
+    _annotationItems.clear();
+  }
+
   void _updateOperateType(MeasureOperateType type) {
     if (currentOperateType == MeasureOperateType.annotation) {
       activeAnnotationItem?.finishLast();