TemplateRect.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using DaJiaoYan.Utils;
  2. using System.Collections.Generic;
  3. namespace DaJiaoYan.Models
  4. {
  5. public class TemplateRect
  6. {
  7. private readonly string data;
  8. //private TestTemplate.TemplateVersion version;
  9. private readonly List<Rect> rects = default;
  10. private Rect V1Rect;
  11. private List<Rect> V2Rects;
  12. /// <summary>
  13. /// 当前版本的锚点信息
  14. /// </summary>
  15. public TestTemplate.TemplateVersion Version { get; set; }
  16. public TemplateRect()
  17. {
  18. }
  19. public TemplateRect(TestTemplate.TemplateVersion version, string data)
  20. {
  21. this.Version = version;
  22. this.data = data;
  23. if (version == TestTemplate.TemplateVersion.V2)
  24. {
  25. rects = V2Rects = Json.Decode<List<Rect>>(data);
  26. }
  27. else
  28. {
  29. V1Rect = Json.Decode<Rect>(data);
  30. if (V1Rect != null)
  31. {
  32. rects = new List<Rect>() { V1Rect };
  33. }
  34. }
  35. }
  36. public TemplateRect(TestTemplate.TemplateVersion version, List<Rect> data)
  37. {
  38. this.Version = version;
  39. if (version == TestTemplate.TemplateVersion.V2)
  40. {
  41. V2Rects = data;
  42. }
  43. else
  44. {
  45. if (data != null && data.Count > 0)
  46. {
  47. V1Rect = data[0];
  48. }
  49. }
  50. rects = data;
  51. }
  52. public TemplateRect(int x, int y, int w, int h)
  53. {
  54. this.Version = TestTemplate.TemplateVersion.V1;
  55. rects = new List<Rect>() { new Rect(x, y, w, h) };
  56. }
  57. /// <summary>
  58. /// 获取所有锚点信息
  59. /// </summary>
  60. public List<Rect> Rects
  61. {
  62. get
  63. {
  64. return rects;
  65. }
  66. }
  67. /// <summary>
  68. /// 获取答卷指定面的所有锚点
  69. /// </summary>
  70. /// <param name="side"></param>
  71. /// <returns></returns>
  72. public List<Rect> SideRects(string side = "A")
  73. {
  74. List<Rect> res = new List<Rect>();
  75. if (Version == TestTemplate.TemplateVersion.V2 && rects != null && rects.Count > 0)
  76. {
  77. res = rects.FindAll(x => { return string.Equals(x.Side, side, System.StringComparison.OrdinalIgnoreCase); });
  78. }
  79. else
  80. {
  81. res = rects;
  82. }
  83. return res;
  84. }
  85. /// <summary>
  86. /// 获取答卷指定面的第一个锚点
  87. /// </summary>
  88. /// <param name="side"></param>
  89. /// <returns></returns>
  90. public Rect SideRect(string side = "A")
  91. {
  92. Rect res = default;
  93. var rects = SideRects(side);
  94. if (rects != null && rects.Count > 0)
  95. {
  96. res = rects[0];
  97. }
  98. return res;
  99. }
  100. }
  101. }