1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- var env = require("../../core/env");
- // Fix weird bug in some version of IE11 (like 11.0.9600.178**),
- // where exception "unexpected call to method or property access"
- // might be thrown when calling ctx.fill or ctx.stroke after a path
- // whose area size is zero is drawn and ctx.clip() is called and
- // shadowBlur is set. See #4572, #3112, #5777.
- // (e.g.,
- // ctx.moveTo(10, 10);
- // ctx.lineTo(20, 10);
- // ctx.closePath();
- // ctx.clip();
- // ctx.shadowBlur = 10;
- // ...
- // ctx.fill();
- // )
- var shadowTemp = [['shadowBlur', 0], ['shadowColor', '#000'], ['shadowOffsetX', 0], ['shadowOffsetY', 0]];
- function _default(orignalBrush) {
- // version string can be: '11.0'
- return env.browser.ie && env.browser.version >= 11 ? function () {
- var clipPaths = this.__clipPaths;
- var style = this.style;
- var modified;
- if (clipPaths) {
- for (var i = 0; i < clipPaths.length; i++) {
- var clipPath = clipPaths[i];
- var shape = clipPath && clipPath.shape;
- var type = clipPath && clipPath.type;
- if (shape && (type === 'sector' && shape.startAngle === shape.endAngle || type === 'rect' && (!shape.width || !shape.height))) {
- for (var j = 0; j < shadowTemp.length; j++) {
- // It is save to put shadowTemp static, because shadowTemp
- // will be all modified each item brush called.
- shadowTemp[j][2] = style[shadowTemp[j][0]];
- style[shadowTemp[j][0]] = shadowTemp[j][1];
- }
- modified = true;
- break;
- }
- }
- }
- orignalBrush.apply(this, arguments);
- if (modified) {
- for (var j = 0; j < shadowTemp.length; j++) {
- style[shadowTemp[j][0]] = shadowTemp[j][2];
- }
- }
- } : orignalBrush;
- }
- module.exports = _default;
|