From 943cdeded7b3820dcbe377a163e921ab93f33dbb Mon Sep 17 00:00:00 2001 From: Till Schneidereit Date: Mon, 15 Sep 2014 01:11:54 +0200 Subject: [PATCH 1/2] Bug 1067190 - Part1: Expose function for creating SVGMatrix instances in GFX land --- src/gfx/geometry.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gfx/geometry.ts b/src/gfx/geometry.ts index 9a8993b566..37655196bc 100644 --- a/src/gfx/geometry.ts +++ b/src/gfx/geometry.ts @@ -1054,6 +1054,10 @@ module Shumway.GFX.Geometry { return false; } + public static createIdentitySVGMatrix(): SVGMatrix { + return Matrix._svg.createSVGMatrix(); + } + public static createSVGMatrixFromArray(array: number []): SVGMatrix { var matrix: SVGMatrix = Matrix._svg.createSVGMatrix(); matrix.a = array[0]; From 2e7e25b338d5bcfef0fe75c78a5bd5924c9225b9 Mon Sep 17 00:00:00 2001 From: Till Schneidereit Date: Mon, 15 Sep 2014 01:13:47 +0200 Subject: [PATCH 2/2] Bug 1067190 - Part 2: Use identity matrix for gradients with singular transform matrix --- src/gfx/module.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gfx/module.ts b/src/gfx/module.ts index ee5446bcd8..e0df0e9469 100644 --- a/src/gfx/module.ts +++ b/src/gfx/module.ts @@ -481,7 +481,12 @@ module Shumway.GFX { var hasStyleTransformation = !!this.fillStyle._transform; if (supportsStyle && hasStyleTransformation && path instanceof Path2D) { var m = this.fillStyle._transform; - var i = m.inverse(); + var i; + try { + i = m.inverse(); + } catch (e) { + i = m = Geometry.Matrix.createIdentitySVGMatrix(); + } // Transform the context by the style transform ... this.transform(m.a, m.b, m.c, m.d, m.e, m.f); // transform the path by the inverse of the style transform ...