xushiting 2 năm trước cách đây
mục cha
commit
1f606ffff0
2 tập tin đã thay đổi với 70 bổ sung9 xóa
  1. 26 0
      src/graphic/Controls/MoveLine.js
  2. 44 9
      src/graphic/Layer.js

+ 26 - 0
src/graphic/Controls/MoveLine.js

@@ -0,0 +1,26 @@
+import { dataService } from "../Service/DataService";
+
+export default class MoveLine {
+  constructor() {}
+
+  movePoint(position, pointId) {
+    let point = dataService.getPoint(pointId);
+    point.x = position.x;
+    point.y = position.y;
+  }
+
+  moveLine(lineId, dx, dy) {
+    dx = dx;
+    dy = -dy;
+    let line = dataService.getLine(lineId);
+    let startPoint = dataService.getPoint(line.startId);
+    let endPoint = dataService.getPoint(line.endId);
+    startPoint.x += dx;
+    startPoint.y += dy;
+    endPoint.x += dx;
+    endPoint.y += dy;
+  }
+}
+
+const moveLine = new MoveLine();
+export { moveLine };

+ 44 - 9
src/graphic/Layer.js

@@ -14,6 +14,7 @@ import { addCircle } from "./Controls/AddCircle";
 import { addText } from "./Controls/AddText";
 import { addSVG } from "./Controls/AddSVG";
 import { moveRoad } from "./Controls/MoveRoad";
+import { moveLine } from "./Controls/MoveLine";
 import { coordinate } from "./Coordinate";
 import Render from "./Renderer/Render";
 import { draw } from "./Renderer/Draw";
@@ -101,17 +102,12 @@ export default class Layer {
       return;
     }
     this.dragging = false;
+    //用于支持平板电脑
+    listenLayer.start(position);
     this.setEventName("mouseDown");
     const selectItem = stateService.getSelectItem();
     const eventName = stateService.getEventName();
     switch (eventName) {
-      //用于支持平板电脑
-      case null:
-        needAutoRedraw = listenLayer.start(position);
-        stateService.getSelectItem();
-        if (needAutoRedraw) {
-          this.renderer.autoRedraw();
-        }
       case LayerEvents.AddRoad:
         stateService.setEventName(LayerEvents.AddingRoad);
         addRoad.setNewRoadPoint("start", position);
@@ -130,7 +126,7 @@ export default class Layer {
         break;
       case LayerEvents.AddText:
         stateService.setEventName(LayerEvents.MoveText);
-        addText.buildText();
+        addText.buildText(position);
         stateService.setSelectItem(
           addText.newText.vectorId,
           VectorType.Text,
@@ -139,7 +135,7 @@ export default class Layer {
         break;
       case LayerEvents.AddSVG:
         stateService.setEventName(LayerEvents.MoveSVG);
-        addSVG.buildSVG();
+        addSVG.buildSVG(position);
         stateService.setSelectItem(
           addSVG.newSVG.vectorId,
           VectorType.SVG,
@@ -476,6 +472,35 @@ export default class Layer {
         }
         needAutoRedraw = true;
         break;
+      case LayerEvents.MoveLine:
+        if (draggingItem != null) {
+          moveLine.moveLine(
+            draggingItem.vectorId,
+            (dx * coordinate.defaultZoom) / coordinate.zoom,
+            (dy * coordinate.defaultZoom) / coordinate.zoom
+          );
+          needAutoRedraw = true;
+        }
+        this.lastX = X;
+        this.lastY = Y;
+        break;
+      case LayerEvents.MovePoint:
+        if (draggingItem != null) {
+          point = dataService.getPoint(draggingItem.vectorId);
+          listenLayer.start(position, {
+            exceptPointId: draggingItem.vectorId,
+            exceptLineId: point.parent,
+          });
+          if (listenLayer.modifyPoint) {
+            position = {
+              x: listenLayer.modifyPoint.x,
+              y: listenLayer.modifyPoint.y,
+            };
+          }
+          moveLine.movePoint(position, draggingItem.vectorId);
+          needAutoRedraw = true;
+        }
+        break;
       case LayerEvents.MoveText:
         needAutoRedraw = true;
         if (draggingItem != null) {
@@ -655,6 +680,14 @@ export default class Layer {
         needAutoRedraw = true;
         this.history.save();
         break;
+      case LayerEvents.MoveLine:
+        needAutoRedraw = true;
+        this.history.save();
+        break;
+      case LayerEvents.MovePoint:
+        needAutoRedraw = true;
+        this.history.save();
+        break;
     }
 
     this.setEventName("mouseUp");
@@ -880,6 +913,8 @@ export default class Layer {
           stateService.setEventName(LayerEvents.MoveEdge);
         } else if (selectItem.type == VectorType.CurveRoadEdge) {
           stateService.setEventName(LayerEvents.MoveCurveEdge);
+        } else if (selectItem.type == VectorType.Point) {
+          stateService.setEventName(LayerEvents.MovePoint);
         } else if (selectItem.type == VectorType.Line) {
           stateService.setEventName(LayerEvents.MoveLine);
         } else if (selectItem.type == VectorType.CurveLine) {