|
@@ -42,40 +42,40 @@
|
42
|
42
|
var selectionButtons = {};
|
43
|
43
|
|
44
|
44
|
selectionButtons["delete"] = createButton("delete", "delete", 22, 22,
|
45
|
|
- function(me, bbox, s) {
|
|
45
|
+ function (me, bbox, s) {
|
46
|
46
|
me.width.baseVal.value = me.origWidth / s;
|
47
|
47
|
me.height.baseVal.value = me.origHeight / s;
|
48
|
48
|
me.x.baseVal.value = bbox.r[0];
|
49
|
49
|
me.y.baseVal.value = bbox.r[1] - (me.origHeight + 3) / s;
|
50
|
50
|
me.style.display = "";
|
51
|
51
|
},
|
52
|
|
- deleteSelection);
|
|
52
|
+ deleteSelection);
|
53
|
53
|
|
54
|
54
|
selectionButtons["duplicate"] = createButton("duplicate", "duplicate", 22, 22,
|
55
|
|
- function(me, bbox, s) {
|
|
55
|
+ function (me, bbox, s) {
|
56
|
56
|
me.width.baseVal.value = me.origWidth / s;
|
57
|
57
|
me.height.baseVal.value = me.origHeight / s;
|
58
|
58
|
me.x.baseVal.value = bbox.r[0] + (me.origWidth + 2) / s;
|
59
|
59
|
me.y.baseVal.value = bbox.r[1] - (me.origHeight + 3) / s;
|
60
|
60
|
me.style.display = "";
|
61
|
61
|
},
|
62
|
|
- duplicateSelection);
|
|
62
|
+ duplicateSelection);
|
63
|
63
|
selectionButtons["scale"] = createButton("scaleHandle", "handle", 14, 14,
|
64
|
|
- function(me, bbox, s) {
|
|
64
|
+ function (me, bbox, s) {
|
65
|
65
|
me.width.baseVal.value = me.origWidth / s;
|
66
|
66
|
me.height.baseVal.value = me.origHeight / s;
|
67
|
|
- me.x.baseVal.value = bbox.r[0] + bbox.a[0] - me.origWidth/(2*s);
|
68
|
|
- me.y.baseVal.value = bbox.r[1] + bbox.b[1] - me.origHeight/(2*s);
|
|
67
|
+ me.x.baseVal.value = bbox.r[0] + bbox.a[0] - me.origWidth / (2 * s);
|
|
68
|
+ me.y.baseVal.value = bbox.r[1] + bbox.b[1] - me.origHeight / (2 * s);
|
69
|
69
|
me.style.display = "";
|
70
|
70
|
},
|
71
|
|
- startScalingTransform);
|
|
71
|
+ startScalingTransform);
|
72
|
72
|
|
73
|
73
|
for (i in blockedSelectionButtons) {
|
74
|
74
|
delete selectionButtons[blockedSelectionButtons[i]];
|
75
|
75
|
}
|
76
|
|
- selectionButtons = Object.keys(selectionButtons).map(function(k) {
|
77
|
|
- return selectionButtons[k];
|
78
|
|
- });
|
|
76
|
+ selectionButtons = Object.keys(selectionButtons).map(function (k) {
|
|
77
|
+ return selectionButtons[k];
|
|
78
|
+ });
|
79
|
79
|
|
80
|
80
|
var getScale = Tools.getScale;
|
81
|
81
|
|
|
@@ -87,9 +87,9 @@
|
87
|
87
|
els.unshift(a);
|
88
|
88
|
a = a.parentElement;
|
89
|
89
|
}
|
90
|
|
- var parentMathematics = els.find(function(el) {
|
91
|
|
- return el.getAttribute("class") === "MathElement";
|
92
|
|
- });
|
|
90
|
+ var parentMathematics = els.find(function (el) {
|
|
91
|
+ return el.getAttribute("class") === "MathElement";
|
|
92
|
+ });
|
93
|
93
|
if ((parentMathematics) && parentMathematics.tagName === "svg") {
|
94
|
94
|
target = parentMathematics;
|
95
|
95
|
}
|
|
@@ -97,12 +97,12 @@
|
97
|
97
|
}
|
98
|
98
|
|
99
|
99
|
function deleteSelection() {
|
100
|
|
- var msgs = selected_els.map(function(el) {
|
101
|
|
- return ({
|
102
|
|
- "type": "delete",
|
103
|
|
- "id": el.id
|
104
|
|
- });
|
105
|
|
- });
|
|
100
|
+ var msgs = selected_els.map(function (el) {
|
|
101
|
+ return ({
|
|
102
|
+ "type": "delete",
|
|
103
|
+ "id": el.id
|
|
104
|
+ });
|
|
105
|
+ });
|
106
|
106
|
var data = {
|
107
|
107
|
_children: msgs
|
108
|
108
|
}
|
|
@@ -116,7 +116,7 @@
|
116
|
116
|
|| (selected_els.length == 0)) return;
|
117
|
117
|
var msgs = [];
|
118
|
118
|
var newids = [];
|
119
|
|
- for (var i=0; i<selected_els.length; i++) {
|
|
119
|
+ for (var i = 0; i < selected_els.length; i++) {
|
120
|
120
|
var id = selected_els[i].id;
|
121
|
121
|
msgs[i] = {
|
122
|
122
|
type: "copy",
|
|
@@ -125,10 +125,10 @@
|
125
|
125
|
};
|
126
|
126
|
newids[i] = id;
|
127
|
127
|
}
|
128
|
|
- Tools.drawAndSend({_children: msgs});
|
129
|
|
- selected_els = newids.map(function(id) {
|
130
|
|
- return Tools.svg.getElementById(id);
|
131
|
|
- });
|
|
128
|
+ Tools.drawAndSend({ _children: msgs });
|
|
129
|
+ selected_els = newids.map(function (id) {
|
|
130
|
+ return Tools.svg.getElementById(id);
|
|
131
|
+ });
|
132
|
132
|
}
|
133
|
133
|
|
134
|
134
|
function createSelectorRect() {
|
|
@@ -148,7 +148,7 @@
|
148
|
148
|
return shape;
|
149
|
149
|
}
|
150
|
150
|
|
151
|
|
- function createButton(name, icon , width, height, drawCallback, clickCallback) {
|
|
151
|
+ function createButton(name, icon, width, height, drawCallback, clickCallback) {
|
152
|
152
|
var shape = Tools.createSVGElement("image", {
|
153
|
153
|
id: name + "Icon",
|
154
|
154
|
href: "tools/hand/" + icon + ".svg",
|
|
@@ -191,10 +191,10 @@
|
191
|
191
|
currentTransform = moveSelection;
|
192
|
192
|
selected = { x: x, y: y };
|
193
|
193
|
// Some of the selected elements could have been deleted
|
194
|
|
- selected_els = selected_els.filter(function(el) {
|
195
|
|
- return Tools.svg.getElementById(el.id) !== null;
|
196
|
|
- });
|
197
|
|
- transform_elements = selected_els.map(function(el) {
|
|
194
|
+ selected_els = selected_els.filter(function (el) {
|
|
195
|
+ return Tools.svg.getElementById(el.id) !== null;
|
|
196
|
+ });
|
|
197
|
+ transform_elements = selected_els.map(function (el) {
|
198
|
198
|
var tmatrix = get_transform_matrix(el);
|
199
|
199
|
return {
|
200
|
200
|
a: tmatrix.a, b: tmatrix.b, c: tmatrix.c,
|
|
@@ -216,7 +216,7 @@
|
216
|
216
|
w: bbox.a[0],
|
217
|
217
|
h: bbox.b[1],
|
218
|
218
|
};
|
219
|
|
- transform_elements = selected_els.map(function(el) {
|
|
219
|
+ transform_elements = selected_els.map(function (el) {
|
220
|
220
|
var tmatrix = get_transform_matrix(el);
|
221
|
221
|
return {
|
222
|
222
|
a: tmatrix.a, b: tmatrix.b, c: tmatrix.c,
|
|
@@ -251,7 +251,7 @@
|
251
|
251
|
var selectionTBBox = selectionRect.transformedBBox();
|
252
|
252
|
var elements = Tools.drawingArea.children;
|
253
|
253
|
var selected = [];
|
254
|
|
- for (var i=0; i < elements.length; i++) {
|
|
254
|
+ for (var i = 0; i < elements.length; i++) {
|
255
|
255
|
if (transformedBBoxIntersects(selectionTBBox, elements[i].transformedBBox()))
|
256
|
256
|
selected.push(Tools.drawingArea.children[i]);
|
257
|
257
|
}
|
|
@@ -261,7 +261,7 @@
|
261
|
261
|
function moveSelection(x, y) {
|
262
|
262
|
var dx = x - selected.x;
|
263
|
263
|
var dy = y - selected.y;
|
264
|
|
- var msgs = selected_els.map(function(el, i) {
|
|
264
|
+ var msgs = selected_els.map(function (el, i) {
|
265
|
265
|
var oldTransform = transform_elements[i];
|
266
|
266
|
return {
|
267
|
267
|
type: "update",
|
|
@@ -292,9 +292,9 @@
|
292
|
292
|
}
|
293
|
293
|
|
294
|
294
|
function scaleSelection(x, y) {
|
295
|
|
- var rx = (x - selected.x)/(selected.w);
|
296
|
|
- var ry = (y - selected.y)/(selected.h);
|
297
|
|
- var msgs = selected_els.map(function(el, i) {
|
|
295
|
+ var rx = (x - selected.x) / (selected.w);
|
|
296
|
+ var ry = (y - selected.y) / (selected.h);
|
|
297
|
+ var msgs = selected_els.map(function (el, i) {
|
298
|
298
|
var oldTransform = transform_elements[i];
|
299
|
299
|
var x = el.transformedBBox().r[0];
|
300
|
300
|
var y = el.transformedBBox().r[1];
|
|
@@ -392,7 +392,7 @@
|
392
|
392
|
var newElement = Tools.svg.getElementById(data.id).cloneNode(true);
|
393
|
393
|
newElement.id = data.newid;
|
394
|
394
|
Tools.drawingArea.appendChild(newElement);
|
395
|
|
- break;
|
|
395
|
+ break;
|
396
|
396
|
case "delete":
|
397
|
397
|
data.tool = "Eraser";
|
398
|
398
|
messageForTool(data);
|
|
@@ -406,7 +406,7 @@
|
406
|
406
|
function clickSelector(x, y, evt) {
|
407
|
407
|
selectionRect = selectionRect || createSelectorRect();
|
408
|
408
|
var button = null;
|
409
|
|
- for (var i=0; i<selectionButtons.length; i++) {
|
|
409
|
+ for (var i = 0; i < selectionButtons.length; i++) {
|
410
|
410
|
if (selectionButtons[i].contains(evt.target)) {
|
411
|
411
|
button = selectionButtons[i];
|
412
|
412
|
}
|