From 7ec9326ce00d08f9d957981f2edff6df26f24a28 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期四, 26 九月 2024 13:25:02 +0800
Subject: [PATCH] 修改
---
web/public/SVGOrigin/Method-Draw-master/editor/src/path.js | 110 +++++++++++++++++++++++++++---------------------------
1 files changed, 55 insertions(+), 55 deletions(-)
diff --git a/web/public/SVGOrigin/Method-Draw-master/editor/src/path.js b/web/public/SVGOrigin/Method-Draw-master/editor/src/path.js
index 5b3cd5d..15b432a 100644
--- a/web/public/SVGOrigin/Method-Draw-master/editor/src/path.js
+++ b/web/public/SVGOrigin/Method-Draw-master/editor/src/path.js
@@ -58,7 +58,7 @@
svgedit.path.init = function(editorContext) {
editorContext_ = editorContext;
-
+
pathFuncs = [0,'ClosePath'];
var pathFuncsStrs = ['Moveto', 'Lineto', 'CurvetoCubic', 'CurvetoQuadratic', 'Arc',
'LinetoHorizontal', 'LinetoVertical','CurvetoCubicSmooth','CurvetoQuadraticSmooth'];
@@ -170,7 +170,7 @@
svgedit.path.addCtrlGrip = function(id) {
var pointGrip = svgedit.utilities.getElem("ctrlpointgrip_"+id);
if(pointGrip) return pointGrip;
-
+
pointGrip = document.createElementNS(svgns, "circle");
svgedit.utilities.assignAttributes(pointGrip, {
'id': "ctrlpointgrip_" + id,
@@ -222,7 +222,7 @@
var item = seg.item;
var index = seg.index;
if(!item || !("x1" in item) || !("x2" in item)) return null;
- var cpt = {};
+ var cpt = {};
var pointGripContainer = svgedit.path.getGripContainer();
// Note that this is intentionally not seg.prev.item
@@ -287,7 +287,7 @@
'd': 'M0,0 0,0'
});
pointGripContainer.appendChild(segLine);
- }
+ }
if(update) {
var prev = seg.prev;
@@ -314,13 +314,13 @@
// Function: smoothControlPoints
// Takes three points and creates a smoother line based on them
-//
-// Parameters:
+//
+// Parameters:
// ct1 - Object with x and y values (first control point)
// ct2 - Object with x and y values (second control point)
// pt - Object with x and y values (third point)
//
-// Returns:
+// Returns:
// Array of two "smoothed" point objects
svgedit.path.smoothControlPoints = this.smoothControlPoints = function(ct1, ct2, pt) {
// each point must not be the origin
@@ -328,20 +328,20 @@
y1 = ct1.y - pt.y,
x2 = ct2.x - pt.x,
y2 = ct2.y - pt.y;
-
+
if ( (x1 != 0 || y1 != 0) && (x2 != 0 || y2 != 0) ) {
var anglea = Math.atan2(y1,x1),
angleb = Math.atan2(y2,x2),
r1 = Math.sqrt(x1*x1+y1*y1),
r2 = Math.sqrt(x2*x2+y2*y2),
nct1 = editorContext_.getSVGRoot().createSVGPoint(),
- nct2 = editorContext_.getSVGRoot().createSVGPoint();
+ nct2 = editorContext_.getSVGRoot().createSVGPoint();
if (anglea < 0) { anglea += 2*Math.PI; }
if (angleb < 0) { angleb += 2*Math.PI; }
-
+
var angleBetween = Math.abs(anglea - angleb),
angleDiff = Math.abs(Math.PI - angleBetween)/2;
-
+
var new_anglea, new_angleb;
if (anglea - angleb > 0) {
new_anglea = angleBetween < Math.PI ? (anglea + angleDiff) : (anglea - angleDiff);
@@ -351,13 +351,13 @@
new_anglea = angleBetween < Math.PI ? (anglea - angleDiff) : (anglea + angleDiff);
new_angleb = angleBetween < Math.PI ? (angleb + angleDiff) : (angleb - angleDiff);
}
-
+
// rotate the points
nct1.x = r1 * Math.cos(new_anglea) + pt.x;
nct1.y = r1 * Math.sin(new_anglea) + pt.y;
nct2.x = r2 * Math.cos(new_angleb) + pt.x;
nct2.y = r2 * Math.sin(new_angleb) + pt.y;
-
+
return [nct1, nct2];
}
return undefined;
@@ -368,7 +368,7 @@
this.index = index;
this.item = item;
this.type = item.pathSegType;
-
+
this.ctrlpts = [];
this.ptgrip = null;
this.segsel = null;
@@ -426,7 +426,7 @@
this.type = this.item.pathSegType;
}
svgedit.path.getControlPoints(this);
- }
+ }
// this.segsel.setAttribute("display", y?"inline":"none");
}
};
@@ -435,17 +435,17 @@
var item = this.item;
// fix for path tool dom breakage, amending item does bad things now, so we take a copy and use that. Can probably improve to just take a shallow copy of object
var cloneItem = $.extend({}, item);
- var cur_pts = (this.ctrlpts)
- ? [cloneItem.x += dx, cloneItem.y += dy,
- cloneItem.x1, cloneItem.y1,
+ var cur_pts = (this.ctrlpts)
+ ? [cloneItem.x += dx, cloneItem.y += dy,
+ cloneItem.x1, cloneItem.y1,
cloneItem.x2 += dx, cloneItem.y2 += dy]
: [cloneItem.x += dx, cloneItem.y += dy];
-
+
svgedit.path.replacePathSeg(this.type, this.index, cur_pts);
if(this.next && this.next.ctrlpts) {
var next = this.next.item;
- var next_pts = [next.x, next.y,
+ var next_pts = [next.x, next.y,
next.x1 += dx, next.y1 += dy, next.x2, next.y2];
svgedit.path.replacePathSeg(this.next.type, this.next.index, next_pts);
}
@@ -482,7 +482,7 @@
cloneItem['x' + anum ] = pt.x + (pt.x - this.item['x' + num]);
cloneItem['y' + anum ] = pt.y + (pt.y - this.item['y' + num]);
- var pts = [
+ var pts = [
cloneItem.x, cloneItem.y,
cloneItem.x1, cloneItem.y1,
cloneItem.x2, cloneItem.y2
@@ -500,7 +500,7 @@
var pts = [item.x,item.y,
item.x1,item.y1, item.x2,item.y2];
-
+
svgedit.path.replacePathSeg(this.type, this.index, pts);
this.update(true);
};
@@ -536,23 +536,23 @@
this.segs = [];
this.selected_pts = [];
this.first_seg = null;
-
+
// Set up segs array
for(var i=0; i < len; i++) {
var item = segList.getItem(i);
var segment = new svgedit.path.Segment(i, item);
segment.path = this;
this.segs.push(segment);
- }
-
+ }
+
var segs = this.segs;
var start_i = null;
for(var i=0; i < len; i++) {
- var seg = segs[i];
+ var seg = segs[i];
var next_seg = (i+1) >= len ? null : segs[i+1];
var prev_seg = (i-1) < 0 ? null : segs[i-1];
-
+
if(seg.type === 2) {
if(prev_seg && prev_seg.type !== 1) {
// New sub-path, last one is open,
@@ -568,7 +568,7 @@
// This is the last real segment of a closed sub-path
// Next is first seg after "M"
seg.next = segs[start_i+1];
-
+
// First seg after "M"'s prev is this
seg.next.prev = seg;
seg.mate = segs[start_i];
@@ -594,7 +594,7 @@
} else if(seg.type !== 1){
// Regular segment, so add grip and its "next"
seg.addGrip();
-
+
// Don't set its "next" if it's an "M"
if(next_seg && next_seg.type !== 2) {
seg.next = next_seg;
@@ -652,17 +652,17 @@
svgedit.path.Path.prototype.deleteSeg = function(index) {
var seg = this.segs[index];
var list = this.elem.pathSegList;
-
+
seg.show(false);
var next = seg.next;
if(seg.mate) {
// Make the next point be the "M" point
var pt = [next.item.x, next.item.y];
svgedit.path.replacePathSeg(2, next.index, pt);
-
+
// Reposition last node
svgedit.path.replacePathSeg(4, seg.index, pt);
-
+
list.removeItem(seg.mate.index);
} else if(!seg.prev) {
// First node of open path, make next point the M
@@ -670,7 +670,7 @@
var pt = [next.item.x, next.item.y];
svgedit.path.replacePathSeg(2, seg.next.index, pt);
list.removeItem(index);
-
+
} else {
list.removeItem(index);
}
@@ -690,7 +690,7 @@
return false;
}
});
-
+
return closed;
};
@@ -698,7 +698,7 @@
var pos = this.selected_pts.indexOf(index);
if(pos == -1) {
return;
- }
+ }
this.segs[index].select(false);
this.selected_pts.splice(pos, 1);
};
@@ -727,7 +727,7 @@
return this;
};
-// Move selected points
+// Move selected points
svgedit.path.Path.prototype.movePts = function(d_x, d_y) {
var i = this.selected_pts.length;
while(i--) {
@@ -750,23 +750,23 @@
var text;
while(i--) {
var sel_pt = this.selected_pts[i];
-
+
// Selected seg
var cur = this.segs[sel_pt];
var prev = cur.prev;
if(!prev) continue;
-
+
if(!new_type) { // double-click, so just toggle
text = "Toggle Path Segment Type";
// Toggle segment to curve/straight line
var old_type = cur.type;
-
+
new_type = (old_type == 6) ? 4 : 6;
- }
-
+ }
+
new_type = new_type-0;
-
+
var cur_x = cur.item.x;
var cur_y = cur.item.y;
var prev_x = prev.item.x;
@@ -797,12 +797,12 @@
break;
case 4:
points = [cur_x,cur_y];
-
+
// Store original prevve segment nums
cur.olditem = cur.item;
break;
}
-
+
cur.setType(new_type, points);
}
svgedit.path.path.endChanges(text);
@@ -821,7 +821,7 @@
this.addPtsToSelection(pt);
if(ctrl_num) {
this.dragctrl = ctrl_num;
-
+
if(link_control_pts) {
this.segs[pt].setLinked(ctrl_num);
}
@@ -860,20 +860,20 @@
var getRotVals = function(x, y, oldcx, oldcy, newcx, newcy, angle) {
dx = x - oldcx;
dy = y - oldcy;
-
+
// rotate the point around the old center
r = Math.sqrt(dx*dx + dy*dy);
theta = Math.atan2(dy,dx) + angle;
dx = r * Math.cos(theta) + oldcx;
dy = r * Math.sin(theta) + oldcy;
-
+
// dx,dy should now hold the actual coordinates of each
// point after being rotated
// now we want to rotate them around the new center in the reverse direction
dx -= newcx;
dy -= newcy;
-
+
r = Math.sqrt(dx*dx + dy*dy);
theta = Math.atan2(dy,dx) - angle;
return {'x':(r * Math.cos(theta) + newcx)/1,
@@ -881,7 +881,7 @@
};
// If the path was rotated, we must now pay the piper:
-// Every path point must be rotated into the rotated coordinate system of
+// Every path point must be rotated into the rotated coordinate system of
// its old center, then determine the new center, then rotate it back
// This is because we want the path to remember its rotation
@@ -898,16 +898,16 @@
oldcy = oldbox.y + oldbox.height/2,
newcx = box.x + box.width/2,
newcy = box.y + box.height/2,
-
+
// un-rotate the new center to the proper position
dx = newcx - oldcx,
dy = newcy - oldcy,
r = Math.sqrt(dx*dx + dy*dy),
theta = Math.atan2(dy,dx) + angle;
-
+
newcx = r * Math.cos(theta) + oldcx;
newcy = r * Math.sin(theta) + oldcy;
-
+
var list = current_path.pathSegList,
i = list.numberOfItems;
while (i) {
@@ -915,7 +915,7 @@
var seg = list.getItem(i),
type = seg.pathSegType;
if(type == 1) continue;
-
+
var rvals = getRotVals(seg.x,seg.y, oldcx, oldcy, newcx, newcy, angle),
points = [rvals.x, rvals.y];
if(seg.x1 != null && seg.x2 != null) {
@@ -926,10 +926,10 @@
svgedit.path.replacePathSeg(type, i, points);
} // loop for each point
- box = svgedit.utilities.getBBox(current_path);
+ box = svgedit.utilities.getBBox(current_path);
// selectedBBoxes[0].x = box.x; selectedBBoxes[0].y = box.y;
// selectedBBoxes[0].width = box.width; selectedBBoxes[0].height = box.height;
-
+
// now we must set the new transform to be rotated around the new center
var R_nc = svgroot.createSVGTransform(),
tlist = svgedit.transformlist.getTransformList(current_path);
--
Gitblit v1.9.1