import 'package:fis_measure/interfaces/date_types/point.dart'; import 'package:fis_measure/interfaces/process/calculators/output.dart'; import 'package:fis_measure/interfaces/process/items/types.dart'; import 'package:vid/us/vid_us_unit.dart'; import '../physical_coordinates/convex_tissue.dart'; import '../primitives/location.dart'; import 'calculator.dart'; class TissueDepthCal extends Calculator { TissueDepthCal(Location ref) : super(ref); @override void calculate() { if (ref.feature == null) return; // TODO:xxx final viewport = ref.feature!.hostVisualArea!.viewport!; final point = ref.feature!.innerPoints.first; final physicalPoint = viewport.physical!.convert(point); final value = physicalPoint.y * viewport.region.height; updateFloatValue(value); } } class MDepthCal extends Calculator { MDepthCal(Location ref) : super(ref); @override void calculate() { if (ref.feature == null) return; final viewport = ref.feature!.hostVisualArea!.viewport!; final layout = ref.feature!.hostVisualArea!.displayRegion; final point = ref.feature!.point.clone(); point.addOffset(-layout.left, -layout.top); // final physicalPoint = viewport.physical!.convert(point); final physicalPoint = viewport.convert(point); final value = physicalPoint.y; updateFloatValue(value); } } class TissueConvexDepthCal extends Calculator { TissueConvexDepthCal(Location ref) : super(ref); @override void calculate() { if (ref.feature == null) return; // TODO:xxx final layout = ref.feature!.hostVisualArea!.displayRegion; final viewport = ref.feature!.hostVisualArea!.viewport!; final physical = viewport.physical! as ConvexTissuePhysicalCoordinate; final point = ref.feature!.point.clone(); point.addOffset(-layout.left, -layout.top); final physicalPoint = viewport.convert(point); final physicalZeroPoint = DPoint(viewport.region.width / 2, physical.zeroY); final distance = (physicalPoint - physicalZeroPoint).length; final depth = distance - physical.zeroRadius; final double value = depth < 0 ? 0 : depth; updateFloatValue(value); } }