瀏覽代碼

update(measure): 接入【设置】中【显示结果窗口】【字体大小】【显示卡尺线】【显示深度测量线】开关 Review by baka

gavin.chen 2 年之前
父節點
當前提交
6463691e9b

+ 3 - 1
lib/process/items/item_feature.dart

@@ -27,10 +27,12 @@ abstract class MeasureItemFeature implements IMeasureItemFeature {
 
   @protected
   final paintPan = Paint()
-    ..color = const Color.fromARGB(255, 255, 255, 0)
+    ..color = MeasureColors.Primary
     ..isAntiAlias = true
     ..strokeWidth = 2
     ..style = PaintingStyle.stroke;
+  Paint get paintLinePan => measureData.paintLinePan;
+  Paint get paintPointPan => measureData.paintPointPan;
 
   MeasureItemFeature(IMeasureItem refItem) {
     _refItem = refItem;

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

@@ -108,7 +108,7 @@ class CarotidIMTFeature extends MeasureItemFeature {
       }).toList();
     }).toList();
     for (var offsets in scaledOffsetsList) {
-      canvas.drawPointsLine(offsets, paintPan);
+      canvas.drawPointsLine(offsets, paintLinePan);
     }
   }
 }

+ 4 - 4
lib/process/primitives/ellipse.dart

@@ -126,14 +126,14 @@ class EllipseFeature extends AreaItemFeatureAbstract {
     }
 
     final xEndOffset = convert2ViewPoint(size, xAxisEnd).toOffset();
-    canvas.drawDashLine(xStartOffset, xEndOffset, 1, 10, paintPan);
+    canvas.drawDashLine(xStartOffset, xEndOffset, 1, 10, paintLinePan);
 
     final yStartOffset = convert2ViewPoint(size, innerPoints[2]).toOffset();
     final yEndOffset = convert2ViewPoint(size, innerPoints[3]).toOffset();
     final centroidOffset = convert2ViewPoint(size, centroid).toOffset();
-    canvas.drawDashLine(yStartOffset, yEndOffset, 1, 10, paintPan);
-    // canvas.drawDashLine(yStartOffset, xEndOffset, 1, 10, paintPan);
-    // canvas.drawDashLine(yEndOffset, xEndOffset, 1, 10, paintPan);
+    canvas.drawDashLine(yStartOffset, yEndOffset, 1, 10, paintLinePan);
+    // canvas.drawDashLine(yStartOffset, xEndOffset, 1, 10, paintLinePan);
+    // canvas.drawDashLine(yEndOffset, xEndOffset, 1, 10, paintLinePan);
 
     final radiusX = getRadiusX(size);
     final radiusY = getRadiusY(size);

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

@@ -137,6 +137,7 @@ class TissueConvexLocationFeature extends LocationFeature {
   @override
   void paint(Canvas canvas, Size size) {
     super.paint(canvas, size);
+    if (!featureStyle.showDepthGuideline) return;
     final point = this.point.clone();
 
     final layout = hostVisualArea!.displayRegion;
@@ -172,7 +173,7 @@ class TissueConvexLocationFeature extends LocationFeature {
       return;
     }
 
-    canvas.drawDashLine(viewStartPoint, viewPoint, 1, 10, paintPan);
+    canvas.drawDashLine(viewStartPoint, viewPoint, 1, 10, paintLinePan);
   }
 
   /// 找到直线(圆心到当前点)和扇形内圈的交叉点

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

@@ -117,7 +117,7 @@ class PolylineFeature extends AreaItemFeatureAbstract {
       if (isLast) {
         drawVertex(canvas, offsetB, isActive);
         if (isClosed) {
-          canvas.drawDashLine(offsetB, startOffset, 1, 10, paintPan);
+          canvas.drawDashLine(offsetB, startOffset, 1, 10, paintLinePan);
         }
       } else {
         drawVertex(canvas, offsetB, false);

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

@@ -93,7 +93,7 @@ class PolylineAngleFeature extends MeasureItemFeature {
     for (var i = 1; i < len; i++) {
       final a = innerOffsets[i - 1];
       final b = innerOffsets[i];
-      canvas.drawDashLine(a, b, 1, 10, paintPan);
+      canvas.drawDashLine(a, b, 1, 10, paintLinePan);
     }
   }
 }

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

@@ -134,7 +134,7 @@ class RayFeature extends MeasureItemFeature {
       default:
         break;
     }
-    canvas.drawDashLine(twoPoint[0], twoPoint[1], 1, 10, paintPan);
+    canvas.drawDashLine(twoPoint[0], twoPoint[1], 1, 10, paintLinePan);
   }
 
   List<Offset> calcLinePoint(Rect rect, Offset innerPoint, double angle) {

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

@@ -121,7 +121,7 @@ class SingleStraightLineFeature extends MeasureItemFeature {
     drawVertex(canvas, startOffset);
 
     final endOffset = convert2ViewPoint(size, endPoint).toOffset();
-    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintPan);
+    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintLinePan);
     drawVertex(canvas, endOffset, isActive);
   }
 }

