@visactor/vrender-kits
Version:
## Description
60 lines (55 loc) • 4 kB
JavaScript
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