two_ray.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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/process/calcuators/ray.dart';
  4. import 'package:fis_measure/process/items/top_item_feature.dart';
  5. import 'package:fis_measure/process/primitives/ray.dart';
  6. import 'package:fis_measure/process/items/item.dart';
  7. import 'package:fis_measure/process/items/item_feature.dart';
  8. import 'package:fis_measure/process/items/top_item.dart';
  9. abstract class TwoRayAbstract<T extends MeasureItemFeature>
  10. extends TopMeasureItem<T> {
  11. TwoRayAbstract(ItemMeta meta) : super(meta);
  12. MeasureItem get child1;
  13. MeasureItem get child2;
  14. }
  15. class TwoRay extends TwoRayAbstract<TwoRayFeature> {
  16. @override
  17. bool get ifAutoFinish => true;
  18. @override
  19. bool get ifAutoStart => true;
  20. @override
  21. bool get finishAfterUnactive => false;
  22. late final Ray x;
  23. late final Ray y;
  24. TwoRay(ItemMeta meta) : super(meta) {
  25. final metaX = meta.childItems[0];
  26. final metaY = meta.childItems[1];
  27. x = Ray.createRay(metaX, this);
  28. y = Ray.createRay(metaY, this);
  29. //TODO:[Gavin] angle 没有传来,暂时写死
  30. y.initializeAngle = 45;
  31. childItems.add(x);
  32. childItems.add(y);
  33. }
  34. @override
  35. Ray get child1 => x;
  36. @override
  37. Ray get child2 => y;
  38. @override
  39. TwoRayFeature buildFeature() => TwoRayFeature(this);
  40. @override
  41. void onCancelingOnce() {}
  42. static TwoRay createTwoRay(ItemMeta meta, [IMeasureItem? parent]) {
  43. TwoRay twoRay = TwoRay(meta);
  44. twoRay.calculator = RayDepthCal(twoRay.child1);
  45. return twoRay;
  46. }
  47. }
  48. class TwoRayFeature extends TopMeasureItemFeature {
  49. TwoRayFeature(
  50. ITopMeasureItem refItem,
  51. ) : super(refItem);
  52. }