107 lines
1.8 KiB
JavaScript
107 lines
1.8 KiB
JavaScript
export class UniCanvas {
|
|
|
|
constructor(ctx, canvasNode) {
|
|
this.ctx = ctx
|
|
this.chart = {}
|
|
this.canvasNode = canvasNode
|
|
if (!canvasNode) {
|
|
this._initStyle(ctx)
|
|
}
|
|
this._initEvent()
|
|
}
|
|
|
|
getContext(contextType) {
|
|
if (contextType === '2d') {
|
|
return this.ctx
|
|
}
|
|
}
|
|
|
|
setChart(chart) {
|
|
this.chart = chart
|
|
}
|
|
|
|
attachEvent() {
|
|
// noop
|
|
}
|
|
|
|
detachEvent() {
|
|
// noop
|
|
}
|
|
|
|
addEventListener() {
|
|
// noop
|
|
}
|
|
|
|
removeEventListener() {
|
|
// noop
|
|
}
|
|
|
|
_initCanvas(zrender, ctx) {
|
|
zrender.util.getContext = () => {
|
|
return ctx
|
|
}
|
|
zrender.util.$override('measureText', (text, font) => {
|
|
ctx.font = font || '12px sans-serif'
|
|
return ctx.measureText(text)
|
|
})
|
|
}
|
|
|
|
_initStyle(ctx) {
|
|
ctx.createCircularGradient = (x, y, r) => {
|
|
return ctx.createCircularGradient(x, y, r)
|
|
}
|
|
}
|
|
|
|
_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,
|
|
preventDefault: () => {},
|
|
stopImmediatePropagation: () => {},
|
|
stopPropagation: () => {},
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
get width() {
|
|
if (this.canvasNode) return this.canvasNode.width
|
|
return 0
|
|
}
|
|
|
|
set width(w) {
|
|
if (this.canvasNode) this.canvasNode.width = w
|
|
}
|
|
|
|
get height() {
|
|
if (this.canvasNode) return this.canvasNode.height
|
|
return 0
|
|
}
|
|
|
|
set height(h) {
|
|
if (this.canvasNode) this.canvasNode.height = h
|
|
}
|
|
}
|