You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/10/07 10:35:33 UTC
[3/3] openmeetings git commit: [OPENMEETINGS-980] fabricjs is updated
[OPENMEETINGS-980] fabricjs is updated
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/126e7080
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/126e7080
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/126e7080
Branch: refs/heads/master
Commit: 126e70800a4d035bde1302947a802a2061379843
Parents: e4bfd17
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Oct 7 17:35:18 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Oct 7 17:35:18 2017 +0700
----------------------------------------------------------------------
.../apache/openmeetings/web/room/wb/fabric.js | 59 +++++++++++---------
.../openmeetings/web/room/wb/fabric.min.js | 2 +-
2 files changed, 35 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/126e7080/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
index b2744b5..d833782 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
@@ -2,7 +2,7 @@
/* build: `node build.js modules=ALL exclude=json,gestures minifier=uglifyjs` */
/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */
-var fabric = fabric || { version: "1.7.17" };
+var fabric = fabric || { version: "1.7.19" };
if (typeof exports !== 'undefined') {
exports.fabric = fabric;
}
@@ -31,7 +31,8 @@ else {
* True when in environment that supports touch events
* @type boolean
*/
-fabric.isTouchSupported = "ontouchstart" in fabric.document.documentElement;
+
+fabric.isTouchSupported = 'ontouchstart' in fabric.window;
/**
* True when in environment that's probably Node.js
@@ -8124,7 +8125,7 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype
* @private
*/
_render: function() {
- var ctx = this.canvas.contextTop,
+ var ctx = this.canvas.contextTop, i, len,
v = this.canvas.viewportTransform,
p1 = this._points[0],
p2 = this._points[1];
@@ -8138,12 +8139,15 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype
//then we should be drawing a dot. A path isn't drawn between two identical dots
//that's why we set them apart a bit
if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {
- p1.x -= 0.5;
- p2.x += 0.5;
+ var width = this.width / 1000;
+ p1 = new fabric.Point(p1.x, p1.y);
+ p2 = new fabric.Point(p2.x, p2.y);
+ p1.x -= width;
+ p2.x += width;
}
ctx.moveTo(p1.x, p1.y);
- for (var i = 1, len = this._points.length; i < len; i++) {
+ for (i = 1, len = this._points.length; i < len; i++) {
// we pick the point between pi + 1 & pi + 2 as the
// end point and p1 as our control point.
var midPoint = p1.midPointFrom(p2);
@@ -8166,23 +8170,26 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype
* @return {String} SVG path
*/
convertPointsToSVGPath: function(points) {
- var path = [],
+ var path = [], i, width = this.width / 1000,
p1 = new fabric.Point(points[0].x, points[0].y),
- p2 = new fabric.Point(points[1].x, points[1].y);
-
- path.push('M ', points[0].x, ' ', points[0].y, ' ');
- for (var i = 1, len = points.length; i < len; i++) {
- var midPoint = p1.midPointFrom(p2);
- // p1 is our bezier control point
- // midpoint is our endpoint
- // start point is p(i-1) value.
- path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' ');
- p1 = new fabric.Point(points[i].x, points[i].y);
+ p2 = new fabric.Point(points[1].x, points[1].y),
+ len = points.length;
+
+ path.push('M ', p1.x - width, ' ', p1.y, ' ');
+ for (i = 1; i < len; i++) {
+ if (!p1.eq(p2)) {
+ var midPoint = p1.midPointFrom(p2);
+ // p1 is our bezier control point
+ // midpoint is our endpoint
+ // start point is p(i-1) value.
+ path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' ');
+ }
+ p1 = points[i];
if ((i + 1) < points.length) {
- p2 = new fabric.Point(points[i + 1].x, points[i + 1].y);
+ p2 = points[i + 1];
}
}
- path.push('L ', p1.x, ' ', p1.y, ' ');
+ path.push('L ', p1.x + width, ' ', p1.y, ' ');
return path;
},
@@ -8199,10 +8206,11 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype
strokeLineCap: this.strokeLineCap,
strokeLineJoin: this.strokeLineJoin,
strokeDashArray: this.strokeDashArray,
- originX: 'center',
- originY: 'center'
});
-
+ var position = new fabric.Point(path.left + path.width / 2, path.top + path.height / 2);
+ position = path.translateToGivenOrigin(position, 'center', 'center', path.originX, path.originY);
+ path.top = position.y;
+ path.left = position.x;
if (this.shadow) {
this.shadow.affectStroke = true;
path.setShadow(this.shadow);
@@ -9505,12 +9513,13 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab
var dist = localMouse.y + localMouse.x,
lastDist = _dim.y * transform.original.scaleY / target.scaleY +
_dim.x * transform.original.scaleX / target.scaleX,
- scaled;
+ scaled, signX = localMouse.x / Math.abs(localMouse.x),
+ signY = localMouse.y / Math.abs(localMouse.y);
// We use transform.scaleX/Y instead of target.scaleX/Y
// because the object may have a min scale and we'll loose the proportions
- transform.newScaleX = transform.original.scaleX * dist / lastDist;
- transform.newScaleY = transform.original.scaleY * dist / lastDist;
+ transform.newScaleX = signX * Math.abs(transform.original.scaleX * dist / lastDist);
+ transform.newScaleY = signY * Math.abs(transform.original.scaleY * dist / lastDist);
scaled = transform.newScaleX !== target.scaleX || transform.newScaleY !== target.scaleY;
target.set('scaleX', transform.newScaleX);
target.set('scaleY', transform.newScaleY);