Fixing pattern canvas transform for chrome

This commit is contained in:
Yury Delendik 2013-04-30 12:01:01 -05:00
parent 8ac0690913
commit d7808b0db6
2 changed files with 11 additions and 1 deletions

View File

@ -57,6 +57,7 @@ function addContextCurrentTransform(ctx) {
ctx._originalScale = ctx.scale; ctx._originalScale = ctx.scale;
ctx._originalTranslate = ctx.translate; ctx._originalTranslate = ctx.translate;
ctx._originalTransform = ctx.transform; ctx._originalTransform = ctx.transform;
ctx._originalSetTransform = ctx.setTransform;
ctx._transformMatrix = [ctx._scaleX, 0, 0, ctx._scaleY, 0, 0]; ctx._transformMatrix = [ctx._scaleX, 0, 0, ctx._scaleY, 0, 0];
ctx._transformStack = []; ctx._transformStack = [];
@ -138,6 +139,12 @@ function addContextCurrentTransform(ctx) {
ctx._originalTransform(a, b, c, d, e, f); ctx._originalTransform(a, b, c, d, e, f);
}; };
ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
this._transformMatrix = [a, b, c, d, e, f];
ctx._originalSetTransform(a, b, c, d, e, f);
};
ctx.rotate = function ctxRotate(angle) { ctx.rotate = function ctxRotate(angle) {
var cosValue = Math.cos(angle); var cosValue = Math.cos(angle);
var sinValue = Math.sin(angle); var sinValue = Math.sin(angle);

View File

@ -351,6 +351,9 @@ var TilingPattern = (function TilingPatternClosure() {
// set the new canvas element context as the graphics context // set the new canvas element context as the graphics context
var tmpCtx = tmpCanvas.getContext('2d'); var tmpCtx = tmpCanvas.getContext('2d');
// for simulated mozCurrentTransform canvas (normaly setting width/height
// will reset the matrix)
tmpCtx.setTransform(1, 0, 0, 1, 0, 0);
var graphics = new CanvasGraphics(tmpCtx, commonObjs, objs); var graphics = new CanvasGraphics(tmpCtx, commonObjs, objs);
this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color); this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color);
@ -415,7 +418,7 @@ var TilingPattern = (function TilingPatternClosure() {
// The temporary canvas is created only because the memory is released // The temporary canvas is created only because the memory is released
// more quickly than creating multiple temporary canvases. // more quickly than creating multiple temporary canvases.
if (temporaryPatternCanvas === null) { if (temporaryPatternCanvas === null) {
temporaryPatternCanvas = createScratchCanvas(0, 0); temporaryPatternCanvas = createScratchCanvas(1, 1);
} }
this.createPatternCanvas(temporaryPatternCanvas); this.createPatternCanvas(temporaryPatternCanvas);