now we may use cache before adding to layer

This commit is contained in:
Лаврёнов Антон
2014-04-27 22:39:51 +08:00
parent 577b6c555c
commit 01964549eb
4 changed files with 54 additions and 7 deletions

View File

@@ -4,7 +4,7 @@
* http://www.kineticjs.com/
* Copyright 2013, Eric Rowell
* Licensed under the MIT or GPL Version 2 licenses.
* Date: 2014-04-26
* Date: 2014-04-27
*
* Copyright (C) 2011 - 2013 by Eric Rowell
*
@@ -7870,7 +7870,10 @@ var Kinetic = {};
bufferContext.clear();
bufferContext.save();
bufferContext._applyLineJoin(this);
layer._applyTransform(this, bufferContext, top);
// layer might be undefined if we are using cache before adding to layer
if (layer) {
layer._applyTransform(this, bufferContext, top);
}
drawFunc.call(this, bufferContext);
bufferContext.restore();
@@ -7888,7 +7891,10 @@ var Kinetic = {};
// if buffer canvas is not needed
else {
context._applyLineJoin(this);
layer._applyTransform(this, context, top);
// layer might be undefined if we are using cache before adding to layer
if (layer) {
layer._applyTransform(this, context, top);
}
if (hasShadow) {
context.save();

4
kinetic.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -152,7 +152,10 @@
bufferContext.clear();
bufferContext.save();
bufferContext._applyLineJoin(this);
layer._applyTransform(this, bufferContext, top);
// layer might be undefined if we are using cache before adding to layer
if (layer) {
layer._applyTransform(this, bufferContext, top);
}
drawFunc.call(this, bufferContext);
bufferContext.restore();
@@ -170,7 +173,10 @@
// if buffer canvas is not needed
else {
context._applyLineJoin(this);
layer._applyTransform(this, context, top);
// layer might be undefined if we are using cache before adding to layer
if (layer) {
layer._applyTransform(this, context, top);
}
if (hasShadow) {
context.save();

View File

@@ -2813,6 +2813,41 @@ suite('Node', function() {
//assert.equal(circle._cache.canvas.scene.getContext().getTrace(), 'save();translate(74,74);beginPath();arc(0,0,70,0,6.283,false);closePath();fillStyle=green;fill();lineWidth=4;strokeStyle=black;stroke();restore();');
});
test('cache shape before adding to layer', function(){
var stage = addStage();
var layer = new Kinetic.Layer();
var circle = new Kinetic.Circle({
x: 74,
y: 74,
radius: 70,
fill: 'green',
stroke: 'black',
strokeWidth: 4,
name: 'myCircle',
draggable: true
});
assert.equal(circle._cache.canvas, undefined);
circle.cache({
x: -74,
y: -74,
width: 148,
height: 148
}).offset({
x: 74,
y: 74
});
stage.add(layer);
assert(circle._cache.canvas.scene);
assert(circle._cache.canvas.hit);
layer.add(circle);
layer.draw();
assert.equal(layer.canvas.getContext().getTrace(), 'clearRect(0,0,578,200);clearRect(0,0,578,200);save();transform(1,0,0,1,0,0);drawImage([object HTMLCanvasElement],0,0);restore();');
});
test('cache shape inside transformed group', function(){
var stage = addStage();