fabric-rails 0.9.16 → 0.9.17
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/fabric/rails/version.rb +2 -2
- data/vendor/assets/javascripts/fabric.js +31 -9
- metadata +1 -1
data/lib/fabric/rails/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/* build: `node build.js modules=ALL` */
|
2
2
|
/*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */
|
3
3
|
|
4
|
-
var fabric = fabric || { version: "0.9.
|
4
|
+
var fabric = fabric || { version: "0.9.17" };
|
5
5
|
|
6
6
|
if (typeof exports != 'undefined') {
|
7
7
|
exports.fabric = fabric;
|
@@ -5422,6 +5422,14 @@ fabric.util.string = {
|
|
5422
5422
|
|
5423
5423
|
// delegate rendering to group selection (if one exists)
|
5424
5424
|
if (activeGroup) {
|
5425
|
+
//Store objects in group preserving order, then replace
|
5426
|
+
var sortedObjects = [];
|
5427
|
+
this.forEachObject(function (object) {
|
5428
|
+
if (activeGroup.contains(object)) {
|
5429
|
+
sortedObjects.push(object);
|
5430
|
+
}
|
5431
|
+
});
|
5432
|
+
activeGroup._set('objects', sortedObjects);
|
5425
5433
|
this._draw(this.contextTop, activeGroup);
|
5426
5434
|
}
|
5427
5435
|
|
@@ -6382,11 +6390,10 @@ fabric.util.string = {
|
|
6382
6390
|
this.onBeforeScaleRotate(target);
|
6383
6391
|
}
|
6384
6392
|
|
6385
|
-
this._setupCurrentTransform(e, target);
|
6386
|
-
|
6387
6393
|
var shouldHandleGroupLogic = e.shiftKey && (activeGroup || this.getActiveObject()) && this.selection;
|
6388
6394
|
if (shouldHandleGroupLogic) {
|
6389
6395
|
this._handleGroupLogic(e, target);
|
6396
|
+
target = this.getActiveGroup();
|
6390
6397
|
}
|
6391
6398
|
else {
|
6392
6399
|
if (target !== this.getActiveGroup()) {
|
@@ -6394,6 +6401,8 @@ fabric.util.string = {
|
|
6394
6401
|
}
|
6395
6402
|
this.setActiveObject(target, e);
|
6396
6403
|
}
|
6404
|
+
|
6405
|
+
this._setupCurrentTransform(e, target);
|
6397
6406
|
}
|
6398
6407
|
// we must renderAll so that active image is placed on the top canvas
|
6399
6408
|
this.renderAll();
|
@@ -6700,6 +6709,7 @@ fabric.util.string = {
|
|
6700
6709
|
if (activeGroup) {
|
6701
6710
|
if (activeGroup.contains(target)) {
|
6702
6711
|
activeGroup.removeWithUpdate(target);
|
6712
|
+
this._resetObjectTransform(activeGroup);
|
6703
6713
|
target.setActive(false);
|
6704
6714
|
if (activeGroup.size() === 1) {
|
6705
6715
|
// remove group alltogether if after removal it only contains 1 object
|
@@ -6708,6 +6718,7 @@ fabric.util.string = {
|
|
6708
6718
|
}
|
6709
6719
|
else {
|
6710
6720
|
activeGroup.addWithUpdate(target);
|
6721
|
+
this._resetObjectTransform(activeGroup);
|
6711
6722
|
}
|
6712
6723
|
this.fire('selection:created', { target: activeGroup, e: e });
|
6713
6724
|
activeGroup.setActive(true);
|
@@ -6887,6 +6898,16 @@ fabric.util.string = {
|
|
6887
6898
|
this.upperCanvasEl.style.cursor = value;
|
6888
6899
|
},
|
6889
6900
|
|
6901
|
+
/**
|
6902
|
+
* @private
|
6903
|
+
* @method _resetObjectTransform:
|
6904
|
+
*/
|
6905
|
+
_resetObjectTransform: function (target) {
|
6906
|
+
target.scaleX = 1;
|
6907
|
+
target.scaleY = 1;
|
6908
|
+
target.setAngle(0);
|
6909
|
+
},
|
6910
|
+
|
6890
6911
|
/**
|
6891
6912
|
* Sets the cursor depending on where the canvas is being hovered.
|
6892
6913
|
* Note: very buggy in Opera
|
@@ -11771,9 +11792,10 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, {
|
|
11771
11792
|
|
11772
11793
|
var groupScaleFactor = Math.max(this.scaleX, this.scaleY);
|
11773
11794
|
|
11774
|
-
|
11795
|
+
//The array is now sorted in order of highest first, so start from end.
|
11796
|
+
for (var i = this.objects.length; i > 0; i--) {
|
11775
11797
|
|
11776
|
-
var object = this.objects[i];
|
11798
|
+
var object = this.objects[i-1];
|
11777
11799
|
var originalScaleFactor = object.borderScaleFactor;
|
11778
11800
|
|
11779
11801
|
object.borderScaleFactor = groupScaleFactor;
|
@@ -13078,7 +13100,7 @@ fabric.Image.filters.Tint.fromObject = function(object) {
|
|
13078
13100
|
* @property
|
13079
13101
|
* @type Number
|
13080
13102
|
*/
|
13081
|
-
fontWeight:
|
13103
|
+
fontWeight: 400,
|
13082
13104
|
|
13083
13105
|
/**
|
13084
13106
|
* @property
|
@@ -13355,7 +13377,7 @@ fabric.Image.filters.Tint.fromObject = function(object) {
|
|
13355
13377
|
ctx.fillStyle = this.fill;
|
13356
13378
|
ctx.strokeStyle = this.strokeStyle;
|
13357
13379
|
ctx.lineWidth = this.strokeWidth;
|
13358
|
-
ctx.textBaseline = '
|
13380
|
+
ctx.textBaseline = 'alphabetic';
|
13359
13381
|
ctx.textAlign = this.textAlign;
|
13360
13382
|
ctx.font = this._getFontDeclaration();
|
13361
13383
|
},
|
@@ -13426,7 +13448,7 @@ fabric.Image.filters.Tint.fromObject = function(object) {
|
|
13426
13448
|
ctx.fillText(
|
13427
13449
|
textLines[i],
|
13428
13450
|
-this.width / 2,
|
13429
|
-
(-this.height / 2) + (i * this.fontSize * this.lineHeight)
|
13451
|
+
(-this.height / 2) + (i * this.fontSize * this.lineHeight) + this.fontSize
|
13430
13452
|
);
|
13431
13453
|
}
|
13432
13454
|
},
|
@@ -13441,7 +13463,7 @@ fabric.Image.filters.Tint.fromObject = function(object) {
|
|
13441
13463
|
ctx.strokeText(
|
13442
13464
|
textLines[i],
|
13443
13465
|
-this.width / 2,
|
13444
|
-
(-this.height / 2) + (i * this.fontSize * this.lineHeight)
|
13466
|
+
(-this.height / 2) + (i * this.fontSize * this.lineHeight) + this.fontSize
|
13445
13467
|
);
|
13446
13468
|
}
|
13447
13469
|
}
|