fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
2 lines • 2 kB
JavaScript
import{_defineProperty as e}from"../../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.min.mjs";import{CENTER as t}from"../constants.min.mjs";import{Color as n}from"../color/Color.min.mjs";import{Shadow as r}from"../Shadow.min.mjs";import{Group as i}from"../shapes/Group.min.mjs";import{getRandomInt as a}from"../util/internals/getRandomInt.min.mjs";import{BaseBrush as o}from"./BaseBrush.min.mjs";import{Circle as s}from"../shapes/Circle.min.mjs";var c=class extends o{constructor(t){super(t),e(this,`width`,10),this.points=[]}drawDot(e){let t=this.addPoint(e),n=this.canvas.contextTop;this._saveAndTransform(n),this.dot(n,t),n.restore()}dot(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()}onMouseDown(e){this.points=[],this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)}_render(){let e=this.canvas.contextTop,t=this.points;this._saveAndTransform(e);for(let n=0;n<t.length;n++)this.dot(e,t[n]);e.restore()}onMouseMove(e){!0===this.limitedToCanvasSize&&this._isOutSideCanvas(e)||(this.needsFullRender()?(this.canvas.clearContext(this.canvas.contextTop),this.addPoint(e),this._render()):this.drawDot(e))}onMouseUp(){let e=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;let n=[];for(let e=0;e<this.points.length;e++){let i=this.points[e],a=new s({radius:i.radius,left:i.x,top:i.y,originX:t,originY:t,fill:i.fill});this.shadow&&(a.shadow=new r(this.shadow)),n.push(a)}let a=new i(n,{canvas:this.canvas});this.canvas.fire(`before:path:created`,{path:a}),this.canvas.add(a),this.canvas.fire(`path:created`,{path:a}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.requestRenderAll()}addPoint({x:e,y:t}){let r={x:e,y:t,radius:a(Math.max(0,this.width-20),this.width+20)/2,fill:new n(this.color).setAlpha(a(0,100)/100).toRgba()};return this.points.push(r),r}};export{c as CircleBrush};
//# sourceMappingURL=CircleBrush.min.mjs.map