+ 2 - 2
lib/process/primitives/spline.dart

@@ -112,7 +112,7 @@ class SplineFeature extends AreaItemFeatureAbstract {
       final endOffset = convert2ViewPoint(size, endPoint).toOffset();
       drawVertex(canvas, startOffset, true);
       drawVertex(canvas, endOffset, true);
-      canvas.drawDashLine(startOffset, endOffset, 1, 10, paintPan);
+      canvas.drawDashLine(startOffset, endOffset, 1, 10, paintLinePan);
       return;
     }
 
@@ -129,7 +129,7 @@ class SplineFeature extends AreaItemFeatureAbstract {
     final fittedOffsets =
         fittedPoints.map((e) => convert2ViewPoint(size, e).toOffset()).toList();
 
-    canvas.drawDashPointsLine(fittedOffsets, 1, 10, paintPan, close: true);
+    canvas.drawDashPointsLine(fittedOffsets, 1, 10, paintLinePan, close: true);
   }
 
   List<DPoint> getFitPoints(

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

@@ -199,7 +199,7 @@ class StraightLineFeature extends MeasureItemFeature {
     drawVertex(canvas, startOffset);
 
     final endOffset = convert2ViewPoint(size, endPoint).toOffset();
-    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintPan);
+    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintLinePan);
     drawVertex(canvas, endOffset, isActive);
   }
 }
@@ -242,7 +242,7 @@ class StraightLineSlopeFeature extends StraightLineFeature {
     drawVertex(canvas, startOffset);
 
     final endOffset = convert2ViewPoint(size, endPoint).toOffset();
-    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintPan);
+    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintLinePan);
     drawVertex(canvas, endOffset, isActive);
   }
 }
@@ -265,7 +265,7 @@ class StraightLinePhtFeature extends StraightLineFeature {
     final endOffset =
         convert2ViewPoint(size, DPoint(endPoint.x, endPointY)).toOffset();
     drawVertex(canvas, startOffset, false);
-    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintPan);
+    canvas.drawDashLine(startOffset, endOffset, 1, 10, paintLinePan);
     drawVertex(canvas, endOffset, isActive);
   }
 }

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

@@ -144,7 +144,7 @@ class TraceFeature extends AreaItemFeatureAbstract {
       }
       canvas.drawPath(
         dashPath(path, dashArray: CircularIntervalList([2.0, 10.0])),
-        paintPan,
+        paintLinePan,
       );
     }
 

+ 6 - 6
lib/process/primitives/twoline_angle.dart

