ISurfaceBox.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. using PaintDotNet.Annotation.Enum;
  2. using PaintDotNet.Base.DedicatedAnalysis.Inclusions.Model;
  3. using PaintDotNet.Base.SettingModel;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Drawing;
  7. using System.Drawing.Drawing2D;
  8. using System.Windows.Forms;
  9. using static PaintDotNet.Base.SettingModel.LabelStyleModel;
  10. using static System.Windows.Forms.Control;
  11. namespace PaintDotNet.Annotation
  12. {
  13. /// <summary>
  14. /// 用来给标注、测量、视场以及其它工具使用的接口
  15. /// </summary>
  16. public interface ISurfaceBox
  17. {
  18. /// <summary>
  19. /// 获取缩放比例
  20. /// </summary>
  21. double ScaleRatio { get; }
  22. /// <summary>
  23. ///
  24. /// </summary>
  25. bool Capture { get; set; }
  26. /// <summary>
  27. /// 绘制鼠标划选的标记
  28. /// </summary>
  29. bool DrawRectangleFlag { get; set; }
  30. Rectangle DrawRectangle { get; set; }
  31. /// <summary>
  32. /// 激活的工具
  33. /// </summary>
  34. DrawToolType ActiveTool { get; set; }
  35. DrawAnalysisModel AnalysisStyleModel { get; set; }
  36. /// <summary>
  37. /// 鼠标形状
  38. /// </summary>
  39. Cursor Cursor { get; set; }
  40. RectangleF GetVisibleDocumentRectangleF();
  41. SizeF GetDocumentSize();
  42. /// <summary>
  43. /// 获取controls
  44. /// </summary>
  45. ControlCollection Controls { get; }
  46. /// <summary>
  47. /// 添加到历史记录,用于撤销
  48. /// </summary>
  49. /// <param name="c"></param>
  50. void AddCommandToHistory(Command.Command c);
  51. /// <summary>
  52. /// 刷新界面
  53. /// </summary>
  54. void Refresh();
  55. /// <summary>
  56. /// 设置标记
  57. /// </summary>
  58. void SetDirty();
  59. /// <summary>
  60. /// 获取未缩放的坐标点
  61. /// </summary>
  62. /// <param name="location"></param>
  63. /// <returns></returns>
  64. Point GetScalePoint(PointF location);
  65. /// <summary>
  66. /// 获取缩放的原点
  67. /// </summary>
  68. /// <returns></returns>
  69. Point GetCalcOriginPoint();
  70. Rectangle RectangleToScreen(Rectangle rectangle);
  71. /// <summary>
  72. /// 获取未缩放的值
  73. /// </summary>
  74. /// <param name="deltaX"></param>
  75. /// <returns></returns>
  76. int UnscaleScalar(int deltaX);
  77. PointF GetDocumentScrollPositionF();
  78. void SetDocumentScrollPositionF(PointF newScrollPos);
  79. void Update();
  80. PointF DocumentToClient(PointF pointF);
  81. /// <summary>
  82. /// 获取系统当前选中单位及每单位像素值
  83. /// </summary>
  84. /// <returns>3位字符串数组,
  85. /// 0:系统选中单位枚举字符串
  86. /// 1:系统选中单位名称字符串
  87. /// 2:系统选中单位符号字符串
  88. /// 3:系统选中单位每单位像素长度</returns>
  89. string[] GetPxPerUnit();
  90. /// <summary>
  91. /// 单位的文字
  92. /// </summary>
  93. /// <returns></returns>
  94. Dictionary<int, string> GetUnitsDictionary();
  95. /// <summary>
  96. /// 单位的缩写
  97. /// </summary>
  98. /// <returns></returns>
  99. Dictionary<int, string> GetUnitSymbolsDictionary();
  100. /// <summary>
  101. /// 获取当前DocumentWorkspace的视场行为
  102. /// </summary>
  103. /// <returns></returns>
  104. CombineMode GetCombineMode();
  105. /// <summary>
  106. /// 设置当前鼠标的状态
  107. /// </summary>
  108. /// <param name="status"></param>
  109. void SetMouseStatus(bool status);
  110. /// <summary>
  111. /// 获取当前鼠标的状态
  112. /// </summary>
  113. /// <returns></returns>
  114. bool GetMouseStatus();
  115. #region 标注、测量
  116. Dictionary<DrawToolType, Type> GetTools();
  117. /// <summary>
  118. /// 标记的连续绘制标记
  119. /// </summary>
  120. /// <returns></returns>
  121. bool ContinuousDrawingLabel();
  122. void SetContinuousDrawingLabel(bool v);
  123. /// <summary>
  124. /// 测量的连续绘制标记
  125. /// </summary>
  126. /// <returns></returns>
  127. bool ContinuousDrawingMeasure();
  128. void SetContinuousDrawingMeasure(bool v);
  129. /// <summary>
  130. /// 标注、测量、视场等的集合
  131. /// </summary>
  132. GraphicsList GraphicsList { get; }
  133. /// <summary>
  134. /// 重置标注、测量的管理类
  135. /// </summary>
  136. void ResetUndoManager();
  137. /// <summary>
  138. /// 获取标注的样式信息
  139. /// </summary>
  140. /// <returns></returns>
  141. LabelStyleModel GetLabelStyleModel();
  142. /// <summary>
  143. /// 获取测量的样式信息
  144. /// </summary>
  145. /// <returns></returns>
  146. MeasureStyleModel GetMeasureStyleModel();
  147. /// <summary>
  148. /// 获取水印的样式信息
  149. /// </summary>
  150. /// <returns></returns>
  151. WatermarkModel GetWatermarkModel();
  152. /// <summary>
  153. /// 获取工字线的样式信息
  154. /// </summary>
  155. /// <returns></returns>
  156. WorkTypeStyleModel GetWorkTypeStyleModel();
  157. /// <summary>
  158. /// 获取工字线的样式信息
  159. /// </summary>
  160. /// <returns></returns>
  161. RulerModel GetRulerStyleModel();
  162. /// <summary>
  163. /// 获取测量单位对应的换算字典
  164. /// </summary>
  165. /// <returns></returns>
  166. Dictionary<MeasurementUnit, double> getMeasureInfo();
  167. /// <summary>
  168. /// 获取标尺单位
  169. /// </summary>
  170. /// <returns></returns>
  171. MeasurementUnit GetMeasurementUnit();
  172. /// <summary>
  173. /// 获取系统当前放大倍数
  174. /// </summary>
  175. /// <returns></returns>
  176. decimal GetGainMultiple();
  177. /// <summary>
  178. /// 获取当前图片放大倍数
  179. /// </summary>
  180. /// <returns></returns>
  181. decimal GetMic_Rulers();
  182. /// <summary>
  183. /// 刷新标注列表
  184. /// </summary>
  185. void RefreshLabelListDialog();
  186. /// <summary>
  187. /// 更新命名的延续数字
  188. /// </summary>
  189. void UpdateContinueNum();
  190. #endregion
  191. #region 预处理
  192. /// <summary>
  193. /// 预处理 交互操作的连续绘制标记
  194. /// </summary>
  195. /// <returns></returns>
  196. bool ContinuousBinaryAction();
  197. /// <summary>
  198. /// 预处理 - 交互操作 -单个提取
  199. /// </summary>
  200. /// <param name="point"></param>
  201. void BinaryActionExtract(PointF point);
  202. #region 选择
  203. /// <summary>
  204. /// 预处理 - 交互操作 - 选择 - 单个
  205. /// </summary>
  206. /// <param name="point"></param>
  207. void BinaryActionChoise(PointF point);
  208. /// <summary>
  209. /// 预处理 - 交互操作 - 选择 - 矩形
  210. /// </summary>
  211. /// <param name="rectangle"></param>
  212. void BinaryActionChoiseRectangle(RectangleF rectangle);
  213. /// <summary>
  214. /// 预处理 - 交互操作 - 选择 - 椭圆
  215. /// </summary>
  216. /// <param name="rectangle"></param>
  217. void BinaryActionChoiseOval(RectangleF rectangle);
  218. /// <summary>
  219. /// 预处理 - 交互操作 - 选择 - 多边形
  220. /// </summary>
  221. /// <param name="rectangle"></param>
  222. void BinaryActionChoisePolygon(List<PointF> points);
  223. #endregion
  224. #region 分割
  225. /// <summary>
  226. /// 获取分割线宽
  227. /// </summary>
  228. /// <returns></returns>
  229. int GetSegmentationWidth();
  230. /// <summary>
  231. /// 预处理 - 交互操作 - 分割 - 直线分割
  232. /// </summary>
  233. /// <param name="start"></param>
  234. /// <param name="end"></param>
  235. void BinaryActionSplitLine(PointF start, PointF end);
  236. /// <summary>
  237. /// 预处理 - 交互操作 - 分割 - 椭圆分割
  238. /// </summary>
  239. /// <param name="rect"></param>
  240. void BinaryActionSplitOval(RectangleF rect);
  241. #endregion
  242. #region 连接
  243. /// <summary>
  244. /// 获取连接线宽
  245. /// </summary>
  246. /// <returns></returns>
  247. int GetConnectionWidth();
  248. /// <summary>
  249. /// 预处理 - 交互操作 - 连接 - 直线
  250. /// </summary>
  251. /// <param name="start"></param>
  252. /// <param name="end"></param>
  253. void BinaryActionConnectionLine(PointF start, PointF end);
  254. /// <summary>
  255. /// 预处理 - 交互操作 - 连接 - 椭圆
  256. /// </summary>
  257. /// <param name="start"></param>
  258. /// <param name="end"></param>
  259. void BinaryConnectionOval(RectangleF rect);
  260. #endregion
  261. #region 删除
  262. /// <summary>
  263. /// 预处理 - 交互操作 - 删除 - 单个删除
  264. /// </summary>
  265. /// <param name="point"></param>
  266. void BinaryActionDelete(PointF point);
  267. /// <summary>
  268. /// 预处理 - 交互操作 - 删除 - 矩形删除
  269. /// </summary>
  270. /// <param name="point"></param>
  271. void BinaryActionDelete(RectangleF rect);
  272. /// <summary>
  273. /// 预处理 - 交互操作 - 删除 - 多边形删除
  274. /// </summary>
  275. /// <param name="points"></param>
  276. void BinaryActionDelete(List<PointF> points);
  277. /// <summary>
  278. /// 预处理 - 交互操作 - 删除 - 椭圆删除
  279. /// </summary>
  280. /// <param name="rect"></param>
  281. void BinaryActionDeleteOval(RectangleF rect);
  282. #endregion
  283. #region 添加
  284. /// <summary>
  285. /// 预处理 - 交互操作 - 添加 - 椭圆
  286. /// </summary>
  287. /// <param name="rect"></param>
  288. void BinaryActionAddOval(RectangleF rect);
  289. /// <summary>
  290. /// 预处理 - 交互操作 - 添加 - 矩形
  291. /// </summary>
  292. /// <param name="rect"></param>
  293. void BinaryActionAddRectangle(RectangleF rect);
  294. /// <summary>
  295. /// 预处理 - 交互操作 - 添加 - 多边形
  296. /// </summary>
  297. /// <param name="points"></param>
  298. void BinaryActionAddPolygon(List<PointF> points);
  299. #endregion
  300. #endregion
  301. #region 物相提取
  302. /// <summary>
  303. /// 物相提取 - 交互操作 - 矩形选择
  304. /// </summary>
  305. /// <param name="point"></param>
  306. void PPhaseActionRectangle(RectangleF rect);
  307. /// <summary>
  308. /// 物相提取 - 交互操作 - 多边形选择
  309. /// </summary>
  310. /// <param name="points"></param>
  311. void PPhaseActionPolygon(List<PointF> points);
  312. /// <summary>
  313. /// 物相提取 - 交互操作 - 椭圆选择
  314. /// </summary>
  315. /// <param name="rect"></param>
  316. void PPhaseActionOval(RectangleF rect);
  317. #endregion
  318. bool ViewMoveOnMouseLeftDoubleClickEnable { get; set; }
  319. PointF GetRulerPointInPanel(PointF point);
  320. PointF ScalePointToRulerPoint(PointF point);
  321. int ToolNumber { set; }
  322. /// <summary>
  323. /// 实际大小标记
  324. /// </summary>
  325. /// <returns></returns>
  326. bool ActualSize();
  327. /// <summary>
  328. /// 合适大小标记
  329. /// </summary>
  330. /// <returns></returns>
  331. bool SuitableSize();
  332. /// <summary>
  333. /// 合适宽度标记
  334. /// </summary>
  335. /// <returns></returns>
  336. bool SuitableWidth();
  337. /// <summary>
  338. /// 合适高度标记
  339. /// </summary>
  340. /// <returns></returns>
  341. bool SuitableHeight();
  342. /// <summary>
  343. /// 锁定扩缩
  344. /// </summary>
  345. /// <returns></returns>
  346. bool LockZoom();
  347. /// <summary>
  348. /// 定倍显示
  349. /// </summary>
  350. /// <returns></returns>
  351. bool FixedMultiple();
  352. /// <summary>
  353. /// 合并视场
  354. /// </summary>
  355. /// <returns></returns>
  356. bool MergeFieldOfView();
  357. /// <summary>
  358. /// 删除视场
  359. /// </summary>
  360. /// <returns></returns>
  361. bool DeleteFieldOfView();
  362. /// <summary>
  363. /// 删除视场
  364. /// </summary>
  365. /// <returns></returns>
  366. Inclusion GetInclusion();
  367. }
  368. }