depth2baseline.dart 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import 'package:fis_measure/interfaces/process/items/item.dart';
  2. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  3. import 'package:fis_measure/interfaces/process/items/types.dart';
  4. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  5. import 'package:fis_measure/process/calcuators/depth2baseline.dart';
  6. import 'package:fis_measure/process/items/top_item.dart';
  7. import 'package:fis_measure/process/items/top_item_feature.dart';
  8. import 'package:fis_measure/process/primitives/location.dart';
  9. import 'package:fis_measure/process/primitives/ray.dart';
  10. class DepthToBaseLine extends TopMeasureItem<DepthToBaseLineFeature> {
  11. late final Ray baseline;
  12. late final Location depth;
  13. DepthToBaseLine(ItemMeta meta) : super(meta) {
  14. final metaBaseLine = meta.getChildByType(MeasureTypes.Ray)!;
  15. final metaDepth = meta.getChildByType(MeasureTypes.Distance)!;
  16. baseline = Ray.createRay(metaBaseLine, this);
  17. depth = Location.createTissueDepth(metaDepth, this);
  18. childItems.add(baseline);
  19. childItems.add(depth);
  20. }
  21. @override
  22. bool get finishAfterUnactive => true;
  23. @override
  24. DepthToBaseLineFeature buildFeature() => DepthToBaseLineFeature(this);
  25. @override
  26. bool onExecuteMouse(PointInfo args) {
  27. if (feature == null) {
  28. feature = buildFeature();
  29. listenChildrenUpdate();
  30. }
  31. if (args.pointType == PointInfoType.mouseDown) {
  32. if (childrenAllDone) {
  33. workingChild.clear();
  34. }
  35. }
  36. feature?.hostVisualArea = args.hostVisualArea;
  37. if (!childrenAllDone) {
  38. final result = workingChild.execute(args);
  39. if (result) {
  40. doCalculate();
  41. }
  42. return result;
  43. }
  44. return true;
  45. }
  46. static DepthToBaseLine createDepthToBaseLine(ItemMeta meta,
  47. [IMeasureItem? parent]) {
  48. if (meta.measureType != MeasureTypes.DepthToBaseLine) {
  49. throw ArgumentError();
  50. }
  51. var location = DepthToBaseLine(meta);
  52. location.calculator = DistanceToRayCal(location);
  53. return location;
  54. }
  55. }
  56. class DepthToBaseLineFeature extends TopMeasureItemFeature {
  57. DepthToBaseLineFeature(
  58. DepthToBaseLine refItem,
  59. ) : super(refItem);
  60. }