xushiting hace 2 años
padre
commit
1889681eab
Se han modificado 2 ficheros con 28 adiciones y 0 borrados
  1. 2 0
      src/graphic/Controls/UIControl.js
  2. 26 0
      src/graphic/Service/LineService.js

+ 2 - 0
src/graphic/Controls/UIControl.js

@@ -353,6 +353,7 @@ export default class UIControl {
         }
         break;
       case VectorType.CurveLine:
+        dataService.deleteCurveLine(vectorId);
         break;
       case VectorType.Circle:
         dataService.deleteCircle(vectorId);
@@ -387,6 +388,7 @@ export default class UIControl {
         lineService.copy(vectorId);
         break;
       case VectorType.CurveLine:
+        lineService.copyCurveLine(vectorId);
         break;
       case VectorType.Circle:
         circleService.copy(vectorId);

+ 26 - 0
src/graphic/Service/LineService.js

@@ -159,6 +159,32 @@ export default class LineService {
     curveLine.points.splice(index + 1, 0, newPoint);
     curveLine.curves = mathUtil.getCurvesByPoints(curveLine.points);
   }
+
+  copyCurveLine(vectorId) {
+    let curveLine = dataService.getCurveLine(vectorId);
+    let startPoint = dataService.getCurvePoint(curveLine.startId);
+    let endPoint = dataService.getCurvePoint(curveLine.endId);
+    startPoint = uiService.getNewPositionForPop(startPoint);
+    endPoint = uiService.getNewPositionForPop(endPoint);
+
+    let newCurveLine = this.createCurveLine(startPoint, endPoint);
+    newCurveLine.setColor(curveLine.color);
+    if (curveLine.weight) {
+      newCurveLine.setWeight(curveLine.weight);
+    }
+    if (curveLine.style) {
+      newCurveLine.setStyle(curveLine.style);
+    }
+    mathUtil.clonePoint(newCurveLine.points[1], curveLine.points[1]);
+    for (let i = 2; i < curveLine.points.length - 1; ++i) {
+      let newPoint = uiService.getNewPositionForPop(curveLine.points[i]);
+      newPoint = curvePointService.create(newPoint);
+      newPoint.setIndex(i);
+      newCurveLine.points.splice(i + 1, 0, newPoint);
+    }
+    newCurveLine.curves = mathUtil.getCurvesByPoints(newCurveLine.points);
+    return newCurveLine;
+  }
 }
 
 const lineService = new LineService();