fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
3 lines (2 loc) • 2.2 kB
JavaScript
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{SHARED_ATTRIBUTES as s}from"../parser/attributes.min.mjs";import{parseAttributes as e}from"../parser/parseAttributes.min.mjs";import{cos as r}from"../util/misc/cos.min.mjs";import{degreesToRadians as i}from"../util/misc/radiansDegreesConversion.min.mjs";import{sin as n}from"../util/misc/sin.min.mjs";import{classRegistry as o}from"../ClassRegistry.min.mjs";import{FabricObject as a}from"./Object/FabricObject.min.mjs";import{SCALE_X as u,SCALE_Y as m}from"../constants.min.mjs";import{cacheProperties as c}from"./Object/defaultValues.min.mjs";const l=["radius","startAngle","endAngle","counterClockwise"],h={radius:0,startAngle:0,endAngle:360,counterClockwise:!1};class d extends a{static getDefaults(){return{...super.getDefaults(),...d.ownDefaults}}constructor(t){super(),Object.assign(this,d.ownDefaults),this.setOptions(t)}_set(t,s){return super._set(t,s),"radius"===t&&this.setRadius(s),this}_render(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),this.counterClockwise),this._renderPaintInOrder(t)}getRadiusX(){return this.get("radius")*this.get(u)}getRadiusY(){return this.get("radius")*this.get(m)}setRadius(t){this.radius=t,this.set({width:2*t,height:2*t})}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return super.toObject([...l,...t])}_toSVG(){const t=(this.endAngle-this.startAngle)%360;if(0===t)return["<circle ","COMMON_PARTS",'cx="0" cy="0" ','r="',`${this.radius}`,'" />\n'];{const{radius:s}=this,e=i(this.startAngle),o=i(this.endAngle),a=r(e)*s,u=n(e)*s,m=r(o)*s,c=n(o)*s;return[`<path d="M ${a} ${u} A ${s} ${s} 0 ${t>180?1:0} ${this.counterClockwise?0:1} ${m} ${c}" `,"COMMON_PARTS"," />\n"]}}static async fromElement(t,s,r){const{left:i=0,top:n=0,radius:o=0,...a}=e(t,this.ATTRIBUTE_NAMES,r);return new this({...a,radius:o,left:i-o,top:n-o})}static fromObject(t){return super._fromObject(t)}}t(d,"type","Circle"),t(d,"cacheProperties",[...c,...l]),t(d,"ownDefaults",h),t(d,"ATTRIBUTE_NAMES",["cx","cy","r",...s]),o.setClass(d),o.setSVGClass(d);export{d as Circle,h as circleDefaultValues};
//# sourceMappingURL=Circle.min.mjs.map