@jianghh/canvas-graffiti
Version:
canvas涂鸦库,支持手写、笔写、鼠标,选中元素,并且移动、删除等功能。集成撤销重做操作。
2 lines (1 loc) • 2.3 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../element/index.js"),h=require("../index2.js"),u=require("../assets/cursor.png.js"),c=require("../element/group.js"),f={buffer:!0,pointerdown({offsetX:i,offsetY:t}){var e;this.bufferCtx.moveTo(i,t),this.bufferCtx.fillStyle=h.SYSTEM_COLOR,this.bufferCtx.strokeStyle=h.SYSTEM_COLOR,(e=this.eleGroup)!=null&&e.isSelected?l.isRectIntersect(this.eleGroup,{left:i,top:t,right:i,bottom:t})?this.ctx.canvas.style.cursor="move":(this.ctx.canvas.style.cursor="url("+u.default+"), auto",this.eleGroup.cancelSelected()):this.beginPoint={x:i,y:t}},pointermove(i){var s,n,o;const{offsetX:t,offsetY:e}=i;(s=this.eleGroup)!=null&&s.isSelected?(this.eleGroup.moveGroup(t-this.beginPoint.x,e-this.beginPoint.y),(o=(n=this.customizeHandle)==null?void 0:n.onGroupMoveHandle)==null||o.call(this,i),this.beginPoint={x:t,y:e}):(this.bufferCtx.clearRect(0,0,this.el.width,this.el.height),this.bufferCtx.beginPath(),this.bufferCtx.moveTo(this.beginPoint.x,this.beginPoint.y),this.bufferCtx.rect(this.beginPoint.x,this.beginPoint.y,t-this.beginPoint.x,e-this.beginPoint.y),this.endPoint={x:t,y:e},this.bufferCtx.fill())},pointerup(){var i,t,e,s,n;if((i=this.eleGroup)!=null&&i.isSelected)this.ctx.canvas.style.cursor="url("+u.default+"), auto",(e=(t=this.customizeHandle)==null?void 0:t.onGroupHandle)==null||e.call(this,this.eleGroup),this.eleGroup.moveFinish(),this.emitStackChange();else{let o;this.endPoint?o=l.genRectByTwoPoint(this.beginPoint,this.endPoint):o={left:this.beginPoint.x-this.lineWidth,top:this.beginPoint.y-this.lineWidth,right:this.beginPoint.x+this.lineWidth,bottom:this.beginPoint.y+this.lineWidth},a.call(this,o),(n=(s=this.customizeHandle)==null?void 0:s.onGroupHandle)==null||n.call(this,this.eleGroup)}}};function a(i){const t=this.graffitiEleList.filter(e=>{if(l.isRectIntersect(e,i))switch(e.tool){case"Marker":return e.points.some((s,n)=>{const o=e.points[n+1]||null;let r;if(o?r=l.genRectByTwoPoint(s,o):r={left:s.x-this.lineWidth,top:s.y-this.lineWidth,right:s.x+this.lineWidth,bottom:s.y+this.lineWidth},l.isRectIntersect(r,i))return!0});default:return!0}else return!1});this.eleGroup&&this.eleGroup.cancelSelected(),t.length&&(this.eleGroup=new c.EleGroup(this,t).selected())}exports.Cursor=f;