| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | export default class WxCanvas {  constructor(ctx, canvasId, isNew, canvasNode) {    this.ctx = ctx;    this.canvasId = canvasId;    this.chart = null;    this.isNew = isNew    if (isNew) {      this.canvasNode = canvasNode;    }    else {      this._initStyle(ctx);    }    // this._initCanvas(zrender, ctx);    this._initEvent();  }  getContext(contextType) {    if (contextType === '2d') {      return this.ctx;    }  }  // canvasToTempFilePath(opt) {  //   if (!opt.canvasId) {  //     opt.canvasId = this.canvasId;  //   }  //   return wx.canvasToTempFilePath(opt, this);  // }  setChart(chart) {    this.chart = chart;  }  attachEvent() {    // noop  }  detachEvent() {    // noop  }  _initCanvas(zrender, ctx) {    zrender.util.getContext = function () {      return ctx;    };    zrender.util.$override('measureText', function (text, font) {      ctx.font = font || '12px sans-serif';      return ctx.measureText(text);    });  }  _initStyle(ctx) {    var styles = ['fillStyle', 'strokeStyle', 'globalAlpha',      'textAlign', 'textBaseAlign', 'shadow', 'lineWidth',      'lineCap', 'lineJoin', 'lineDash', 'miterLimit', 'fontSize'];    styles.forEach(style => {      Object.defineProperty(ctx, style, {        set: value => {          if (style !== 'fillStyle' && style !== 'strokeStyle'            || value !== 'none' && value !== null          ) {            ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value);          }        }      });    });    ctx.createRadialGradient = () => {      return ctx.createCircularGradient(arguments);    };  }  _initEvent() {    this.event = {};    const eventNames = [{      wxName: 'touchStart',      ecName: 'mousedown'    }, {      wxName: 'touchMove',      ecName: 'mousemove'    }, {      wxName: 'touchEnd',      ecName: 'mouseup'    }, {      wxName: 'touchEnd',      ecName: 'click'    }];    eventNames.forEach(name => {      this.event[name.wxName] = e => {        const touch = e.touches[0];        this.chart.getZr().handler.dispatch(name.ecName, {          zrX: name.wxName === 'tap' ? touch.clientX : touch.x,          zrY: name.wxName === 'tap' ? touch.clientY : touch.y        });      };    });  }  set width(w) {    if (this.canvasNode) this.canvasNode.width = w  }  set height(h) {    if (this.canvasNode) this.canvasNode.height = h  }  get width() {    if (this.canvasNode)      return this.canvasNode.width    return 0  }  get height() {    if (this.canvasNode)      return this.canvasNode.height    return 0  }}
 |