@@ -88,14 +88,14 @@ class TwolineAngleFeature extends MeasureItemFeature {
     if (len == 2 || len == 3) {
       final a = innerOffsets[0];
       final b = innerOffsets[1];
-      canvas.drawLine(a, b, paintPan);
+      canvas.drawLine(a, b, paintLinePan);
     } else if (len >= 4) {
       final a = innerOffsets[0];
       final b = innerOffsets[1];
       final c = innerOffsets[2];
       final d = innerOffsets[3];
-      canvas.drawLine(a, b, paintPan);
-      canvas.drawLine(c, d, paintPan);
+      canvas.drawLine(a, b, paintLinePan);
+      canvas.drawLine(c, d, paintLinePan);
       //向量 A、B
       final vecA = Vector2(b.dx - a.dx, b.dy - a.dy);
       final vecB = Vector2(d.dx - c.dx, d.dy - c.dy);
@@ -107,7 +107,7 @@ class TwolineAngleFeature extends MeasureItemFeature {
       final p = _getIntersection(a, b, c, d);
       // 绘制角度
       canvas.drawArc(Rect.fromCircle(center: p, radius: 30), -vecBAngle, -angle,
-          false, paintPan);
+          false, paintLinePan);
       //如果交点在线段外,线段要延长至交点
       Offset p1 = _getIntersection(a, b, p, Offset(0, p.dy));
       final vecA1 = Vector2(p1.dx - a.dx, p1.dy - a.dy).normalized() * 50;
@@ -115,8 +115,8 @@ class TwolineAngleFeature extends MeasureItemFeature {
       Offset p2 = _getIntersection(c, d, p, Offset(0, p.dy));
       final vecB1 = Vector2(p2.dx - c.dx, p2.dy - c.dy).normalized() * 50;
       p2 += Offset(vecB1.x, vecB1.y);
-      canvas.drawLine(a, p1, paintPan);
-      canvas.drawLine(c, p2, paintPan);
+      canvas.drawLine(a, p1, paintLinePan);
+      canvas.drawLine(c, p2, paintLinePan);
     }
   }
 

+ 48 - 0
lib/process/workspace/measure_data_controller.dart

@@ -7,7 +7,9 @@ import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/utils/prompt_box.dart';
+import 'package:fis_measure/values/colors.dart';
 import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
+import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:vid/us/vid_us_mode.dart';
 
@@ -114,6 +116,14 @@ abstract class IMeasureDataController {
 
   String get currentMode;
   set currentMode(String value);
+
+  /// 卡尺线画笔
+  Paint get paintLinePan;
+  set paintLinePan(Paint value);
+
+  /// 标记点画笔
+  Paint get paintPointPan;
+  set paintPointPan(Paint value);
 }
 
 class MeasureDataController implements IMeasureDataController {
@@ -138,6 +148,16 @@ class MeasureDataController implements IMeasureDataController {
       PresetCommentItemResultDTO();
   List<CommentItemDTO> _measureCommentItemResult = [];
   List<ItemMetaGroup> _itemMetaListGroup = [];
+  Paint _paintLinePan = Paint()
+    ..color = MeasureColors.Primary
+    ..isAntiAlias = true
+    ..strokeWidth = 2
+    ..style = PaintingStyle.stroke;
+  Paint _paintPointPan = Paint()
+    ..color = MeasureColors.Primary
+    ..isAntiAlias = true
+    ..strokeWidth = 2
+    ..style = PaintingStyle.stroke;
   @override
   var remedicalListResultChanged = FEventHandler<List<RemedicalInfoDTO>>();
 
@@ -242,10 +262,20 @@ class MeasureDataController implements IMeasureDataController {
   set measureSystemSetting(MeasureSystemSettingDTO value) {
     if (value != _measureSystemSetting) {
       _measureSystemSetting = value;
+      setGuideline(value.showCursorLine);
       _onMeasureSystemSettingChanged();
     }
   }
 
+  /// 设置是否隐藏卡尺线
+  void setGuideline(bool isShow) {
+    if (isShow) {
+      _paintLinePan.color = MeasureColors.Primary;
+    } else {
+      _paintLinePan.color = MeasureColors.Hide;
+    }
+  }
+
   @override
   List<VidUsMode> get applicationModes => _applicationModes;
   @override
@@ -365,6 +395,24 @@ class MeasureDataController implements IMeasureDataController {
     }
   }
 
+  @override
+  Paint get paintLinePan => _paintLinePan;
+  @override
+  set paintLinePan(Paint value) {
+    if (value != _paintLinePan) {
+      _paintLinePan = value;
+    }
+  }
+
+  @override
+  Paint get paintPointPan => _paintPointPan;
+  @override
+  set paintPointPan(Paint value) {
+    if (value != _paintPointPan) {
+      _paintPointPan = value;
+    }
+  }
+
   MeasureDataController(
     this.getRemedicalList,
     this.getImageInfo,

+ 3 - 0
lib/values/colors.dart

@@ -18,4 +18,7 @@ class MeasureColors {
 
   /// 结果面板边框颜色
   static const Color ResultBorder = Color.fromARGB(255, 92, 92, 92);
+
+  /// 隐藏不显示【透明色】
+  static const Color Hide = Color.fromARGB(0, 0, 0, 0);
 }

+ 2 - 1
lib/view/measure/measure_config/widgets/measure_configuration_style.dart

@@ -328,6 +328,7 @@ class _PatternBodyState extends FState<PatternBody> {
                     setState(() {
                       measureData.measureSystemSetting.showCursorLine = value;
                     });
+                    measureData.setGuideline(value);
                   },
                   value: widget.measureSystemSetting.showCursorLine,
                 ),
@@ -431,7 +432,7 @@ class _PatternBodyState extends FState<PatternBody> {
                   value: widget.measureSystemSetting.showProtocolInWorkSheet,
                 ),
               ),
-              //显示测量注释
+              //显示测量注释 [中文翻译值]
               _PatternItem(
                 title: i18nBook.measure.showMeasureAnnotation.t,
                 item: _PatternItemSwitch(

+ 1 - 5
lib/view/mobile_view/mobile_measure_main_view.dart

@@ -408,11 +408,7 @@ class _MobileMeasureMainViewState extends State<MobileMeasureMainView> {
                     LayoutId(
                       id: _LayerLayoutIds.result,
                       child: const SizedBox(
-                          height: 200,
-                          width: 140,
-                          child: MeasureResultPanel(
-                            resultFontSize: 12,
-                          )),
+                          height: 200, width: 140, child: MeasureResultPanel()),
                     ),
                     LayoutId(
                       id: _LayerLayoutIds.canvasMagnifier,

+ 9 - 7
lib/view/result/results_panel.dart

@@ -10,9 +10,7 @@ import 'package:get/get.dart';
 import 'converter.dart';
 
 class MeasureResultPanel extends StatefulWidget {
-  const MeasureResultPanel({this.resultFontSize = 16.0, Key? key})
-      : super(key: key);
-  final double resultFontSize;
+  const MeasureResultPanel({Key? key}) : super(key: key);
 
   @override
   State<StatefulWidget> createState() => _MeasureResultPanelState();
@@ -24,12 +22,15 @@ class _MeasureResultPanelState extends State<MeasureResultPanel> {
   final measureData = Get.find<MeasureDataController>();
 
   final List<ResultLine> lines = [];
+  double resultFontSize = 16.0;
 
   bool get hasOutputs => lines.isNotEmpty;
 
   @override
   Widget build(BuildContext context) {
-    if (!hasOutputs) return const SizedBox();
+    if (!hasOutputs || !measureData.measureSystemSetting.showResultWindow) {
+      return const SizedBox();
+    }
 
     return Align(
       alignment: _getAlignmentFromLocation(
@@ -105,6 +106,7 @@ class _MeasureResultPanelState extends State<MeasureResultPanel> {
 
   /// 样式更新事件监听
   _onMeasureSystemSettingChanged(_, e) {
+    resultFontSize = measureData.measureSystemSetting.fontSize.toDouble();
     setState(() {});
   }
 
@@ -141,7 +143,7 @@ class _MeasureResultPanelState extends State<MeasureResultPanel> {
       FText(
         result.label,
         style: TextStyle(
-          fontSize: widget.resultFontSize,
+          fontSize: resultFontSize,
           color: MeasureColors.Primary,
         ),
       ),
@@ -149,7 +151,7 @@ class _MeasureResultPanelState extends State<MeasureResultPanel> {
       FText(
         result.value ?? '',
         style: TextStyle(
-          fontSize: widget.resultFontSize,
+          fontSize: resultFontSize,
           color: MeasureColors.Primary,
         ),
       ),
@@ -160,7 +162,7 @@ class _MeasureResultPanelState extends State<MeasureResultPanel> {
     return FText(
       title,
       style: TextStyle(
-        fontSize: widget.resultFontSize - 2,
+        fontSize: resultFontSize - 2,
         color: MeasureColors.Primary,
       ),
     );