Merge pull request #2171 from asturur/fixTminGroup

Fix transform Matrix in group
This commit is contained in:
Juriy Zaytsev 2015-05-05 13:11:05 +02:00
commit 3bcde59ea3
2 changed files with 22 additions and 2 deletions

View file

@ -234,8 +234,11 @@
}
ctx.save();
this.clipTo && fabric.util.clipContext(this, ctx);
if (this.transformMatrix) {
ctx.transform.apply(ctx, this.transformMatrix);
}
this.transform(ctx);
this.clipTo && fabric.util.clipContext(this, ctx);
// the array is now sorted in order of highest first, so start from end
for (var i = 0, len = this._objects.length; i < len; i++) {
this._renderObject(this._objects[i], ctx);

View file

@ -1,6 +1,9 @@
(function() {
var canvas = this.canvas = new fabric.Canvas();
var el = fabric.document.createElement('canvas');
el.width = 600; el.height = 600;
var canvas = this.canvas = fabric.isLikelyNode ? fabric.createCanvasForNode() : new fabric.Canvas(el);
// function _createImageElement() {
// return fabric.isLikelyNode ? new (require('canvas').Image)() : fabric.document.createElement('img');
@ -497,6 +500,20 @@ test('toObject without default values', function() {
equal(rect2.canvas, canvas);
equal(rect1.canvas, canvas);
});
test('test group transformMatrix', function() {
var rect1 = new fabric.Rect({ top: 100, left: 100, width: 10, height: 10, strokeWidth: 0 }),
rect2 = new fabric.Rect({ top: 120, left: 120, width: 10, height: 10, strokeWidth: 0 }),
group = new fabric.Group([ rect1, rect2 ]),
ctx = canvas.contextContainer, isTransparent = fabric.util.isTransparent;
canvas.add(group);
equal(isTransparent(ctx, 80, 80, 0), true);
equal(isTransparent(ctx, 101, 101, 0), false);
group.transformMatrix = [1.2, 0, 0, 1.2, 1, 1];
canvas.renderAll();
equal(isTransparent(ctx, 101, 101, 0), true);
equal(isTransparent(ctx, 131, 131, 0), false);
});
// asyncTest('cloning group with image', function() {
// var rect = new fabric.Rect({ top: 100, left: 100, width: 30, height: 10 }),
// img = new fabric.Image(_createImageElement()),