UNPKG

@visactor/vrender-kits

Version:
60 lines (55 loc) 4 kB
import { CustomPath2D } from "@visactor/vrender-core"; import rough from "roughjs"; import { RoughContext2d } from "./context"; import { defaultRouthThemeSpec } from "./config"; export class RoughBaseRender { drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb) { if (this.canvasRenderer.drawShape) return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb); } doDraw(graphic, renderService, drawContext, params) { const {context: context} = drawContext; if (!context) return; const canvas = context.canvas.nativeCanvas, rc = rough.canvas(canvas), customPath = new CustomPath2D, roughContext = new RoughContext2d(context, customPath); context.save(), context.transformFromMatrix(graphic.transMatrix, !0); const {fill: fill, stroke: stroke, roughStyle: roughStyle = {}, lineWidth: lineWidth} = graphic.attribute, {maxRandomnessOffset: maxRandomnessOffset = defaultRouthThemeSpec.maxRandomnessOffset, roughness: roughness = defaultRouthThemeSpec.roughness, bowing: bowing = defaultRouthThemeSpec.bowing, curveFitting: curveFitting = defaultRouthThemeSpec.curveFitting, curveTightness: curveTightness = defaultRouthThemeSpec.curveTightness, curveStepCount: curveStepCount = defaultRouthThemeSpec.curveStepCount, fillStyle: fillStyle = defaultRouthThemeSpec.fillStyle, fillWeight: fillWeight = defaultRouthThemeSpec.fillWeight, hachureAngle: hachureAngle = defaultRouthThemeSpec.hachureAngle, hachureGap: hachureGap = defaultRouthThemeSpec.hachureGap, simplification: simplification = defaultRouthThemeSpec.simplification, dashOffset: dashOffset = defaultRouthThemeSpec.dashOffset, dashGap: dashGap = defaultRouthThemeSpec.dashGap, zigzagOffset: zigzagOffset = defaultRouthThemeSpec.zigzagOffset, seed: seed = defaultRouthThemeSpec.seed, fillLineDash: fillLineDash = defaultRouthThemeSpec.fillLineDash, fillLineDashOffset: fillLineDashOffset = defaultRouthThemeSpec.fillLineDashOffset, disableMultiStroke: disableMultiStroke = defaultRouthThemeSpec.disableMultiStroke, disableMultiStrokeFill: disableMultiStrokeFill = defaultRouthThemeSpec.disableMultiStrokeFill, preserveVertices: preserveVertices = defaultRouthThemeSpec.preserveVertices, fixedDecimalPlaceDigits: fixedDecimalPlaceDigits = defaultRouthThemeSpec.fixedDecimalPlaceDigits} = roughStyle; let rendered = !1; const doRender = () => { if (rendered) return; rendered = !0; const path = customPath.toString(); context.beginPath(), rc.path(path, { fill: fill, stroke: stroke, strokeWidth: lineWidth, maxRandomnessOffset: maxRandomnessOffset, roughness: roughness, bowing: bowing, curveFitting: curveFitting, curveTightness: curveTightness, curveStepCount: curveStepCount, fillStyle: fillStyle, fillWeight: fillWeight, hachureAngle: hachureAngle, hachureGap: hachureGap, simplification: simplification, dashOffset: dashOffset, dashGap: dashGap, zigzagOffset: zigzagOffset, seed: seed, fillLineDash: fillLineDash, fillLineDashOffset: fillLineDashOffset, disableMultiStroke: disableMultiStroke, disableMultiStrokeFill: disableMultiStrokeFill, preserveVertices: preserveVertices, fixedDecimalPlaceDigits: fixedDecimalPlaceDigits }); }; this.canvasRenderer.drawShape(graphic, roughContext, 0, 0, drawContext, params, (() => (doRender(), !1)), (() => (doRender(), !1))), context.restore(); } reInit() { var _a; null === (_a = this.canvasRenderer) || void 0 === _a || _a.reInit(); } } //# sourceMappingURL=base-render.js.map