fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.18 kB
Source Map (JSON)
{"version":3,"file":"renderCornerControl.mjs","sources":["../../extensions/cropping_controls/renderCornerControl.ts"],"sourcesContent":["import {\n type ControlRenderingStyleOverride,\n type InteractiveFabricObject,\n util,\n type Control,\n} from 'fabric';\n\nconst { degreesToRadians } = util;\n\n/**\n * Render a control for the main corners of a cropping image\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for FabricObject controls style\n * @param {FabricObject} fabricObject the fabric object for which we are rendering controls\n */\nexport function renderCornerControl(\n this: Control,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: InteractiveFabricObject,\n) {\n ctx.save();\n const { stroke, xSize, ySize, opName } = this.commonRenderProps(\n ctx,\n left,\n top,\n fabricObject,\n styleOverride,\n ),\n xSizeBy2 = xSize / 2,\n ySizeBy2 = ySize / 2;\n // angle is relative to canvas plane\n ctx.rotate(degreesToRadians(this.angle));\n ctx.beginPath();\n ctx.moveTo(-ySizeBy2, 0);\n ctx.lineTo(-ySizeBy2, xSizeBy2);\n ctx.lineTo(ySizeBy2, xSizeBy2);\n ctx.lineTo(ySizeBy2, ySizeBy2);\n ctx.lineTo(xSizeBy2, ySizeBy2);\n ctx.lineTo(xSizeBy2, -ySizeBy2);\n ctx.lineTo(-ySizeBy2, -ySizeBy2);\n ctx.closePath();\n ctx[opName]();\n stroke && ctx.stroke();\n ctx.restore();\n}\n"],"names":["degreesToRadians","util","renderCornerControl","ctx","left","top","styleOverride","fabricObject","save","stroke","xSize","ySize","opName","commonRenderProps","xSizeBy2","ySizeBy2","rotate","angle","beginPath","moveTo","lineTo","closePath","restore"],"mappings":";;AAOA,MAAM;AAAEA,EAAAA;AAAiB,CAAC,GAAGC,IAAI;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAEjCC,GAA6B,EAC7BC,IAAY,EACZC,GAAW,EACXC,aAA4C,EAC5CC,YAAqC,EACrC;EACAJ,GAAG,CAACK,IAAI,EAAE;EACV,MAAM;MAAEC,MAAM;MAAEC,KAAK;MAAEC,KAAK;AAAEC,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACC,iBAAiB,CAC3DV,GAAG,EACHC,IAAI,EACJC,GAAG,EACHE,YAAY,EACZD,aACF,CAAC;IACDQ,QAAQ,GAAGJ,KAAK,GAAG,CAAC;IACpBK,QAAQ,GAAGJ,KAAK,GAAG,CAAC;AACtB;EACAR,GAAG,CAACa,MAAM,CAAChB,gBAAgB,CAAC,IAAI,CAACiB,KAAK,CAAC,CAAC;EACxCd,GAAG,CAACe,SAAS,EAAE;AACff,EAAAA,GAAG,CAACgB,MAAM,CAAC,CAACJ,QAAQ,EAAE,CAAC,CAAC;AACxBZ,EAAAA,GAAG,CAACiB,MAAM,CAAC,CAACL,QAAQ,EAAED,QAAQ,CAAC;AAC/BX,EAAAA,GAAG,CAACiB,MAAM,CAACL,QAAQ,EAAED,QAAQ,CAAC;AAC9BX,EAAAA,GAAG,CAACiB,MAAM,CAACL,QAAQ,EAAEA,QAAQ,CAAC;AAC9BZ,EAAAA,GAAG,CAACiB,MAAM,CAACN,QAAQ,EAAEC,QAAQ,CAAC;AAC9BZ,EAAAA,GAAG,CAACiB,MAAM,CAACN,QAAQ,EAAE,CAACC,QAAQ,CAAC;EAC/BZ,GAAG,CAACiB,MAAM,CAAC,CAACL,QAAQ,EAAE,CAACA,QAAQ,CAAC;EAChCZ,GAAG,CAACkB,SAAS,EAAE;AACflB,EAAAA,GAAG,CAACS,MAAM,CAAC,EAAE;AACbH,EAAAA,MAAM,IAAIN,GAAG,CAACM,MAAM,EAAE;EACtBN,GAAG,CAACmB,OAAO,EAAE;AACf;;;;"}