HistoryUtil.js 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074
  1. import { mathUtil } from "../Util/MathUtil";
  2. import { dataService } from "../Service/DataService";
  3. import { textService } from "../Service/TextService";
  4. import Constant from "../Constant";
  5. import Settings from "../Settings";
  6. export default class HistoryUtil {
  7. constructor() {}
  8. isDifferentForPoints(point1, point2) {
  9. if (
  10. point1.x == point2.x &&
  11. point1.y == point2.y &&
  12. mathUtil.equalJSON(point1.parent, point1.parent) &&
  13. point1.category == point2.category &&
  14. point1.locationMode == point2.locationMode &&
  15. point1.linkedBasePointId == point2.linkedBasePointId &&
  16. point1.linkedTextId == point2.linkedTextId
  17. ) {
  18. return false;
  19. } else {
  20. return true;
  21. }
  22. }
  23. isDifferentForLines(line1, line2) {
  24. if (
  25. line1.startId == line2.startId &&
  26. line1.endId == line2.endId &&
  27. line1.category == line2.category &&
  28. line1.locationMode == line2.locationMode &&
  29. line1.linkedFixPointId == line2.linkedFixPointId &&
  30. line1.linkedBasePointId == line2.linkedBasePointId &&
  31. line1.style == line2.style &&
  32. line1.weight == line2.weight &&
  33. line1.zebraCrossStyle == line2.zebraCrossStyle
  34. ) {
  35. return false;
  36. } else {
  37. return true;
  38. }
  39. }
  40. isDifferentForCurvePoints(curvePoint1, curvePoint2) {
  41. if (
  42. curvePoint1.x == curvePoint2.x &&
  43. curvePoint1.y == curvePoint2.y &&
  44. curvePoint1.parent == curvePoint2.parent &&
  45. curvePoint1.index == curvePoint2.index
  46. ) {
  47. return false;
  48. } else {
  49. return true;
  50. }
  51. }
  52. isDifferentForCurveLines(curveLine1, curveLine2) {
  53. if (
  54. curveLine1.startId == curveLine2.startId &&
  55. curveLine1.endId == curveLine2.endId &&
  56. mathUtil.equalJSON(curveLine1.points, curveLine2.points)
  57. ) {
  58. return false;
  59. } else {
  60. return true;
  61. }
  62. }
  63. isDifferentForCircles(circle1, circle2) {
  64. if (
  65. mathUtil.equalPoint(circle1.center, circle2.center) &&
  66. circle1.radiusX == circle2.radiusX &&
  67. circle1.radiusY == circle2.radiusY &&
  68. circle1.color == circle2.color
  69. ) {
  70. return false;
  71. } else {
  72. return true;
  73. }
  74. }
  75. isDifferentForTexts(text1, text2) {
  76. if (
  77. mathUtil.equalPoint(text1.center, text2.center) &&
  78. text1.value == text2.value &&
  79. text1.angle == text2.angle &&
  80. text1.fontSize == text2.fontSize &&
  81. text1.color == text2.color &&
  82. text1.linkedPointId == text2.linkedPointId
  83. ) {
  84. return false;
  85. } else {
  86. return true;
  87. }
  88. }
  89. isDifferentForMagnifiers(magnifier1, magnifier2) {
  90. if (
  91. mathUtil.equalPoint(magnifier1.position, magnifier2.position) &&
  92. magnifier1.photoUrl == magnifier2.photoUrl &&
  93. mathUtil.equalPoint(magnifier1.popPosition, magnifier2.popPosition)
  94. ) {
  95. return false;
  96. } else {
  97. return true;
  98. }
  99. }
  100. isDifferentForSVGs(svg1, svg2) {
  101. if (
  102. mathUtil.equalPoint(svg1.center, svg2.center) &&
  103. svg1.type == svg2.type &&
  104. svg1.angle == svg2.angle &&
  105. svg1.scale == svg2.scale
  106. ) {
  107. return false;
  108. } else {
  109. return true;
  110. }
  111. }
  112. isDifferentForRoadPoints(roadPoint1, roadPoint2) {
  113. if (
  114. mathUtil.equalPoint(roadPoint1, roadPoint2) &&
  115. mathUtil.equalJSON(roadPoint1.parent, roadPoint2.parent)
  116. ) {
  117. return false;
  118. } else {
  119. return true;
  120. }
  121. }
  122. isDifferentForRoadEdges(roadEdge1, roadEdge2) {
  123. if (
  124. mathUtil.equalPoint(roadEdge1.start, roadEdge2.start) &&
  125. mathUtil.equalPoint(roadEdge1.end, roadEdge2.end) &&
  126. roadEdge1.parent == roadEdge2.parent &&
  127. roadEdge1.style == roadEdge2.style &&
  128. roadEdge1.roadSide == roadEdge2.roadSide
  129. ) {
  130. return false;
  131. } else {
  132. return true;
  133. }
  134. }
  135. isDifferentForRoads(road1, road2) {
  136. if (
  137. road1.startId == road2.startId &&
  138. road1.endId == road2.endId &&
  139. road1.leftEdgeId == road2.leftEdgeId &&
  140. road1.rightEdgeId == road2.rightEdgeId &&
  141. road1.way == road2.way &&
  142. road1.roadWidthTipsPos == road2.roadWidthTipsPos
  143. ) {
  144. if (road1.way == Constant.oneWay) {
  145. if (
  146. road1.singleRoadWidth == road2.singleRoadWidth &&
  147. road1.singleRoadDrivewayCount == road2.singleRoadDrivewayCount &&
  148. road1.singleLanes.length == road2.singleLanes.length
  149. ) {
  150. for (let i = 0; i < road1.singleLanes.length; ++i) {
  151. if (
  152. !mathUtil.equalPoint(
  153. road1.singleLanes[i].start,
  154. road2.singleLanes[i].start
  155. ) ||
  156. !mathUtil.equalPoint(
  157. road1.singleLanes[i].end,
  158. road2.singleLanes[i].end
  159. )
  160. ) {
  161. return true;
  162. }
  163. }
  164. return false;
  165. } else {
  166. return true;
  167. }
  168. } else if (road1.way == Constant.twoWay) {
  169. if (
  170. road1.leftWidth == road2.leftWidth &&
  171. road1.rightWidth == road2.rightWidth &&
  172. road1.leftDrivewayCount == road2.leftDrivewayCount &&
  173. road1.rightDrivewayCount == road2.rightDrivewayCount &&
  174. road1.midDivide.midDivideWidth == road2.midDivide.midDivideWidth &&
  175. mathUtil.equalPoint(
  176. road1.midDivide.leftMidDivide.start,
  177. road2.midDivide.leftMidDivide.start
  178. ) &&
  179. mathUtil.equalPoint(
  180. road1.midDivide.leftMidDivide.end,
  181. road2.midDivide.leftMidDivide.end
  182. ) &&
  183. mathUtil.equalPoint(
  184. road1.midDivide.rightMidDivide.start,
  185. road2.midDivide.rightMidDivide.start
  186. ) &&
  187. mathUtil.equalPoint(
  188. road1.midDivide.rightMidDivide.end,
  189. road2.midDivide.rightMidDivide.end
  190. ) &&
  191. road1.leftLanes.length == road2.leftLanes.length &&
  192. road1.rightLanes.length == road2.rightLanes.length
  193. ) {
  194. for (let i = 0; i < road1.leftLanes.length; ++i) {
  195. if (
  196. !mathUtil.equalPoint(
  197. road1.leftLanes[i].start,
  198. road2.leftLanes[i].start
  199. ) ||
  200. !mathUtil.equalPoint(
  201. road1.leftLanes[i].end,
  202. road2.leftLanes[i].end
  203. )
  204. ) {
  205. return true;
  206. }
  207. }
  208. for (let i = 0; i < road1.rightLanes.length; ++i) {
  209. if (
  210. !mathUtil.equalPoint(
  211. road1.rightLanes[i].start,
  212. road2.rightLanes[i].start
  213. ) ||
  214. !mathUtil.equalPoint(
  215. road1.rightLanes[i].end,
  216. road2.rightLanes[i].end
  217. )
  218. ) {
  219. return true;
  220. }
  221. }
  222. return false;
  223. } else {
  224. return true;
  225. }
  226. } else {
  227. return true;
  228. }
  229. } else {
  230. return true;
  231. }
  232. }
  233. isDifferentForCurveRoadPoints(curveRoadPoint1, curveRoadPoint2) {
  234. if (
  235. mathUtil.equalPoint(curveRoadPoint1, curveRoadPoint2) &&
  236. mathUtil.equalJSON(curveRoadPoint1.parent, curveRoadPoint2.parent) &&
  237. curveRoadPoint1.index == curveRoadPoint2.index
  238. ) {
  239. return false;
  240. } else {
  241. return true;
  242. }
  243. }
  244. isDifferentForCurveRoadEdges(curveRoadEdge1, curveRoadEdge2) {
  245. if (
  246. mathUtil.equalPoint(curveRoadEdge1.start, curveRoadEdge2.start) &&
  247. mathUtil.equalPoint(curveRoadEdge1.end, curveRoadEdge2.end) &&
  248. mathUtil.equalPoints(curveRoadEdge1.points, curveRoadEdge2.points) &&
  249. curveRoadEdge1.parent == curveRoadEdge2.parent &&
  250. curveRoadEdge1.style == curveRoadEdge2.style &&
  251. curveRoadEdge1.weight == curveRoadEdge2.weight
  252. ) {
  253. return false;
  254. } else {
  255. return true;
  256. }
  257. }
  258. isDifferentForCurveRoads(curveRoad1, curveRoad2) {
  259. if (
  260. curveRoad1.startId == curveRoad2.startId &&
  261. curveRoad1.endId == curveRoad2.endId &&
  262. mathUtil.equalPoints(curveRoad1.points, curveRoad2.points) &&
  263. curveRoad1.leftEdgeId == curveRoad2.leftEdgeId &&
  264. curveRoad1.rightEdgeId == curveRoad2.rightEdgeId &&
  265. curveRoad1.way == curveRoad2.way
  266. ) {
  267. if (curveRoad1.way == Constant.oneWay) {
  268. if (
  269. curveRoad1.singleRoadWidth == curveRoad2.singleRoadWidth &&
  270. curveRoad1.singleRoadDrivewayCount ==
  271. curveRoad2.singleRoadDrivewayCount
  272. ) {
  273. return false;
  274. } else {
  275. return true;
  276. }
  277. } else if (curveRoad1.way == Constant.twoWay) {
  278. if (
  279. curveRoad1.leftWidth == curveRoad2.leftWidth &&
  280. curveRoad1.rightWidth == curveRoad2.rightWidth &&
  281. curveRoad1.leftDrivewayCount == curveRoad2.leftDrivewayCount &&
  282. curveRoad1.rightDrivewayCount == curveRoad2.rightDrivewayCount &&
  283. curveRoad1.midDivide.midDivideWidth ==
  284. curveRoad2.midDivide.midDivideWidth
  285. ) {
  286. return false;
  287. } else {
  288. return true;
  289. }
  290. } else {
  291. return true;
  292. }
  293. } else {
  294. return true;
  295. }
  296. }
  297. isDifferentForCrossPoints(crossPoint1, crossPoint2) {
  298. if (
  299. mathUtil.equalPoint(crossPoint1, crossPoint2) &&
  300. mathUtil.equalPoint(crossPoint1.extremePoint, crossPoint2.extremePoint) &&
  301. crossPoint1.edgeInfo1.id == crossPoint2.edgeInfo1.id &&
  302. crossPoint1.edgeInfo1.dir == crossPoint2.edgeInfo1.dir &&
  303. crossPoint1.edgeInfo2.id == crossPoint2.edgeInfo2.id &&
  304. crossPoint1.edgeInfo2.dir == crossPoint2.edgeInfo2.dir &&
  305. crossPoint1.style == crossPoint2.style &&
  306. crossPoint1.weight == crossPoint2.weight
  307. ) {
  308. return false;
  309. } else {
  310. return true;
  311. }
  312. }
  313. isDifferentForSettings(settings1, settings2) {
  314. if (
  315. settings1.selectLineCategory == settings2.selectLineCategory &&
  316. settings1.selectPointCategory == settings2.selectPointCategory &&
  317. settings1.selectLocationMode == settings2.selectLocationMode &&
  318. settings1.baseLineId == settings2.baseLineId &&
  319. settings1.selectBasePointId == settings2.selectBasePointId
  320. ) {
  321. return false;
  322. } else {
  323. return true;
  324. }
  325. }
  326. assignPointFromPoint(point1, point2) {
  327. const pointInfo = {};
  328. pointInfo.vectorId = point1.vectorId;
  329. pointInfo.position = { x: point2.x, y: point2.y };
  330. pointInfo.parent = JSON.parse(JSON.stringify(point2.parent));
  331. pointInfo.locationMode = point2.locationMode;
  332. pointInfo.linkedBasePointId = point2.linkedBasePointId;
  333. pointInfo.linkedTextId = point2.linkedTextId;
  334. pointInfo.category = point2.category;
  335. this.setPointInfo(pointInfo);
  336. }
  337. assignLineFromLine(line1, line2) {
  338. const lineInfo = {};
  339. lineInfo.vectorId = line1.vectorId;
  340. lineInfo.start = line2.start;
  341. lineInfo.end = line2.end;
  342. lineInfo.category = line2.category;
  343. lineInfo.locationMode = line2.locationMode;
  344. lineInfo.linkedFixPointId = line2.linkedFixPointId;
  345. lineInfo.linkedBasePointId = line2.linkedBasePointId;
  346. lineInfo.value = line2.value;
  347. lineInfo.style = line2.style;
  348. lineInfo.weight = line2.weight;
  349. lineInfo.zebraCrossStyle = line2.zebraCrossStyle
  350. this.setLineInfo(lineInfo);
  351. }
  352. assignCurvePointFromCurvePoint(curvePoint1, curvePoint2) {
  353. const curvePointInfo = {};
  354. curvePointInfo.vectorId = curvePoint1.vectorId;
  355. curvePointInfo.position = { x: curvePoint2.x, y: curvePoint2.y };
  356. curvePointInfo.parent = curvePoint2.parent;
  357. curvePointInfo.index = curvePoint2.index;
  358. this.setCurvePointInfo(curvePointInfo);
  359. }
  360. assignCurveLineFromCurveLine(curveLine1, curveLine2) {
  361. const curveLineInfo = {};
  362. curveLineInfo.vectorId = curveLine1.vectorId;
  363. curveLineInfo.startId = curveLine2.startId;
  364. curveLineInfo.endId = curveLine2.endId;
  365. curveLineInfo.points = JSON.parse(JSON.stringify(curveLine2.points));
  366. curveLineInfo.curves = JSON.parse(JSON.stringify(curveLine2.curves));
  367. this.setCurveLineInfo(curveLineInfo);
  368. }
  369. assignCircleFromCircle(circle1, circle2) {
  370. const circleInfo = {};
  371. circleInfo.vectorId = circle1.vectorId;
  372. circleInfo.center = circle2.center;
  373. circleInfo.radiusX = circle2.radiusX;
  374. circleInfo.radiusY = circle2.radiusY;
  375. circleInfo.points = JSON.parse(JSON.stringify(circle2.points));
  376. circleInfo.color = circle2.color;
  377. this.setCircleInfo(circleInfo);
  378. }
  379. assignTextFromText(text1, text2) {
  380. const textInfo = {};
  381. textInfo.vectorId = text1.vectorId;
  382. textInfo.value = text2.value;
  383. textInfo.center = JSON.parse(JSON.stringify(text2.center));
  384. textInfo.angle = text2.angle;
  385. textInfo.color = text2.color;
  386. textInfo.fontSize = text2.fontSize;
  387. textInfo.linkedPointId = text2.linkedPointId;
  388. this.setTextInfo(textInfo);
  389. }
  390. assignMagnifierFromMagnifier(magnifier1, magnifier2) {
  391. const magnifierInfo = {};
  392. magnifierInfo.vectorId = magnifier1.vectorId;
  393. magnifierInfo.photoUrl = magnifier2.photoUrl;
  394. magnifierInfo.position = JSON.parse(JSON.stringify(magnifier2.position));
  395. magnifierInfo.popPosition = JSON.parse(
  396. JSON.stringify(magnifier2.popPosition)
  397. );
  398. this.setMagnifierInfo(magnifierInfo);
  399. }
  400. assignSVGFromSVG(svg1, svg2) {
  401. const svgInfo = {};
  402. svgInfo.vectorId = svg1.vectorId;
  403. svgInfo.type = svg2.type;
  404. svgInfo.center = JSON.parse(JSON.stringify(svg2.center));
  405. svgInfo.points = JSON.parse(JSON.stringify(svg2.points));
  406. svgInfo.angle = svg2.angle;
  407. svgInfo.scale = svg2.scale;
  408. this.setSVGInfo(svgInfo);
  409. }
  410. assignRoadPointFromRoadPoint(roadPoint1, roadPoint2) {
  411. const roadPointInfo = {};
  412. roadPointInfo.vectorId = roadPoint1.vectorId;
  413. roadPointInfo.position = {
  414. x: roadPoint2.position.x,
  415. y: roadPoint2.position.y,
  416. };
  417. roadPointInfo.parent = JSON.parse(JSON.stringify(roadPoint2.parent));
  418. this.setRoadPointInfo(roadPointInfo);
  419. }
  420. assignRoadEdgeFromRoadEdge(roadEdge1, roadEdge2) {
  421. const roadEdgeInfo = {};
  422. roadEdgeInfo.vectorId = roadEdge1.vectorId;
  423. roadEdgeInfo.style = roadEdge2.style;
  424. roadEdgeInfo.start = { x: roadEdge2.start.x, y: roadEdge2.start.y };
  425. roadEdgeInfo.end = { x: roadEdge2.end.x, y: roadEdge2.end.y };
  426. roadEdgeInfo.parent = roadEdge2.parent;
  427. roadEdgeInfo.roadSide = roadEdge2.roadSide;
  428. this.setRoadEdgeInfo(roadEdgeInfo);
  429. }
  430. assignRoadFromRoad(road1, road2) {
  431. const roadInfo = {};
  432. roadInfo.vectorId = road1.vectorId;
  433. roadInfo.startId = road2.startId;
  434. roadInfo.endId = road2.endId;
  435. roadInfo.leftEdgeId = road2.leftEdgeId;
  436. roadInfo.rightEdgeId = road2.rightEdgeId;
  437. roadInfo.way = road2.way;
  438. roadInfo.roadWidthTipsPos = road2.roadWidthTipsPos;
  439. if (road2.way == Constant.oneWay) {
  440. roadInfo.singleRoadWidth = road2.singleRoadWidth;
  441. roadInfo.singleRoadDrivewayCount = road2.singleRoadDrivewayCount;
  442. roadInfo.singleLanes = JSON.parse(JSON.stringify(road2.singleLanes));
  443. } else if (road2.way == Constant.twoWay) {
  444. roadInfo.leftWidth = road2.leftWidth;
  445. roadInfo.rightWidth = road2.rightWidth;
  446. roadInfo.leftDrivewayCount = road2.leftDrivewayCount;
  447. roadInfo.rightDrivewayCount = road2.rightDrivewayCount;
  448. roadInfo.midDivide = JSON.parse(JSON.stringify(road2.midDivide));
  449. roadInfo.leftLanes = JSON.parse(JSON.stringify(road2.leftLanes));
  450. roadInfo.rightLanes = JSON.parse(JSON.stringify(road2.rightLanes));
  451. }
  452. this.setRoadInfo(roadInfo);
  453. }
  454. assignCurveRoadPointFromCurveRoadPoint(curveRoadPoint1, curveRoadPoint2) {
  455. const curveRoadPointInfo = {};
  456. curveRoadPointInfo.vectorId = curveRoadPoint1.vectorId;
  457. curveRoadPointInfo.position = {
  458. x: curveRoadPoint2.position.x,
  459. y: curveRoadPoint2.position.y,
  460. };
  461. curveRoadPointInfo.parent = JSON.parse(
  462. JSON.stringify(curveRoadPoint2.parent)
  463. );
  464. curveRoadPointInfo.index = curveRoadPoint2.index;
  465. this.setCurveRoadPointInfo(curveRoadPointInfo);
  466. }
  467. assignCurveRoadEdgeFromCurveRoadEdge(curveRoadEdge1, curveRoadEdge2) {
  468. const curveRoadEdgeInfo = {};
  469. curveRoadEdgeInfo.vectorId = curveRoadEdge1.vectorId;
  470. curveRoadEdgeInfo.start = {
  471. x: curveRoadEdge2.start.x,
  472. y: curveRoadEdge2.start.y,
  473. };
  474. curveRoadEdgeInfo.end = {
  475. x: curveRoadEdge2.end.x,
  476. y: curveRoadEdge2.end.y,
  477. };
  478. curveRoadEdgeInfo.points = JSON.parse(
  479. JSON.stringify(curveRoadEdge2.points)
  480. );
  481. curveRoadEdgeInfo.curves = JSON.parse(
  482. JSON.stringify(curveRoadEdge2.curves)
  483. );
  484. curveRoadEdgeInfo.parent = curveRoadEdge2.parent;
  485. curveRoadEdgeInfo.style = curveRoadEdge2.style;
  486. curveRoadEdgeInfo.weight = curveRoadEdge2.weight;
  487. this.setCurveRoadEdgeInfo(curveRoadEdgeInfo);
  488. }
  489. assignCurveRoadFromCurveRoad(curveRoad1, curveRoad2) {
  490. const curveRoadInfo = {};
  491. curveRoadInfo.vectorId = curveRoad1.vectorId;
  492. curveRoadInfo.startId = curveRoad2.startId;
  493. curveRoadInfo.endId = curveRoad2.endId;
  494. curveRoadInfo.leftEdgeId = curveRoad2.leftEdgeId;
  495. curveRoadInfo.rightEdgeId = curveRoad2.rightEdgeId;
  496. curveRoadInfo.points = JSON.parse(JSON.stringify(curveRoad2.points));
  497. curveRoadInfo.curves = JSON.parse(JSON.stringify(curveRoad2.curves));
  498. curveRoadInfo.way = curveRoad2.way;
  499. if (curveRoad2.way == Constant.oneWay) {
  500. curveRoadInfo.singleCurveRoadWidth = curveRoad2.singleCurveRoadWidth;
  501. curveRoadInfo.singleCurveRoadDrivewayCount =
  502. curveRoad2.singleCurveRoadDrivewayCount;
  503. curveRoadInfo.singleLanes = JSON.parse(
  504. JSON.stringify(curveRoad2.singleLanes)
  505. );
  506. curveRoadInfo.singleLanesCurves = JSON.parse(
  507. JSON.stringify(curveRoad2.singleLanesCurves)
  508. );
  509. } else if (curveRoad2.way == Constant.twoWay) {
  510. curveRoadInfo.leftWidth = curveRoad2.leftWidth;
  511. curveRoadInfo.rightWidth = curveRoad2.rightWidth;
  512. curveRoadInfo.leftDrivewayCount = curveRoad2.leftDrivewayCount;
  513. curveRoadInfo.rightDrivewayCount = curveRoad2.rightDrivewayCount;
  514. curveRoadInfo.midDivide = JSON.parse(
  515. JSON.stringify(curveRoad2.midDivide)
  516. );
  517. curveRoadInfo.leftLanesCurves = JSON.parse(
  518. JSON.stringify(curveRoad2.leftLanesCurves)
  519. );
  520. curveRoadInfo.rightLanesCurves = JSON.parse(
  521. JSON.stringify(curveRoad2.rightLanesCurves)
  522. );
  523. curveRoadInfo.leftLanes = JSON.parse(
  524. JSON.stringify(curveRoad2.leftLanes)
  525. );
  526. curveRoadInfo.rightLanes = JSON.parse(
  527. JSON.stringify(curveRoad2.rightLanes)
  528. );
  529. }
  530. curveRoadInfo.points = [];
  531. for (let i = 0; i < curveRoad2.points.length; ++i) {
  532. curveRoadInfo.points[i] = {};
  533. // curveRoadInfo.points[i].vectorId = curveRoad2.points[i].vectorId;
  534. curveRoadInfo.points[i] = curveRoad2.points[i];
  535. }
  536. this.setCurveRoadInfo(curveRoadInfo);
  537. }
  538. assignCrossPointFromCrossPoint(crossPoint1, crossPoint2) {
  539. const crossPointInfo = {};
  540. crossPointInfo.vectorId = crossPoint1.vectorId;
  541. crossPointInfo.position = {
  542. x: crossPoint2.position.x,
  543. y: crossPoint2.position.y,
  544. };
  545. crossPointInfo.edgeInfo1 = JSON.parse(
  546. JSON.stringify(crossPoint2.edgeInfo1)
  547. );
  548. crossPointInfo.edgeInfo2 = JSON.parse(
  549. JSON.stringify(crossPoint2.edgeInfo2)
  550. );
  551. crossPoint1.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo1));
  552. crossPoint1.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo2));
  553. dataService.addCrossPoint(crossPoint1);
  554. crossPointInfo.extremePoint = {
  555. x: crossPoint2.extremePoint.x,
  556. y: crossPoint2.extremePoint.y,
  557. };
  558. crossPointInfo.style = crossPoint2.style;
  559. crossPointInfo.weight = crossPoint2.weight;
  560. crossPointInfo.curves = JSON.parse(JSON.stringify(crossPoint2.curves));
  561. this.setCrossPointInfo(crossPointInfo);
  562. }
  563. assignSettingsFromSettings(settings1, settings2) {
  564. settings1.selectLineCategory = settings2.selectLineCategory;
  565. settings1.selectPointCategory = settings2.selectPointCategory;
  566. settings1.selectLocationMode = settings2.selectLocationMode;
  567. settings1.baseLineId = settings2.baseLineId;
  568. settings1.selectBasePointId = settings2.selectBasePointId;
  569. }
  570. getDataForPoint(point) {
  571. const data = {};
  572. data.id = point.vectorId;
  573. mathUtil.clonePoint(data, point);
  574. data.parent = JSON.parse(JSON.stringify(point.parent));
  575. data.category = point.category;
  576. data.locationMode = point.locationMode;
  577. data.linkedBasePointId = point.linkedBasePointId;
  578. data.linkedTextId = point.linkedTextId;
  579. data.type = point.geoType;
  580. return data;
  581. }
  582. getDataForLine(line) {
  583. const data = {};
  584. data.id = line.vectorId;
  585. data.start = line.startId;
  586. data.end = line.endId;
  587. data.category = line.category;
  588. data.locationMode = line.locationMode;
  589. data.linkedFixPointId = line.linkedFixPointId;
  590. data.linkedBasePointId = line.linkedBasePointId;
  591. data.type = line.geoType;
  592. data.style = line.style;
  593. data.weight = line.weight;
  594. data.zebraCrossStyle = line.zebraCrossStyle
  595. return data;
  596. }
  597. getDataForCurvePoint(curvePoint) {
  598. const data = {};
  599. data.id = curvePoint.vectorId;
  600. mathUtil.clonePoint(data, curvePoint);
  601. data.parent = curvePoint.parent;
  602. data.index = curvePoint.index;
  603. data.type = curvePoint.geoType;
  604. return data;
  605. }
  606. getDataForCurveLine(curveLine) {
  607. const data = {};
  608. data.id = curveLine.vectorId;
  609. data.startId = curveLine.startId;
  610. data.endId = curveLine.endId;
  611. data.points = JSON.parse(JSON.stringify(curveLine.points));
  612. data.curves = JSON.parse(JSON.stringify(curveLine.curves));
  613. data.type = curveLine.geoType;
  614. return data;
  615. }
  616. getDataForCircle(circle) {
  617. const data = {};
  618. data.id = circle.vectorId;
  619. data.center = {};
  620. mathUtil.clonePoint(data.center, circle.center);
  621. data.radiusX = circle.radiusX;
  622. data.radiusY = circle.radiusY;
  623. data.points = circle.points;
  624. data.color = circle.color;
  625. data.type = circle.geoType;
  626. return data;
  627. }
  628. getDataForText(text) {
  629. const data = {};
  630. data.id = text.vectorId;
  631. data.type = text.geoType;
  632. data.angle = text.angle;
  633. data.center = {};
  634. mathUtil.clonePoint(data.center, text.center);
  635. data.value = text.value;
  636. data.linkedPointId = text.linkedPointId;
  637. data.fontSize = text.fontSize;
  638. data.color = text.color;
  639. return data;
  640. }
  641. getDataForMagnifier(magnifier) {
  642. const data = {};
  643. data.id = magnifier.vectorId;
  644. data.type = magnifier.geoType;
  645. data.position = {};
  646. data.popPosition = {};
  647. mathUtil.clonePoint(data.position, magnifier.position);
  648. mathUtil.clonePoint(data.popPosition, magnifier.popPosition);
  649. data.photoUrl = magnifier.photoUrl;
  650. return data;
  651. }
  652. getDataForSVG(svg) {
  653. const data = {};
  654. data.id = svg.vectorId;
  655. data.type = svg.geoType;
  656. data.center = {};
  657. mathUtil.clonePoint(data.center, svg.center);
  658. data.points = [];
  659. data.points[0] = {};
  660. mathUtil.clonePoint(data.points[0], svg.points[0]);
  661. data.points[1] = {};
  662. mathUtil.clonePoint(data.points[1], svg.points[1]);
  663. data.points[2] = {};
  664. mathUtil.clonePoint(data.points[2], svg.points[2]);
  665. data.points[3] = {};
  666. mathUtil.clonePoint(data.points[3], svg.points[3]);
  667. data.type = svg.type;
  668. data.angle = svg.angle;
  669. data.scale = svg.scale;
  670. return data;
  671. }
  672. getDataForRoadPoint(roadPoint) {
  673. const data = {};
  674. data.id = roadPoint.vectorId;
  675. data.type = roadPoint.geoType;
  676. data.position = {};
  677. mathUtil.clonePoint(data.position, roadPoint);
  678. data.parent = JSON.parse(JSON.stringify(roadPoint.parent));
  679. return data;
  680. }
  681. getDataForRoadEdge(roadEdge) {
  682. const data = {};
  683. data.id = roadEdge.vectorId;
  684. data.type = roadEdge.geoType;
  685. data.parent = roadEdge.parent;
  686. data.start = {};
  687. data.start = JSON.parse(JSON.stringify(roadEdge.start));
  688. data.end = {};
  689. data.end = JSON.parse(JSON.stringify(roadEdge.end));
  690. data.style = roadEdge.style;
  691. data.roadSide = roadEdge.roadSide;
  692. return data;
  693. }
  694. getDataForRoad(road) {
  695. const data = {};
  696. data.id = road.vectorId;
  697. data.type = road.geoType;
  698. data.startId = road.startId;
  699. data.endId = road.endId;
  700. data.leftEdgeId = road.leftEdgeId;
  701. data.rightEdgeId = road.rightEdgeId;
  702. data.roadWidthTipsPos = road.roadWidthTipsPos;
  703. data.way = road.way;
  704. if (road.way == Constant.oneWay) {
  705. data.singleRoadWidth = road.singleRoadWidth;
  706. data.singleRoadDrivewayCount = road.singleRoadDrivewayCount;
  707. data.singleLanes = JSON.parse(JSON.stringify(road.singleLanes));
  708. } else if (road.way == Constant.twoWay) {
  709. data.leftWidth = road.leftWidth;
  710. data.rightWidth = road.rightWidth;
  711. data.leftDrivewayCount = road.leftDrivewayCount;
  712. data.rightDrivewayCount = road.rightDrivewayCount;
  713. data.midDivide = JSON.parse(JSON.stringify(road.midDivide));
  714. data.leftLanes = JSON.parse(JSON.stringify(road.leftLanes));
  715. data.rightLanes = JSON.parse(JSON.stringify(road.rightLanes));
  716. }
  717. return data;
  718. }
  719. getDataForCurveRoadPoint(curveRoadPoint) {
  720. const data = {};
  721. data.id = curveRoadPoint.vectorId;
  722. data.type = curveRoadPoint.geoType;
  723. data.position = {};
  724. mathUtil.clonePoint(data.position, curveRoadPoint);
  725. data.parent = curveRoadPoint.parent;
  726. data.index = curveRoadPoint.index;
  727. return data;
  728. }
  729. getDataForCurveRoadEdge(curveRoadEdge) {
  730. const data = {};
  731. data.id = curveRoadEdge.vectorId;
  732. data.type = curveRoadEdge.geoType;
  733. data.parent = curveRoadEdge.parent;
  734. data.start = JSON.parse(JSON.stringify(curveRoadEdge.start));
  735. data.end = JSON.parse(JSON.stringify(curveRoadEdge.end));
  736. data.points = JSON.parse(JSON.stringify(curveRoadEdge.points));
  737. data.curves = JSON.parse(JSON.stringify(curveRoadEdge.curves));
  738. data.style = curveRoadEdge.style;
  739. data.weight = curveRoadEdge.weight;
  740. return data;
  741. }
  742. getDataForCurveRoad(curveRoad) {
  743. const data = {};
  744. data.id = curveRoad.vectorId;
  745. data.type = curveRoad.geoType;
  746. data.startId = curveRoad.startId;
  747. data.endId = curveRoad.endId;
  748. data.leftEdgeId = curveRoad.leftEdgeId;
  749. data.rightEdgeId = curveRoad.rightEdgeId;
  750. data.points = JSON.parse(JSON.stringify(curveRoad.points));
  751. data.curves = JSON.parse(JSON.stringify(curveRoad.curves));
  752. data.way = curveRoad.way;
  753. if (curveRoad.way == Constant.oneWay) {
  754. data.singleCurveRoadWidth = curveRoad.singleRoadWidth;
  755. data.singleCurveRoadDrivewayCount = curveRoad.singleRoadDrivewayCount;
  756. data.singleLanesCurves = JSON.parse(
  757. JSON.stringify(curveRoad.singleLanesCurves)
  758. );
  759. data.singleLanes = JSON.parse(JSON.stringify(curveRoad.singleLanes));
  760. } else if (curveRoad.way == Constant.twoWay) {
  761. data.leftWidth = curveRoad.leftWidth;
  762. data.rightWidth = curveRoad.rightWidth;
  763. data.leftDrivewayCount = curveRoad.leftDrivewayCount;
  764. data.rightDrivewayCount = curveRoad.rightDrivewayCount;
  765. data.midDivide = JSON.parse(JSON.stringify(curveRoad.midDivide));
  766. data.leftLanesCurves = JSON.parse(
  767. JSON.stringify(curveRoad.leftLanesCurves)
  768. );
  769. data.rightLanesCurves = JSON.parse(
  770. JSON.stringify(curveRoad.rightLanesCurves)
  771. );
  772. data.leftLanes = JSON.parse(JSON.stringify(curveRoad.leftLanes));
  773. data.rightLanes = JSON.parse(JSON.stringify(curveRoad.rightLanes));
  774. }
  775. return data;
  776. }
  777. getDataForCrossPoint(crossPoint) {
  778. const data = {};
  779. data.id = crossPoint.vectorId;
  780. data.type = crossPoint.geoType;
  781. data.position = {};
  782. mathUtil.clonePoint(data.position, crossPoint);
  783. data.extremePoint = {};
  784. mathUtil.clonePoint(data.extremePoint, crossPoint.extremePoint);
  785. data.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint.edgeInfo1));
  786. data.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint.edgeInfo2));
  787. data.curves = JSON.parse(JSON.stringify(crossPoint.curves));
  788. data.style = crossPoint.style;
  789. data.weight = crossPoint.weight;
  790. return data;
  791. }
  792. getDataForSettings(settings) {
  793. const data = {};
  794. data.selectLineCategory = settings.selectLineCategory;
  795. data.selectPointCategory = settings.selectPointCategory;
  796. data.selectLocationMode = settings.selectLocationMode;
  797. data.baseLineId = settings.baseLineId;
  798. data.selectBasePointId = settings.selectBasePointId;
  799. return data;
  800. }
  801. setPointInfo(pointInfo) {
  802. let point = dataService.getPoint(pointInfo.vectorId);
  803. mathUtil.clonePoint(point, pointInfo.position);
  804. point.parent = JSON.parse(JSON.stringify(pointInfo.parent));
  805. point.category = pointInfo.category;
  806. point.locationMode = pointInfo.locationMode;
  807. point.linkedBasePointId = pointInfo.linkedBasePointId;
  808. point.linkedTextId = pointInfo.linkedTextId;
  809. return point;
  810. }
  811. setLineInfo(lineInfo) {
  812. let line = dataService.getLine(lineInfo.vectorId);
  813. line.startId = lineInfo.start;
  814. line.endId = lineInfo.end;
  815. line.category = lineInfo.category;
  816. line.locationMode = lineInfo.locationMode;
  817. line.linkedFixPointId = lineInfo.linkedFixPointId;
  818. line.linkedBasePointId = lineInfo.linkedBasePointId;
  819. line.value = lineInfo.value;
  820. line.style = lineInfo.style;
  821. line.weight = lineInfo.weight;
  822. line.zebraCrossStyle = lineInfo.zebraCrossStyle
  823. return line;
  824. }
  825. setCurvePointInfo(curvePointInfo) {
  826. let curvePoint = dataService.getCurvePoint(curvePointInfo.vectorId);
  827. mathUtil.clonePoint(curvePoint, curvePointInfo.position);
  828. curvePoint.parent = curvePointInfo.parent;
  829. curvePoint.index = curvePointInfo.index;
  830. return curvePoint;
  831. }
  832. setCurveLineInfo(curveLineInfo) {
  833. let curveLine = dataService.getCurveLine(curveLineInfo.vectorId);
  834. curveLine.startId = curveLineInfo.startId;
  835. curveLine.endId = curveLineInfo.endId;
  836. curveLine.points = [];
  837. for (let i = 0; i < curveLineInfo.points.length; ++i) {
  838. curveLine.points[i] = dataService.getCurvePoint(
  839. curveLineInfo.points[i].vectorId
  840. );
  841. }
  842. curveLine.curves = JSON.parse(JSON.stringify(curveLineInfo.curves));
  843. return curveLine;
  844. }
  845. setCircleInfo(circleInfo) {
  846. let circle = dataService.getCircle(circleInfo.vectorId);
  847. circle.center = circleInfo.center;
  848. circle.radius = circleInfo.radius;
  849. circle.color = circleInfo.color;
  850. circle.radiusX = circleInfo.radiusX;
  851. circle.radiusY = circleInfo.radiusY;
  852. circle.points = circleInfo.points;
  853. return circle;
  854. }
  855. setTextInfo(textInfo) {
  856. let text = dataService.getText(textInfo.vectorId);
  857. text.vectorId = textInfo.vectorId;
  858. text.center = JSON.parse(JSON.stringify(textInfo.center));
  859. text.value = textInfo.value;
  860. text.angle = textInfo.angle;
  861. text.fontSize = textInfo.fontSize;
  862. text.color = textInfo.color;
  863. text.linkedPointId = textInfo.linkedPointId;
  864. }
  865. setMagnifierInfo(magnifierInfo) {
  866. let magnifier = dataService.getMagnifier(magnifierInfo.vectorId);
  867. magnifier.vectorId = magnifierInfo.vectorId;
  868. magnifier.position = JSON.parse(JSON.stringify(magnifierInfo.position));
  869. magnifier.popPosition = JSON.parse(
  870. JSON.stringify(magnifierInfo.popPosition)
  871. );
  872. magnifier.photoUrl = magnifierInfo.photoUrl;
  873. }
  874. setSVGInfo(svgInfo) {
  875. let svg = dataService.getSVG(svgInfo.vectorId);
  876. svg.vectorId = svgInfo.vectorId;
  877. svg.center = JSON.parse(JSON.stringify(svgInfo.center));
  878. svg.points = JSON.parse(JSON.stringify(svgInfo.points));
  879. svg.type = svgInfo.type;
  880. svg.angle = svgInfo.angle;
  881. svg.scale = svgInfo.scale;
  882. }
  883. setRoadPointInfo(roadPointInfo) {
  884. let roadPoint = dataService.getRoadPoint(roadPointInfo.vectorId);
  885. roadPoint.vectorId = roadPointInfo.vectorId;
  886. mathUtil.clonePoint(roadPoint, roadPointInfo.position);
  887. roadPoint.parent = JSON.parse(JSON.stringify(roadPointInfo.parent));
  888. }
  889. setRoadEdgeInfo(roadEdgeInfo) {
  890. let roadEdge = dataService.getRoadEdge(roadEdgeInfo.vectorId);
  891. roadEdge.vectorId = roadEdgeInfo.vectorId;
  892. mathUtil.clonePoint(roadEdge.start, roadEdgeInfo.start);
  893. mathUtil.clonePoint(roadEdge.end, roadEdgeInfo.end);
  894. roadEdge.type = roadEdgeInfo.type;
  895. roadEdge.style = roadEdgeInfo.style;
  896. roadEdge.roadSide = roadEdgeInfo.roadSide;
  897. }
  898. setRoadInfo(roadInfo) {
  899. let road = dataService.getRoad(roadInfo.vectorId);
  900. road.vectorId = roadInfo.vectorId;
  901. road.startId = roadInfo.startId;
  902. road.endId = roadInfo.endId;
  903. road.leftEdgeId = roadInfo.leftEdgeId;
  904. road.rightEdgeId = roadInfo.rightEdgeId;
  905. road.way = roadInfo.way;
  906. road.roadWidthTipsPos = roadInfo.roadWidthTipsPos;
  907. if (road.way == Constant.oneWay) {
  908. road.singleRoadWidth = roadInfo.singleRoadWidth;
  909. road.singleRoadDrivewayCount = roadInfo.singleRoadDrivewayCount;
  910. road.singleLanes = JSON.parse(JSON.stringify(roadInfo.singleLanes));
  911. } else if (road.way == Constant.twoWay) {
  912. road.leftWidth = roadInfo.leftWidth;
  913. road.rightWidth = roadInfo.rightWidth;
  914. road.leftDrivewayCount = roadInfo.leftDrivewayCount;
  915. road.rightDrivewayCount = roadInfo.rightDrivewayCount;
  916. road.midDivide = JSON.parse(JSON.stringify(roadInfo.midDivide));
  917. road.leftLanes = JSON.parse(JSON.stringify(roadInfo.leftLanes));
  918. road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
  919. }
  920. }
  921. setCurveRoadPointInfo(curveRoadPointInfo) {
  922. let curveRoadPoint = dataService.getCurveRoadPoint(
  923. curveRoadPointInfo.vectorId
  924. );
  925. curveRoadPoint.vectorId = curveRoadPointInfo.vectorId;
  926. mathUtil.clonePoint(curveRoadPoint, curveRoadPointInfo.position);
  927. curveRoadPoint.parent = JSON.parse(
  928. JSON.stringify(curveRoadPointInfo.parent)
  929. );
  930. curveRoadPoint.index = curveRoadPointInfo.index;
  931. }
  932. setCurveRoadEdgeInfo(curveRoadEdgeInfo) {
  933. let curveRoadEdge = dataService.getCurveRoadEdge(
  934. curveRoadEdgeInfo.vectorId
  935. );
  936. curveRoadEdge.vectorId = curveRoadEdgeInfo.vectorId;
  937. mathUtil.clonePoint(curveRoadEdge.start, curveRoadEdgeInfo.start);
  938. mathUtil.clonePoint(curveRoadEdge.end, curveRoadEdgeInfo.end);
  939. for (let i = 0; i < curveRoadEdgeInfo.points.length; ++i) {
  940. curveRoadEdge.points[i] = {};
  941. mathUtil.clonePoint(curveRoadEdge.points[i], curveRoadEdgeInfo.points[i]);
  942. }
  943. curveRoadEdge.curves = JSON.parse(JSON.stringify(curveRoadEdgeInfo.curves));
  944. curveRoadEdge.type = curveRoadEdgeInfo.type;
  945. curveRoadEdge.style = curveRoadEdgeInfo.style;
  946. curveRoadEdge.weight = curveRoadEdgeInfo.weight;
  947. }
  948. setCurveRoadInfo(curveRoadInfo) {
  949. let curveRoad = dataService.getCurveRoad(curveRoadInfo.vectorId);
  950. curveRoad.vectorId = curveRoadInfo.vectorId;
  951. curveRoad.startId = curveRoadInfo.startId;
  952. curveRoad.endId = curveRoadInfo.endId;
  953. curveRoad.leftEdgeId = curveRoadInfo.leftEdgeId;
  954. curveRoad.rightEdgeId = curveRoadInfo.rightEdgeId;
  955. for (let i = 0; i < curveRoadInfo.points.length; ++i) {
  956. curveRoad.points[i] = dataService.getCurveRoadPoint(
  957. curveRoadInfo.points[i].vectorId
  958. );
  959. }
  960. //curveRoad.points = JSON.parse(JSON.stringify(curveRoadInfo.points));
  961. curveRoad.curves = JSON.parse(JSON.stringify(curveRoadInfo.curves));
  962. if (curveRoad.way == Constant.oneWay) {
  963. curveRoad.singleCurveRoadWidth = curveRoadInfo.singleCurveRoadWidth;
  964. curveRoad.singleCurveRoadDrivewayCount =
  965. curveRoadInfo.singleCurveRoadDrivewayCount;
  966. curveRoad.singleLanesCurves = JSON.parse(
  967. JSON.stringify(curveRoadInfo.singleLanesCurves)
  968. );
  969. curveRoad.singleLanes = JSON.parse(
  970. JSON.stringify(curveRoadInfo.singleLanes)
  971. );
  972. } else if (curveRoad.way == Constant.twoWay) {
  973. curveRoad.leftWidth = curveRoadInfo.leftWidth;
  974. curveRoad.rightWidth = curveRoadInfo.rightWidth;
  975. curveRoad.leftDrivewayCount = curveRoadInfo.leftDrivewayCount;
  976. curveRoad.rightDrivewayCount = curveRoadInfo.rightDrivewayCount;
  977. curveRoad.midDivide = JSON.parse(JSON.stringify(curveRoadInfo.midDivide));
  978. curveRoad.leftLanesCurves = JSON.parse(
  979. JSON.stringify(curveRoadInfo.leftLanesCurves)
  980. );
  981. curveRoad.rightLanesCurves = JSON.parse(
  982. JSON.stringify(curveRoadInfo.rightLanesCurves)
  983. );
  984. curveRoad.leftLanes = JSON.parse(JSON.stringify(curveRoadInfo.leftLanes));
  985. curveRoad.rightLanes = JSON.parse(
  986. JSON.stringify(curveRoadInfo.rightLanes)
  987. );
  988. }
  989. }
  990. setCrossPointInfo(crossPointInfo) {
  991. let crossPoint = dataService.getCrossPoint3(crossPointInfo.vectorId);
  992. crossPoint.vectorId = crossPointInfo.vectorId;
  993. mathUtil.clonePoint(crossPoint, crossPointInfo.position);
  994. crossPoint.extremePoint = {};
  995. mathUtil.clonePoint(crossPoint.extremePoint, crossPointInfo.extremePoint);
  996. crossPoint.edgeInfo1 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo1));
  997. crossPoint.edgeInfo2 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo2));
  998. crossPoint.curves = JSON.parse(JSON.stringify(crossPointInfo.curves));
  999. crossPoint.style = crossPointInfo.style;
  1000. crossPoint.weight = crossPointInfo.weight;
  1001. }
  1002. }
  1003. const historyUtil = new HistoryUtil();
  1004. export { historyUtil };