measure_handler.dart 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. import 'dart:core';
  2. import 'package:fis_common/event/event_type.dart';
  3. import 'package:fis_jsonrpc/rpc.dart';
  4. import 'package:fis_measure/interfaces/enums/annotation.dart';
  5. import 'package:fis_measure/view/measure/tool_chest_title.dart';
  6. class ChangeImageInfo {
  7. /// 图片地址
  8. final String? imageUrl;
  9. /// 图像编码
  10. final String? remedicalCode;
  11. ChangeImageInfo(
  12. this.imageUrl,
  13. this.remedicalCode,
  14. );
  15. }
  16. class MeasureModeSelection {
  17. /// 应用名称:读取Vid获取应用
  18. final String? applicationName;
  19. /// 分类名称:读取Vid获取应用分类名称
  20. final String? categoryName;
  21. /// 测量模式集合:读取Vid获取应用的模式集合,返回对应测量数据
  22. final List<String>? measureModes;
  23. MeasureModeSelection(
  24. this.applicationName,
  25. this.categoryName,
  26. this.measureModes,
  27. );
  28. }
  29. class MeasureModeSubmit {
  30. /// 版本号
  31. final String? version;
  32. /// 应用名称,读取Vid获取应用
  33. final String? applicationName;
  34. /// 分类名称:读取Vid获取应用分类名称
  35. final String? categoryName;
  36. /// 测量模式
  37. final UserDefinedMeasureModeDTO? workingMode;
  38. MeasureModeSubmit(
  39. this.version,
  40. this.applicationName,
  41. this.categoryName,
  42. this.workingMode,
  43. );
  44. }
  45. abstract class IMeasureHandler {
  46. /// 测量切换图片事件
  47. late FEventHandler<ChangeImageInfo> onImageChanged;
  48. /// 测量方式选择
  49. late FEventHandler<MeasureModeSelection> onMeasureModeSelectionChanged;
  50. /// 测量方式提交
  51. late FEventHandler<MeasureModeSubmit> onMeasureModeSubmitChanged;
  52. /// 测量还是注释tab
  53. late FEventHandler<TabEnum> onChangedTab;
  54. /// 注释箭头还是标签
  55. late FEventHandler<AnnotationType> onChangedAnnotationType;
  56. /// 拖拽状态发生改变
  57. late FEventHandler<bool> onDragStateChanged;
  58. /// 图片加载loadding
  59. late FEventHandler<bool> onChangeImageLoaded;
  60. /// 通过 remedicalCode 切换图片
  61. late FEventHandler<String> changeImageByRemedicalCode;
  62. /// 更新图片列表
  63. late FEventHandler<List<RemedicalInfoDTO>> changeImageList;
  64. late FEventHandler<bool> onChangeFullScreenState;
  65. late FEventHandler<void> annotationsLoaded;
  66. /// 切换图像传递数据
  67. ChangeImageInfo get imageChanged;
  68. set imageChanged(ChangeImageInfo value);
  69. /// 切换图像测量方式变更数据
  70. MeasureModeSelection get measureModeChanged;
  71. set measureModeChanged(MeasureModeSelection value);
  72. /// 测量方式变更提交
  73. MeasureModeSubmit get measureModeSubmitChanged;
  74. set measureModeSubmitChanged(MeasureModeSubmit value);
  75. /// 切换Tab
  76. TabEnum get changedTab;
  77. set changedTab(TabEnum value);
  78. /// 切换注释
  79. AnnotationType get changedAnnotationType;
  80. set changedAnnotationType(AnnotationType value);
  81. /// 切换图片
  82. bool get changeImageLoaded;
  83. set changeImageLoaded(bool value);
  84. /// 全屏状态
  85. bool get fullScreenState;
  86. set fullScreenState(bool value);
  87. }
  88. class MeasureHandler implements IMeasureHandler {
  89. ChangeImageInfo _imageChanged = ChangeImageInfo(null, null);
  90. MeasureModeSelection _measureModeChanged =
  91. MeasureModeSelection(null, null, null);
  92. MeasureModeSubmit _measureModeSubmitChanged =
  93. MeasureModeSubmit(null, null, null, null);
  94. TabEnum _changedTab = TabEnum.tabMeasureTool;
  95. bool _changeImageLoaded = true;
  96. bool _fullScreenState = false;
  97. AnnotationType _changedAnnotationType = AnnotationType.label;
  98. @override
  99. var onImageChanged = FEventHandler<ChangeImageInfo>();
  100. @override
  101. var onMeasureModeSelectionChanged = FEventHandler<MeasureModeSelection>();
  102. @override
  103. var onMeasureModeSubmitChanged = FEventHandler<MeasureModeSubmit>();
  104. @override
  105. var onChangedTab = FEventHandler<TabEnum>();
  106. @override
  107. var onChangedAnnotationType = FEventHandler<AnnotationType>();
  108. @override
  109. var onDragStateChanged = FEventHandler<bool>();
  110. @override
  111. FEventHandler<bool> onChangeImageLoaded = FEventHandler<bool>();
  112. @override
  113. FEventHandler<String> changeImageByRemedicalCode = FEventHandler<String>();
  114. @override
  115. FEventHandler<List<RemedicalInfoDTO>> changeImageList =
  116. FEventHandler<List<RemedicalInfoDTO>>();
  117. @override
  118. FEventHandler<bool> onChangeFullScreenState = FEventHandler<bool>();
  119. @override
  120. var annotationsLoaded = FEventHandler<void>();
  121. @override
  122. ChangeImageInfo get imageChanged => _imageChanged;
  123. @override
  124. MeasureModeSelection get measureModeChanged => _measureModeChanged;
  125. @override
  126. MeasureModeSubmit get measureModeSubmitChanged => _measureModeSubmitChanged;
  127. @override
  128. TabEnum get changedTab => _changedTab;
  129. @override
  130. AnnotationType get changedAnnotationType => _changedAnnotationType;
  131. @override
  132. bool get changeImageLoaded => _changeImageLoaded;
  133. @override
  134. bool get fullScreenState => _fullScreenState;
  135. @override
  136. set fullScreenState(bool value) {
  137. if (value != _fullScreenState) {
  138. _fullScreenState = value;
  139. _onChangeFullScreenState();
  140. }
  141. }
  142. @override
  143. set changeImageLoaded(bool value) {
  144. if (value != _changeImageLoaded) {
  145. _changeImageLoaded = value;
  146. _onChangeImageLoaded();
  147. }
  148. }
  149. @override
  150. set changedTab(TabEnum value) {
  151. if (value != _changedTab) {
  152. _changedTab = value;
  153. _onChangedTab();
  154. }
  155. }
  156. @override
  157. set changedAnnotationType(AnnotationType value) {
  158. if (value != _changedAnnotationType) {
  159. _changedAnnotationType = value;
  160. _onChangedAnnotation();
  161. }
  162. }
  163. @override
  164. set imageChanged(ChangeImageInfo value) {
  165. if (value != _imageChanged) {
  166. _imageChanged = value;
  167. _onImageChanged();
  168. }
  169. }
  170. @override
  171. set measureModeChanged(MeasureModeSelection value) {
  172. if (value != _measureModeChanged) {
  173. _measureModeChanged = value;
  174. _onMeasureModeSelectionChanged();
  175. }
  176. }
  177. @override
  178. set measureModeSubmitChanged(MeasureModeSubmit value) {
  179. if (value != _measureModeSubmitChanged) {
  180. _measureModeSubmitChanged = value;
  181. _onMeasureModeSubmitChanged();
  182. }
  183. }
  184. void _onImageChanged() {
  185. onImageChanged.emit(this, imageChanged);
  186. }
  187. void _onMeasureModeSelectionChanged() {
  188. onMeasureModeSelectionChanged.emit(this, measureModeChanged);
  189. }
  190. void _onMeasureModeSubmitChanged() {
  191. onMeasureModeSubmitChanged.emit(this, measureModeSubmitChanged);
  192. }
  193. void _onChangedTab() {
  194. onChangedTab.emit(this, changedTab);
  195. }
  196. void _onChangeImageLoaded() {
  197. onChangeImageLoaded.emit(this, changeImageLoaded);
  198. }
  199. void _onChangeFullScreenState() {
  200. onChangeFullScreenState.emit(this, fullScreenState);
  201. }
  202. void _onChangedAnnotation() {
  203. onChangedAnnotationType.emit(this, changedAnnotationType);
  204. }
  205. void onAnnotationsLoaded() {
  206. annotationsLoaded.emit(this, null);
  207. }
  208. }