efront 3.12.6 → 3.13.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/pivot/api.yml +8 -0
- package/apps/pivot/home/welcome.html +1 -1
- package/apps/pivot/home/welcome.js +6 -9
- package/apps/pivot/log/boot.html +2 -0
- package/apps/pivot/log/boot.js +39 -0
- package/apps/pivot/log/boot.less +11 -0
- package/apps/pivot/log/count.html +5 -0
- package/apps/pivot/log/count.js +22 -0
- package/apps/pivot/log/count.less +16 -0
- package/apps/pivot/main.js +9 -10
- package/apps/pivot/menu.yml +8 -2
- package/apps/pivot/proxy/edit.js +1 -0
- package/apps/pivot/proxy/list.js +12 -0
- package/apps/pivot/share/list.less +0 -4
- package/apps/pivot/user/edit.js +1 -0
- package/apps/pivot/user/list.js +4 -0
- package/apps/pivot/user/tag/edit.js +1 -0
- package/apps/pivot/user/tag/list.js +3 -0
- package/coms/basic/cross_.js +8 -1
- package/coms/basic/encodePack.js +2 -9
- package/coms/basic/parseURL_test.js +2 -0
- package/coms/basic/parseYML.js +1 -1
- package/coms/basic/renderExpress.js +1 -1
- package/coms/frame/route.js +4 -0
- package/coms/pivot/plist.js +1 -1
- package/coms/zimoli/AudioContext_test.html +1 -1
- package/coms/zimoli/AudioContext_test.js +3 -3
- package/coms/zimoli/bind.js +4 -2
- package/coms/zimoli/cloneVisible.js +9 -2
- package/coms/zimoli/cross.js +2 -3
- package/coms/zimoli/data.js +22 -4
- package/coms/zimoli/drag.js +3 -2
- package/coms/zimoli/field.html +15 -10
- package/coms/zimoli/menu.js +33 -13
- package/coms/zimoli/menu.less +31 -9
- package/coms/zimoli/menuItem.js +1 -1
- package/coms/zimoli/menuList.html +5 -3
- package/coms/zimoli/menuList.js +63 -28
- package/coms/zimoli/menuList.less +5 -0
- package/coms/zimoli/model.js +22 -1
- package/coms/zimoli/on.js +5 -3
- package/coms/zimoli/picture.js +30 -335
- package/coms/zimoli/picture_.js +356 -0
- package/coms/zimoli/prompt.js +3 -1
- package/coms/zimoli/render.js +22 -10
- package/coms/zimoli/renderDefaults.js +1 -0
- package/coms/zimoli/search.js +5 -4
- package/coms/zimoli/select.js +7 -3
- package/coms/zimoli/selectList.js +7 -7
- package/coms/zimoli/selectListEdit.js +1 -1
- package/coms/zimoli/success.js +4 -0
- package/coms/zimoli/success.less +13 -0
- package/coms/zimoli/table.html +6 -8
- package/coms/zimoli/table.js +25 -2
- package/coms/zimoli/table.less +24 -4
- package/coms/zimoli/view.less +4 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/apps/pivot/home/short.html +0 -1
- package/apps/pivot/home/short.js +0 -5
- package/apps/pivot/home/short.less +0 -1
package/coms/zimoli/picture.js
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
on("resize")(window, function () {
|
|
3
|
-
mountedPictures.forEach(a => a.update());
|
|
4
|
-
});
|
|
1
|
+
|
|
5
2
|
var coordIn = move.coordIn;
|
|
6
|
-
var trimCoord = move.trimCoord;
|
|
7
|
-
var getstation = function (n, s) {
|
|
8
|
-
var scale = Math.pow(10, Math.round(Math.log(n) / Math.log(10)));
|
|
9
|
-
var step;
|
|
10
|
-
if (n / scale < 1) {
|
|
11
|
-
step = s ? .01 : .05;
|
|
12
|
-
} else {
|
|
13
|
-
step = s ? .05 : .1;
|
|
14
|
-
}
|
|
15
|
-
step = step * scale;
|
|
16
|
-
n = Math.round(n / step) * step;
|
|
17
|
-
return n;
|
|
18
|
-
};
|
|
19
3
|
var _createImage = function (url, callback) {
|
|
20
4
|
var imgpic;
|
|
21
5
|
if (url instanceof Image) {
|
|
@@ -38,17 +22,11 @@ var _createImage = function (url, callback) {
|
|
|
38
22
|
return imgpic;
|
|
39
23
|
};
|
|
40
24
|
var create = function (url, key) {
|
|
41
|
-
|
|
42
|
-
var __css = function (a) {
|
|
43
|
-
css.apply(a, arguments);
|
|
44
|
-
if (imgpic) dispatch(imgpic, 'scaled');
|
|
45
|
-
dispatch(p, 'scaled');
|
|
46
|
-
};
|
|
47
25
|
if (!url) return;
|
|
48
|
-
|
|
26
|
+
|
|
27
|
+
var image = picture_();
|
|
49
28
|
image.url = url;
|
|
50
29
|
if (广告 && !广告.parentNode) appendChild(image, 广告);
|
|
51
|
-
|
|
52
30
|
if (isObject(url)) {
|
|
53
31
|
if (key) {
|
|
54
32
|
url = seek(url, key);
|
|
@@ -56,56 +34,34 @@ var create = function (url, key) {
|
|
|
56
34
|
}
|
|
57
35
|
var p = this;
|
|
58
36
|
var createImage = p.createImage || _createImage;
|
|
59
|
-
var image_width, image_height;
|
|
60
|
-
var scaled, x, y, min_scale, loaded_scale, locked_scale, click_scale, loaded_x, loaded_y;
|
|
61
|
-
var origin_width, origin_height;
|
|
62
|
-
var max_scale = 10 * devicePixelRatio;
|
|
63
37
|
|
|
64
|
-
|
|
38
|
+
image.shape = function (x, y, scaled, rotate) {
|
|
39
|
+
var style = get_style(x, y, scaled, rotate);
|
|
40
|
+
css(imgpic, style);
|
|
41
|
+
if (imgpic) dispatch(imgpic, 'scaled');
|
|
42
|
+
};
|
|
43
|
+
image.park = function (x, y, scaled, rotate) {
|
|
44
|
+
var style = get_style(x, y, scaled, rotate);
|
|
45
|
+
var a = transition(imgpic, style, true);
|
|
46
|
+
setTimeout(function () {
|
|
47
|
+
// set_unlock();
|
|
48
|
+
// image.locked = false;
|
|
49
|
+
}, a || 0);
|
|
50
|
+
|
|
51
|
+
};
|
|
52
|
+
var init = function () {
|
|
65
53
|
if (!imgpic) return;
|
|
66
54
|
if (!image.clientHeight || !image.clientWidth) {
|
|
67
55
|
image.width = imgpic.width;
|
|
68
56
|
image.height = imgpic.height;
|
|
69
57
|
return;
|
|
70
58
|
}
|
|
71
|
-
image_width = image.width / devicePixelRatio;
|
|
72
|
-
image_height = image.height / devicePixelRatio;
|
|
73
|
-
origin_width = image.clientWidth;
|
|
74
|
-
origin_height = image.clientHeight;
|
|
75
|
-
origin_rotate = 0;
|
|
76
59
|
if (p.current === image) {
|
|
77
60
|
p.width = image.width;
|
|
78
61
|
p.height = image.height;
|
|
79
62
|
}
|
|
80
|
-
|
|
81
|
-
if (loaded_scale >= 0.9) {
|
|
82
|
-
if (loaded_scale < 1.2) {
|
|
83
|
-
click_scale = 1;
|
|
84
|
-
loaded_scale = .8;
|
|
85
|
-
} else if (loaded_scale < max_scale) {
|
|
86
|
-
click_scale = loaded_scale;
|
|
87
|
-
loaded_scale = 1;
|
|
88
|
-
} else {
|
|
89
|
-
click_scale = max_scale;
|
|
90
|
-
loaded_scale = 1;
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
click_scale = 1;
|
|
94
|
-
}
|
|
95
|
-
loaded_x = (image.clientWidth - image_width * loaded_scale) / 2;
|
|
96
|
-
loaded_y = (image.clientHeight - image_height * loaded_scale) / 2;
|
|
97
|
-
min_scale = loaded_scale * .75;
|
|
98
|
-
scaled = loaded_scale;
|
|
99
|
-
x = loaded_x;
|
|
100
|
-
y = loaded_y;
|
|
101
|
-
updatexy();
|
|
102
|
-
};
|
|
103
|
-
var set_unlock = function () {
|
|
104
|
-
if (!loaded_scale) return;
|
|
105
|
-
setInitParams();
|
|
106
|
-
__css(imgpic, get_style(-1));
|
|
63
|
+
image.init();
|
|
107
64
|
};
|
|
108
|
-
|
|
109
65
|
var imgpic;
|
|
110
66
|
image.setImage = function (_imgpic) {
|
|
111
67
|
if (!isElement(_imgpic)) _imgpic = this;
|
|
@@ -118,66 +74,24 @@ var create = function (url, key) {
|
|
|
118
74
|
remove(imgpic);
|
|
119
75
|
appendChild(image, _imgpic);
|
|
120
76
|
imgpic = _imgpic;
|
|
121
|
-
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
122
79
|
imgpic = _imgpic;
|
|
123
80
|
_imgpic.setAttribute('imgpic', '');
|
|
124
81
|
_imgpic.draggable = false;
|
|
125
82
|
image.width = _imgpic.width;
|
|
126
83
|
image.height = _imgpic.height;
|
|
127
84
|
appendChild(image, _imgpic);
|
|
128
|
-
|
|
129
|
-
set_unlock();
|
|
85
|
+
init();
|
|
130
86
|
}
|
|
131
87
|
};
|
|
88
|
+
|
|
132
89
|
createImage(url, image.setImage);
|
|
133
|
-
on("append")(image, setInitParams);
|
|
134
90
|
|
|
135
91
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
var time = +new Date;
|
|
140
|
-
var delta_time = time - last_click_time;
|
|
141
|
-
last_click_time = time;
|
|
142
|
-
if (delta_time > 300) return;
|
|
143
|
-
var image = this;
|
|
144
|
-
var __scaled = scaled, _x = x, _y = y;
|
|
145
|
-
setInitParams();
|
|
146
|
-
image.locked = __scaled === loaded_scale && loaded_x === _x && loaded_y === _y;
|
|
147
|
-
var layerx = event.offsetX || 0;
|
|
148
|
-
var layery = event.offsetY || 0;
|
|
149
|
-
if (layerx)
|
|
150
|
-
if (image.locked) {
|
|
151
|
-
var width = image_width * loaded_scale, height = image_height * loaded_scale;
|
|
152
|
-
if (layerx > loaded_x + width || layerx < loaded_x || width < image.offsetWidth >> 2) {
|
|
153
|
-
layerx = loaded_x + width / 2;
|
|
154
|
-
}
|
|
155
|
-
if (layery > loaded_y + height || layery < loaded_y || height < image.offsetHeight >> 2) {
|
|
156
|
-
layery = loaded_y + height / 2;
|
|
157
|
-
}
|
|
158
|
-
scale(layerx, layery, click_scale / loaded_scale);
|
|
159
|
-
} else {
|
|
160
|
-
set_unlock();
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
image.getScale = function () {
|
|
164
|
-
if (!this.locked && !loaded_scale) {
|
|
165
|
-
setInitParams();
|
|
166
|
-
}
|
|
167
|
-
return +String(+scaled + 0.00005).slice(0, 6);
|
|
168
|
-
};
|
|
169
|
-
var get_style = function (type) {
|
|
170
|
-
var width = image_width * scaled;
|
|
171
|
-
var height = image_height * scaled;
|
|
172
|
-
var r = image.rotate | 0;
|
|
173
|
-
var [, , w, h] = getrotatedltwh(r);
|
|
174
|
-
if (type <= 0) {
|
|
175
|
-
var x0 = x + (width - w) / 2;
|
|
176
|
-
var y0 = y + (height - h) / 2;
|
|
177
|
-
var [x1, y1] = trimCoord([image.clientWidth, image.clientHeight], [x0, y0, w, h], type);
|
|
178
|
-
x += x1 - x0;
|
|
179
|
-
y += y1 - y0;
|
|
180
|
-
}
|
|
92
|
+
var get_style = function (x, y, scaled, rotate) {
|
|
93
|
+
var width = image.width * scaled;
|
|
94
|
+
var height = image.height * scaled;
|
|
181
95
|
var [left, top, marginLeft, marginTop] = coordIn([image.clientWidth, image.clientHeight], [x, y, width, height]);
|
|
182
96
|
return {
|
|
183
97
|
imageRendering: scaled >= 3 / devicePixelRatio ? "pixelated" : "",
|
|
@@ -186,203 +100,9 @@ var create = function (url, key) {
|
|
|
186
100
|
left,
|
|
187
101
|
top,
|
|
188
102
|
marginLeft,
|
|
189
|
-
transform: `rotate(${
|
|
103
|
+
transform: `rotate(${rotate}deg)`,
|
|
190
104
|
marginTop
|
|
191
105
|
};
|
|
192
|
-
};
|
|
193
|
-
var scale = function (layerx, layery, ratio) {
|
|
194
|
-
if (!image.locked) return;
|
|
195
|
-
scaled *= ratio;
|
|
196
|
-
x = (x - layerx) * ratio + layerx;
|
|
197
|
-
y = (y - layery) * ratio + layery;
|
|
198
|
-
__css(imgpic, get_style());
|
|
199
|
-
};
|
|
200
|
-
var touch = function ([x1, y1, x2, y2], [m1, n1, m2, n2]) {
|
|
201
|
-
var l1 = Math.sqrt(Math.pow(m1 - m2, 2) + Math.pow(n1 - n2, 2));
|
|
202
|
-
var l2 = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
|
|
203
|
-
var scale = l1 / l2;
|
|
204
|
-
if (scaled >= max_scale * 1.1 && scale > 1) return;
|
|
205
|
-
if (scaled <= min_scale && scale < 1) return;
|
|
206
|
-
scaled *= scale;
|
|
207
|
-
var centerx = (x1 + x2) / 2;
|
|
208
|
-
var centery = (y1 + y2) / 2;
|
|
209
|
-
var centerm = (m1 + m2) / 2;
|
|
210
|
-
var centern = (n1 + n2) / 2;
|
|
211
|
-
x = (x - centerx) * scale + centerm;
|
|
212
|
-
y = (y - centery) * scale + centern;
|
|
213
|
-
__css(imgpic, get_style());
|
|
214
|
-
};
|
|
215
|
-
var recover = function (change) {
|
|
216
|
-
var aimed_scale = getstation(scaled);
|
|
217
|
-
if (aimed_scale !== scaled) {
|
|
218
|
-
change = true;
|
|
219
|
-
x = (x - image.clientWidth / 2) / scaled * aimed_scale + image.clientWidth / 2;
|
|
220
|
-
y = (y - image.clientHeight / 2) / scaled * aimed_scale + image.clientHeight / 2;
|
|
221
|
-
scaled = aimed_scale;
|
|
222
|
-
}
|
|
223
|
-
if (scaled <= loaded_scale * 1.2) {
|
|
224
|
-
scaled = loaded_scale;
|
|
225
|
-
x = loaded_x;
|
|
226
|
-
y = loaded_y;
|
|
227
|
-
change = true;
|
|
228
|
-
}
|
|
229
|
-
if (scaled > max_scale) {
|
|
230
|
-
change = true;
|
|
231
|
-
x = (x - image.clientWidth / 2) * max_scale / scaled + image.clientWidth / 2;
|
|
232
|
-
y = (y - image.clientHeight / 2) * max_scale / scaled + image.clientHeight / 2;
|
|
233
|
-
scaled = max_scale;
|
|
234
|
-
}
|
|
235
|
-
var saved_x = x, saved_y = y;
|
|
236
|
-
var style = get_style(-1);
|
|
237
|
-
if (change || saved_x !== x || saved_y !== y) {
|
|
238
|
-
var a = transition(imgpic, style, true);
|
|
239
|
-
if (scaled === loaded_scale) {
|
|
240
|
-
setTimeout(function () {
|
|
241
|
-
set_unlock();
|
|
242
|
-
image.locked = false;
|
|
243
|
-
}, a || 0);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
};
|
|
247
|
-
var move = inertia(function (deltax, deltay) {
|
|
248
|
-
var saved_x = x, saved_y = y;
|
|
249
|
-
x += deltax, y += deltay;
|
|
250
|
-
__css(imgpic, get_style(-1));
|
|
251
|
-
if (saved_x === x && saved_y === y) return false;
|
|
252
|
-
});
|
|
253
|
-
var saved_event, wheeltime;
|
|
254
|
-
onmousewheel(image, function (event) {
|
|
255
|
-
var { offsetX: layerX, offsetY: layerY, deltaY } = event;
|
|
256
|
-
if (this.locked) event.preventDefault();
|
|
257
|
-
if (!deltaY) return;
|
|
258
|
-
if (!this.locked) setInitParams();
|
|
259
|
-
this.locked = true;
|
|
260
|
-
var ratio = Math.pow(0.99, 20 * Math.atan(deltaY / 20));
|
|
261
|
-
var __scaled = scaled;
|
|
262
|
-
__scaled *= ratio;
|
|
263
|
-
if (__scaled > max_scale && ratio > 1) {
|
|
264
|
-
__scaled = max_scale;
|
|
265
|
-
}
|
|
266
|
-
if (__scaled < min_scale && ratio < 1) {
|
|
267
|
-
__scaled = min_scale;
|
|
268
|
-
}
|
|
269
|
-
ratio = __scaled / scaled;
|
|
270
|
-
scale(layerX, layerY, ratio);
|
|
271
|
-
});
|
|
272
|
-
moveupon(image, {
|
|
273
|
-
start(event) {
|
|
274
|
-
event.preventDefault();
|
|
275
|
-
saved_event = event;
|
|
276
|
-
event.moveLocked = scaled > locked_scale;
|
|
277
|
-
if (!this.locked) {
|
|
278
|
-
setInitParams();
|
|
279
|
-
}
|
|
280
|
-
move.reset();
|
|
281
|
-
},
|
|
282
|
-
move(event) {
|
|
283
|
-
if (event.moveLocked) return;
|
|
284
|
-
event.moveLocked = scaled > locked_scale;
|
|
285
|
-
event.preventDefault();
|
|
286
|
-
if (event.touches && saved_event.touches) {
|
|
287
|
-
if (event.touches.length !== saved_event.touches.length) {
|
|
288
|
-
saved_event = event;
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
switch (event.touches.length) {
|
|
293
|
-
case 1:
|
|
294
|
-
if (!this.locked) return;
|
|
295
|
-
break;
|
|
296
|
-
case 2:
|
|
297
|
-
this.locked = true;
|
|
298
|
-
event.moveLocked = true;
|
|
299
|
-
var [xy1, xy2] = saved_event.touches;
|
|
300
|
-
var [mn1, mn2] = event.touches;
|
|
301
|
-
var { left, top } = getScreenPosition(image);
|
|
302
|
-
top += image.clientTop;
|
|
303
|
-
left += image.clientLeft;
|
|
304
|
-
touch(
|
|
305
|
-
[xy1.clientX - left, xy1.clientY - top, xy2.clientX - left, xy2.clientY - top],
|
|
306
|
-
[mn1.clientX - left, mn1.clientY - top, mn2.clientX - left, mn2.clientY - top]
|
|
307
|
-
);
|
|
308
|
-
saved_event = event;
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
if (!this.locked) return;
|
|
313
|
-
var deltax = event.clientX - saved_event.clientX,
|
|
314
|
-
deltay = event.clientY - saved_event.clientY;
|
|
315
|
-
move(deltax, deltay);
|
|
316
|
-
saved_event = event;
|
|
317
|
-
},
|
|
318
|
-
end(event) {
|
|
319
|
-
if (saved_event) {
|
|
320
|
-
if (event.timeStamp - saved_event.timeStamp > 120) {
|
|
321
|
-
move.reset();
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
saved_event = null;
|
|
325
|
-
event.moveLocked = scaled >= locked_scale;
|
|
326
|
-
|
|
327
|
-
if (this.locked && onclick.preventClick) move.smooth(recover);
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
on("append")(image, function () {
|
|
331
|
-
mountedPictures.push(image);
|
|
332
|
-
set_unlock();
|
|
333
|
-
});
|
|
334
|
-
on("remove")(image, function () {
|
|
335
|
-
removeFromList(mountedPictures, image);
|
|
336
|
-
});
|
|
337
|
-
var origin_rotate = 0;
|
|
338
|
-
var updatexy = function () {
|
|
339
|
-
var deg = image.rotate - origin_rotate;
|
|
340
|
-
if (isFinite(deg)) {
|
|
341
|
-
origin_rotate = image.rotate;
|
|
342
|
-
[x, y] = getrotatedltwh(deg, scaled);
|
|
343
|
-
}
|
|
344
|
-
};
|
|
345
|
-
var getrotatedltwh = function (a, s = scaled) {
|
|
346
|
-
var w = image_width * s;
|
|
347
|
-
var h = image_height * s;
|
|
348
|
-
var c = [image.clientWidth / 2, image.clientHeight / 2];
|
|
349
|
-
var m = x + w / 2;
|
|
350
|
-
var n = y + h / 2;
|
|
351
|
-
var [c1, c2] = rotate([m, n], -a, c);
|
|
352
|
-
c1 -= w / 2;
|
|
353
|
-
c2 -= h / 2;
|
|
354
|
-
a = origin_rotate;
|
|
355
|
-
var l = c[0] - w / 2;
|
|
356
|
-
var r = l + w;
|
|
357
|
-
var t = c[1] - h / 2;
|
|
358
|
-
var b = t + h;
|
|
359
|
-
var [x1, y1] = rotate([l, t], a, c);
|
|
360
|
-
var [x2, y2] = rotate([r, t], a, c);
|
|
361
|
-
var [x3, y3] = rotate([l, b], a, c);
|
|
362
|
-
var [x4, y4] = rotate([r, b], a, c);
|
|
363
|
-
var l = Math.min(x1, x2, x3, x4);
|
|
364
|
-
var t = Math.min(y1, y2, y3, y4);
|
|
365
|
-
var w = Math.max(x1, x2, x3, x4) - l;
|
|
366
|
-
var h = Math.max(y1, y2, y3, y4) - t;
|
|
367
|
-
return [c1, c2, w, h];
|
|
368
|
-
};
|
|
369
|
-
image.update = function (animate) {
|
|
370
|
-
if (image.locked) {
|
|
371
|
-
updatexy();
|
|
372
|
-
x += (image.clientWidth - origin_width) / 2;
|
|
373
|
-
y += (image.clientHeight - origin_height) / 2;
|
|
374
|
-
origin_height = image.clientHeight;
|
|
375
|
-
origin_width = image.clientWidth;
|
|
376
|
-
__css(imgpic, get_style(-1));
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
setInitParams();
|
|
380
|
-
if (animate !== false) {
|
|
381
|
-
recover();
|
|
382
|
-
} else {
|
|
383
|
-
__css(imgpic, get_style(-1));
|
|
384
|
-
}
|
|
385
|
-
|
|
386
106
|
}
|
|
387
107
|
return image;
|
|
388
108
|
};
|
|
@@ -446,39 +166,14 @@ function picture(url, to = 0, key) {
|
|
|
446
166
|
p.rotateTo = function (deg) {
|
|
447
167
|
var img = p.current;
|
|
448
168
|
if (!img) return;
|
|
449
|
-
img.
|
|
450
|
-
img.update();
|
|
169
|
+
img.rotateTo(deg);
|
|
451
170
|
return deg;
|
|
452
171
|
};
|
|
453
172
|
p.rotateBy = function (deg) {
|
|
454
173
|
var img = p.current;
|
|
455
174
|
if (!img) return;
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
r += deg;
|
|
459
|
-
if (deg > 0) {
|
|
460
|
-
// 九进八舍
|
|
461
|
-
var a = r / 90;
|
|
462
|
-
if (Math.ceil(a) - a < .01) {
|
|
463
|
-
r = Math.ceil(a) * 90;
|
|
464
|
-
} else {
|
|
465
|
-
r = Math.floor(a) * 90;
|
|
466
|
-
}
|
|
467
|
-
} else {
|
|
468
|
-
// 一进零舍
|
|
469
|
-
var a = r / 90;
|
|
470
|
-
if (Math.ceil(a) - a > .01) {
|
|
471
|
-
r = Math.ceil(a) * 90;
|
|
472
|
-
} else {
|
|
473
|
-
r = Math.floor(a) * 90;
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
} else {
|
|
477
|
-
r += deg;
|
|
478
|
-
}
|
|
479
|
-
img.rotate = r;
|
|
480
|
-
img.update(deg === 90 || deg === -90);
|
|
481
|
-
return r;
|
|
175
|
+
img.rotateBy(deg);
|
|
176
|
+
return img.rotate;
|
|
482
177
|
};
|
|
483
178
|
return p;
|
|
484
179
|
}
|