@visactor/vrender-kits 0.9.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +9 -0
  2. package/cjs/canvas/contributions/canvas-module.d.ts +2 -0
  3. package/cjs/canvas/contributions/canvas-module.js +20 -0
  4. package/cjs/canvas/contributions/canvas-module.js.map +1 -0
  5. package/cjs/canvas/contributions/node/canvas.d.ts +44 -0
  6. package/cjs/canvas/contributions/node/canvas.js +100 -0
  7. package/cjs/canvas/contributions/node/canvas.js.map +1 -0
  8. package/cjs/canvas/contributions/node/context.d.ts +7 -0
  9. package/cjs/canvas/contributions/node/context.js +30 -0
  10. package/cjs/canvas/contributions/node/context.js.map +1 -0
  11. package/cjs/canvas/contributions/node/index.d.ts +2 -0
  12. package/cjs/canvas/contributions/node/index.js +21 -0
  13. package/cjs/canvas/contributions/node/index.js.map +1 -0
  14. package/cjs/canvas/contributions/node/modules.d.ts +3 -0
  15. package/cjs/canvas/contributions/node/modules.js +13 -0
  16. package/cjs/canvas/contributions/node/modules.js.map +1 -0
  17. package/cjs/canvas/index.d.ts +1 -0
  18. package/cjs/canvas/index.js +6 -0
  19. package/cjs/canvas/index.js.map +1 -0
  20. package/cjs/env/contributions/module.d.ts +3 -0
  21. package/cjs/env/contributions/module.js +12 -0
  22. package/cjs/env/contributions/module.js.map +1 -0
  23. package/cjs/env/contributions/node-contribution.d.ts +47 -0
  24. package/cjs/env/contributions/node-contribution.js +118 -0
  25. package/cjs/env/contributions/node-contribution.js.map +1 -0
  26. package/cjs/index-node.d.ts +5 -0
  27. package/cjs/index-node.js +25 -0
  28. package/cjs/index-node.js.map +1 -0
  29. package/cjs/index.d.ts +4 -0
  30. package/cjs/index.js +16 -0
  31. package/cjs/index.js.map +1 -0
  32. package/cjs/node-bind.d.ts +2 -0
  33. package/cjs/node-bind.js +20 -0
  34. package/cjs/node-bind.js.map +1 -0
  35. package/cjs/render/contributions/render-module.d.ts +1 -0
  36. package/cjs/render/contributions/render-module.js +1 -0
  37. package/cjs/render/contributions/render-module.js.map +1 -0
  38. package/cjs/render/contributions/rough/config.d.ts +2 -0
  39. package/cjs/render/contributions/rough/config.js +28 -0
  40. package/cjs/render/contributions/rough/config.js.map +1 -0
  41. package/cjs/render/contributions/rough/module.d.ts +3 -0
  42. package/cjs/render/contributions/rough/module.js +18 -0
  43. package/cjs/render/contributions/rough/module.js.map +1 -0
  44. package/cjs/render/contributions/rough/rough-arc.d.ts +10 -0
  45. package/cjs/render/contributions/rough/rough-arc.js +75 -0
  46. package/cjs/render/contributions/rough/rough-arc.js.map +1 -0
  47. package/cjs/render/contributions/rough/rough-area.d.ts +8 -0
  48. package/cjs/render/contributions/rough/rough-area.js +67 -0
  49. package/cjs/render/contributions/rough/rough-area.js.map +1 -0
  50. package/cjs/render/contributions/rough/rough-circle.d.ts +10 -0
  51. package/cjs/render/contributions/rough/rough-circle.js +55 -0
  52. package/cjs/render/contributions/rough/rough-circle.js.map +1 -0
  53. package/cjs/render/contributions/rough/rough-line.d.ts +8 -0
  54. package/cjs/render/contributions/rough/rough-line.js +68 -0
  55. package/cjs/render/contributions/rough/rough-line.js.map +1 -0
  56. package/cjs/render/contributions/rough/rough-path.d.ts +10 -0
  57. package/cjs/render/contributions/rough/rough-path.js +73 -0
  58. package/cjs/render/contributions/rough/rough-path.js.map +1 -0
  59. package/cjs/render/contributions/rough/rough-rect.d.ts +10 -0
  60. package/cjs/render/contributions/rough/rough-rect.js +77 -0
  61. package/cjs/render/contributions/rough/rough-rect.js.map +1 -0
  62. package/cjs/render/contributions/rough/rough-symbol.d.ts +10 -0
  63. package/cjs/render/contributions/rough/rough-symbol.js +79 -0
  64. package/cjs/render/contributions/rough/rough-symbol.js.map +1 -0
  65. package/cjs/window/contributions/modules.d.ts +3 -0
  66. package/cjs/window/contributions/modules.js +13 -0
  67. package/cjs/window/contributions/modules.js.map +1 -0
  68. package/cjs/window/contributions/node-contribution.d.ts +38 -0
  69. package/cjs/window/contributions/node-contribution.js +109 -0
  70. package/cjs/window/contributions/node-contribution.js.map +1 -0
  71. package/dist/vrender-kits.js.js +1 -0
  72. package/dist/vrender-kits.js.min.js +1 -0
  73. package/es/canvas/contributions/canvas-module.d.ts +2 -0
  74. package/es/canvas/contributions/canvas-module.js +6 -0
  75. package/es/canvas/contributions/canvas-module.js.map +1 -0
  76. package/es/canvas/contributions/node/canvas.d.ts +44 -0
  77. package/es/canvas/contributions/node/canvas.js +99 -0
  78. package/es/canvas/contributions/node/canvas.js.map +1 -0
  79. package/es/canvas/contributions/node/context.d.ts +7 -0
  80. package/es/canvas/contributions/node/context.js +31 -0
  81. package/es/canvas/contributions/node/context.js.map +1 -0
  82. package/es/canvas/contributions/node/index.d.ts +2 -0
  83. package/es/canvas/contributions/node/index.js +4 -0
  84. package/es/canvas/contributions/node/index.js.map +1 -0
  85. package/es/canvas/contributions/node/modules.d.ts +3 -0
  86. package/es/canvas/contributions/node/modules.js +13 -0
  87. package/es/canvas/contributions/node/modules.js.map +1 -0
  88. package/es/canvas/index.d.ts +1 -0
  89. package/es/canvas/index.js +2 -0
  90. package/es/canvas/index.js.map +1 -0
  91. package/es/env/contributions/module.d.ts +3 -0
  92. package/es/env/contributions/module.js +10 -0
  93. package/es/env/contributions/module.js.map +1 -0
  94. package/es/env/contributions/node-contribution.d.ts +47 -0
  95. package/es/env/contributions/node-contribution.js +94 -0
  96. package/es/env/contributions/node-contribution.js.map +1 -0
  97. package/es/index-node.d.ts +5 -0
  98. package/es/index-node.js +11 -0
  99. package/es/index-node.js.map +1 -0
  100. package/es/index.d.ts +4 -0
  101. package/es/index.js +10 -0
  102. package/es/index.js.map +1 -0
  103. package/es/node-bind.d.ts +2 -0
  104. package/es/node-bind.js +10 -0
  105. package/es/node-bind.js.map +1 -0
  106. package/es/render/contributions/render-module.d.ts +1 -0
  107. package/es/render/contributions/render-module.js +1 -0
  108. package/es/render/contributions/render-module.js.map +1 -0
  109. package/es/render/contributions/rough/config.d.ts +2 -0
  110. package/es/render/contributions/rough/config.js +24 -0
  111. package/es/render/contributions/rough/config.js.map +1 -0
  112. package/es/render/contributions/rough/module.d.ts +3 -0
  113. package/es/render/contributions/rough/module.js +28 -0
  114. package/es/render/contributions/rough/module.js.map +1 -0
  115. package/es/render/contributions/rough/rough-arc.d.ts +10 -0
  116. package/es/render/contributions/rough/rough-arc.js +71 -0
  117. package/es/render/contributions/rough/rough-arc.js.map +1 -0
  118. package/es/render/contributions/rough/rough-area.d.ts +8 -0
  119. package/es/render/contributions/rough/rough-area.js +64 -0
  120. package/es/render/contributions/rough/rough-area.js.map +1 -0
  121. package/es/render/contributions/rough/rough-circle.d.ts +10 -0
  122. package/es/render/contributions/rough/rough-circle.js +48 -0
  123. package/es/render/contributions/rough/rough-circle.js.map +1 -0
  124. package/es/render/contributions/rough/rough-line.d.ts +8 -0
  125. package/es/render/contributions/rough/rough-line.js +65 -0
  126. package/es/render/contributions/rough/rough-line.js.map +1 -0
  127. package/es/render/contributions/rough/rough-path.d.ts +10 -0
  128. package/es/render/contributions/rough/rough-path.js +69 -0
  129. package/es/render/contributions/rough/rough-path.js.map +1 -0
  130. package/es/render/contributions/rough/rough-rect.d.ts +10 -0
  131. package/es/render/contributions/rough/rough-rect.js +73 -0
  132. package/es/render/contributions/rough/rough-rect.js.map +1 -0
  133. package/es/render/contributions/rough/rough-symbol.d.ts +10 -0
  134. package/es/render/contributions/rough/rough-symbol.js +75 -0
  135. package/es/render/contributions/rough/rough-symbol.js.map +1 -0
  136. package/es/window/contributions/modules.d.ts +3 -0
  137. package/es/window/contributions/modules.js +10 -0
  138. package/es/window/contributions/modules.js.map +1 -0
  139. package/es/window/contributions/node-contribution.d.ts +38 -0
  140. package/es/window/contributions/node-contribution.js +107 -0
  141. package/es/window/contributions/node-contribution.js.map +1 -0
  142. package/package.json +50 -0
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.defaultRouthThemeSpec = void 0, exports.defaultRouthThemeSpec = {
6
+ maxRandomnessOffset: 3,
7
+ roughness: 1,
8
+ bowing: 1,
9
+ curveFitting: .95,
10
+ curveTightness: void 0,
11
+ curveStepCount: 9,
12
+ fillStyle: "hachure",
13
+ fillWeight: void 0,
14
+ hachureAngle: 60,
15
+ hachureGap: 6,
16
+ simplification: 0,
17
+ dashOffset: void 0,
18
+ dashGap: void 0,
19
+ zigzagOffset: void 0,
20
+ seed: 1,
21
+ fillLineDash: void 0,
22
+ fillLineDashOffset: void 0,
23
+ disableMultiStroke: !1,
24
+ disableMultiStrokeFill: !1,
25
+ preserveVertices: !0,
26
+ fixedDecimalPlaceDigits: void 0
27
+ };
28
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/config.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAY;IAC5C,mBAAmB,EAAE,CAAC;IAEtB,SAAS,EAAE,CAAC;IAEZ,MAAM,EAAE,CAAC;IAET,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,SAAS;IAEzB,cAAc,EAAE,CAAC;IAEjB,SAAS,EAAE,SAAS;IAEpB,UAAU,EAAE,SAAS;IAErB,YAAY,EAAE,EAAE;IAEhB,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IAEvB,IAAI,EAAE,CAAC;IACP,YAAY,EAAE,SAAS;IACvB,kBAAkB,EAAE,SAAS;IAE7B,kBAAkB,EAAE,KAAK;IACzB,sBAAsB,EAAE,KAAK;IAC7B,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,SAAS;CACnC,CAAC","file":"config.js","sourcesContent":["import type { Options } from 'roughjs/bin/core';\n\nexport const defaultRouthThemeSpec: Options = {\n maxRandomnessOffset: 3,\n // 粗糙度,值越大绘制的越乱\n roughness: 1,\n // 线段的弯曲度\n bowing: 1,\n // 曲线拟合程度\n curveFitting: 0.95,\n curveTightness: undefined,\n // 近似曲线的点数\n curveStepCount: 9,\n // 填充形式,默认斜线\n fillStyle: 'hachure',\n // 填充线的粗细、填充点的大小\n fillWeight: undefined,\n // 填充为hachure时的转角\n hachureAngle: 60,\n // 填充为hachure时线段间的间隙\n hachureGap: 6,\n // 是否简化线段\n simplification: 0,\n dashOffset: undefined,\n dashGap: undefined,\n zigzagOffset: undefined,\n // 生成随机形状的种子\n seed: 1,\n fillLineDash: undefined,\n fillLineDashOffset: undefined,\n // 禁止用多个笔画绘制\n disableMultiStroke: false,\n disableMultiStrokeFill: false,\n preserveVertices: true,\n fixedDecimalPlaceDigits: undefined\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import { ContainerModule } from 'inversify';
2
+ declare const _default: ContainerModule;
3
+ export default _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ });
6
+
7
+ const vrender_1 = require("@visactor/vrender"), inversify_1 = require("inversify"), rough_arc_1 = require("./rough-arc"), rough_area_1 = require("./rough-area"), rough_circle_1 = require("./rough-circle"), rough_line_1 = require("./rough-line"), rough_path_1 = require("./rough-path"), rough_rect_1 = require("./rough-rect"), rough_symbol_1 = require("./rough-symbol");
8
+
9
+ exports.default = new inversify_1.ContainerModule(((bind, unbind, isBound, rebind) => {
10
+ bind(rough_circle_1.RoughCanvasCircleRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_circle_1.RoughCanvasCircleRender),
11
+ bind(rough_rect_1.RoughCanvasRectRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_rect_1.RoughCanvasRectRender),
12
+ bind(rough_path_1.RoughCanvasPathRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_path_1.RoughCanvasPathRender),
13
+ bind(rough_symbol_1.RoughCanvasSymbolRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_symbol_1.RoughCanvasSymbolRender),
14
+ bind(rough_line_1.RoughCanvasLineRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_line_1.RoughCanvasLineRender),
15
+ bind(rough_area_1.RoughCanvasAreaRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_area_1.RoughCanvasAreaRender),
16
+ bind(rough_arc_1.RoughCanvasArcRender).toSelf().inSingletonScope(), bind(vrender_1.GraphicRender).to(rough_arc_1.RoughCanvasArcRender);
17
+ }));
18
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/module.ts"],"names":[],"mappings":";;AAAA,+CAAwF;AACxF,yCAA4C;AAC5C,2CAAmD;AACnD,6CAAqD;AACrD,iDAAyD;AACzD,6CAAqD;AACrD,6CAAqD;AACrD,6CAAqD;AACrD,iDAAyD;AAEzD,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAEnE,IAAI,CAAC,sCAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,sCAAuB,CAAC,CAAC;IAGhD,IAAI,CAAC,kCAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,kCAAqB,CAAC,CAAC;IAG9C,IAAI,CAAC,kCAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,kCAAqB,CAAC,CAAC;IAG9C,IAAI,CAAC,sCAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,sCAAuB,CAAC,CAAC;IAGhD,IAAI,CAAC,kCAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,kCAAqB,CAAC,CAAC;IAG9C,IAAI,CAAC,kCAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,kCAAqB,CAAC,CAAC;IAG9C,IAAI,CAAC,gCAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvD,IAAI,CAAC,uBAAa,CAAC,CAAC,EAAE,CAAC,gCAAoB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC","file":"module.js","sourcesContent":["import { CircleRender, PathRender, RectRender, GraphicRender } from '@visactor/vrender';\nimport { ContainerModule } from 'inversify';\nimport { RoughCanvasArcRender } from './rough-arc';\nimport { RoughCanvasAreaRender } from './rough-area';\nimport { RoughCanvasCircleRender } from './rough-circle';\nimport { RoughCanvasLineRender } from './rough-line';\nimport { RoughCanvasPathRender } from './rough-path';\nimport { RoughCanvasRectRender } from './rough-rect';\nimport { RoughCanvasSymbolRender } from './rough-symbol';\n\nexport default new ContainerModule((bind, unbind, isBound, rebind) => {\n // circle\n bind(RoughCanvasCircleRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasCircleRender);\n\n // rect\n bind(RoughCanvasRectRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasRectRender);\n\n // path\n bind(RoughCanvasPathRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasPathRender);\n\n // symbol\n bind(RoughCanvasSymbolRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasSymbolRender);\n\n // line\n bind(RoughCanvasLineRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasLineRender);\n\n // area\n bind(RoughCanvasAreaRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasAreaRender);\n\n // area\n bind(RoughCanvasArcRender).toSelf().inSingletonScope();\n bind(GraphicRender).to(RoughCanvasArcRender);\n});\n"]}
@@ -0,0 +1,10 @@
1
+ import type { IGraphicRender, IRenderService, IArc, IGraphicAttribute, IContext2d, IGraphic, IMarkAttribute, IThemeAttribute, IDrawContext, IGraphicRenderDrawParams } from '@visactor/vrender';
2
+ export declare class RoughCanvasArcRender implements IGraphicRender {
3
+ readonly canvasRenderer: IGraphicRender;
4
+ type: 'arc';
5
+ numberType: number;
6
+ style: 'rough';
7
+ constructor(canvasRenderer: IGraphicRender);
8
+ draw(arc: IArc, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
9
+ drawShape(graphic: IGraphic, ctx: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
10
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __metadata = this && this.__metadata || function(k, v) {
8
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
+ }, __param = this && this.__param || function(paramIndex, decorator) {
10
+ return function(target, key) {
11
+ decorator(target, key, paramIndex);
12
+ };
13
+ }, __importDefault = this && this.__importDefault || function(mod) {
14
+ return mod && mod.__esModule ? mod : {
15
+ default: mod
16
+ };
17
+ };
18
+
19
+ Object.defineProperty(exports, "__esModule", {
20
+ value: !0
21
+ }), exports.RoughCanvasArcRender = void 0;
22
+
23
+ const inversify_1 = require("inversify"), vrender_1 = require("@visactor/vrender"), roughjs_1 = __importDefault(require("roughjs")), config_1 = require("./config");
24
+
25
+ let RoughCanvasArcRender = class {
26
+ constructor(canvasRenderer) {
27
+ this.canvasRenderer = canvasRenderer, this.style = "rough", this.type = "arc", this.numberType = vrender_1.ARC_NUMBER_TYPE;
28
+ }
29
+ draw(arc, renderService, drawContext, params) {
30
+ const {context: context} = drawContext;
31
+ if (!context) return;
32
+ const canvas = context.canvas.nativeCanvas, rc = roughjs_1.default.canvas(canvas);
33
+ context.highPerformanceSave();
34
+ const arcAttribute = (0, vrender_1.getTheme)(arc).arc;
35
+ let {x: x = arcAttribute.x, y: y = arcAttribute.y} = arc.attribute;
36
+ if (arc.transMatrix.onlyTranslate()) {
37
+ const {dx: dx = arcAttribute.dx, dy: dy = arcAttribute.dy} = arc.attribute;
38
+ x += dx, y += dy, context.setTransformForCurrent();
39
+ } else x = 0, y = 0, context.transformFromMatrix(arc.transMatrix, !0);
40
+ const customPath = new vrender_1.CustomPath2D, {fill: fill = (null == arcAttribute.fill ? !!arc.attribute.fillColor : arcAttribute.fill), stroke: stroke = (null == arcAttribute.stroke ? !!arc.attribute.strokeColor : arcAttribute.stroke), fillColor: fillColor = arcAttribute.fillColor, strokeColor: strokeColor = arcAttribute.strokeColor, lineWidth: lineWidth = arcAttribute.lineWidth, outerRadius: outerRadius = arcAttribute.outerRadius, innerRadius: innerRadius = arcAttribute.innerRadius, maxRandomnessOffset: maxRandomnessOffset = config_1.defaultRouthThemeSpec.maxRandomnessOffset, roughness: roughness = config_1.defaultRouthThemeSpec.roughness, bowing: bowing = config_1.defaultRouthThemeSpec.bowing, curveFitting: curveFitting = config_1.defaultRouthThemeSpec.curveFitting, curveTightness: curveTightness = config_1.defaultRouthThemeSpec.curveTightness, curveStepCount: curveStepCount = config_1.defaultRouthThemeSpec.curveStepCount, fillStyle: fillStyle = config_1.defaultRouthThemeSpec.fillStyle, fillWeight: fillWeight = config_1.defaultRouthThemeSpec.fillWeight, hachureAngle: hachureAngle = config_1.defaultRouthThemeSpec.hachureAngle, hachureGap: hachureGap = config_1.defaultRouthThemeSpec.hachureGap, simplification: simplification = config_1.defaultRouthThemeSpec.simplification, dashOffset: dashOffset = config_1.defaultRouthThemeSpec.dashOffset, dashGap: dashGap = config_1.defaultRouthThemeSpec.dashGap, zigzagOffset: zigzagOffset = config_1.defaultRouthThemeSpec.zigzagOffset, seed: seed = config_1.defaultRouthThemeSpec.seed, fillLineDash: fillLineDash = config_1.defaultRouthThemeSpec.fillLineDash, fillLineDashOffset: fillLineDashOffset = config_1.defaultRouthThemeSpec.fillLineDashOffset, disableMultiStroke: disableMultiStroke = config_1.defaultRouthThemeSpec.disableMultiStroke, disableMultiStrokeFill: disableMultiStrokeFill = config_1.defaultRouthThemeSpec.disableMultiStrokeFill, preserveVertices: preserveVertices = config_1.defaultRouthThemeSpec.preserveVertices, fixedDecimalPlaceDigits: fixedDecimalPlaceDigits = config_1.defaultRouthThemeSpec.fixedDecimalPlaceDigits} = arc.attribute;
41
+ (0, vrender_1.drawArcPath)(arc, customPath, x, y, outerRadius, innerRadius), rc.path(customPath.toString(), {
42
+ fill: fill ? fillColor : void 0,
43
+ stroke: stroke ? strokeColor : void 0,
44
+ strokeWidth: lineWidth,
45
+ maxRandomnessOffset: maxRandomnessOffset,
46
+ roughness: roughness,
47
+ bowing: bowing,
48
+ curveFitting: curveFitting,
49
+ curveTightness: curveTightness,
50
+ curveStepCount: curveStepCount,
51
+ fillStyle: fillStyle,
52
+ fillWeight: fillWeight,
53
+ hachureAngle: hachureAngle,
54
+ hachureGap: hachureGap,
55
+ simplification: simplification,
56
+ dashOffset: dashOffset,
57
+ dashGap: dashGap,
58
+ zigzagOffset: zigzagOffset,
59
+ seed: seed,
60
+ fillLineDash: fillLineDash,
61
+ fillLineDashOffset: fillLineDashOffset,
62
+ disableMultiStroke: disableMultiStroke,
63
+ disableMultiStrokeFill: disableMultiStrokeFill,
64
+ preserveVertices: preserveVertices,
65
+ fixedDecimalPlaceDigits: fixedDecimalPlaceDigits
66
+ }), context.highPerformanceRestore();
67
+ }
68
+ drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb) {
69
+ if (this.canvasRenderer.drawShape) return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);
70
+ }
71
+ };
72
+
73
+ RoughCanvasArcRender = __decorate([ (0, inversify_1.injectable)(), __param(0, (0,
74
+ inversify_1.inject)(vrender_1.DefaultCanvasArcRender)), __metadata("design:paramtypes", [ Object ]) ], RoughCanvasArcRender),
75
+ exports.RoughCanvasArcRender = RoughCanvasArcRender;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-arc.ts"],"names":[],"mappings":"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","file":"rough-arc.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport type {\n IGraphicRender,\n IRenderService,\n IArc,\n IGraphicAttribute,\n IContext2d,\n IGraphic,\n IMarkAttribute,\n IThemeAttribute,\n IDrawContext,\n IGraphicRenderDrawParams\n} from '@visactor/vrender';\nimport { ARC_NUMBER_TYPE, DefaultCanvasArcRender, getTheme, CustomPath2D, drawArcPath } from '@visactor/vrender';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\n\n@injectable()\nexport class RoughCanvasArcRender implements IGraphicRender {\n type: 'arc';\n numberType: number;\n style: 'rough' = 'rough';\n\n constructor(\n @inject(DefaultCanvasArcRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n this.type = 'arc';\n this.numberType = ARC_NUMBER_TYPE;\n }\n\n draw(arc: IArc, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n // 获取到原生canvas\n const canvas = context.canvas.nativeCanvas;\n const rc = rough.canvas(canvas);\n\n context.highPerformanceSave();\n\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc).arc;\n let { x = arcAttribute.x, y = arcAttribute.y } = arc.attribute;\n if (!arc.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n context.transformFromMatrix(arc.transMatrix, true);\n } else {\n const { dx = arcAttribute.dx, dy = arcAttribute.dy } = arc.attribute;\n x += dx;\n y += dy;\n // 当前context有rotate/scale,重置matrix\n context.setTransformForCurrent();\n }\n\n const customPath = new CustomPath2D();\n\n const {\n fill = arcAttribute.fill == null ? !!arc.attribute.fillColor : arcAttribute.fill,\n stroke = arcAttribute.stroke == null ? !!arc.attribute.strokeColor : arcAttribute.stroke,\n fillColor = arcAttribute.fillColor,\n strokeColor = arcAttribute.strokeColor,\n lineWidth = arcAttribute.lineWidth,\n outerRadius = arcAttribute.outerRadius,\n innerRadius = arcAttribute.innerRadius,\n maxRandomnessOffset = defaultRouthThemeSpec.maxRandomnessOffset,\n roughness = defaultRouthThemeSpec.roughness,\n bowing = defaultRouthThemeSpec.bowing,\n curveFitting = defaultRouthThemeSpec.curveFitting,\n curveTightness = defaultRouthThemeSpec.curveTightness,\n curveStepCount = defaultRouthThemeSpec.curveStepCount,\n fillStyle = defaultRouthThemeSpec.fillStyle,\n fillWeight = defaultRouthThemeSpec.fillWeight,\n hachureAngle = defaultRouthThemeSpec.hachureAngle,\n hachureGap = defaultRouthThemeSpec.hachureGap,\n simplification = defaultRouthThemeSpec.simplification,\n dashOffset = defaultRouthThemeSpec.dashOffset,\n dashGap = defaultRouthThemeSpec.dashGap,\n zigzagOffset = defaultRouthThemeSpec.zigzagOffset,\n seed = defaultRouthThemeSpec.seed,\n fillLineDash = defaultRouthThemeSpec.fillLineDash,\n fillLineDashOffset = defaultRouthThemeSpec.fillLineDashOffset,\n disableMultiStroke = defaultRouthThemeSpec.disableMultiStroke,\n disableMultiStrokeFill = defaultRouthThemeSpec.disableMultiStrokeFill,\n preserveVertices = defaultRouthThemeSpec.preserveVertices,\n fixedDecimalPlaceDigits = defaultRouthThemeSpec.fixedDecimalPlaceDigits\n } = arc.attribute as any;\n\n drawArcPath(arc, customPath, x, y, outerRadius, innerRadius);\n\n rc.path(customPath.toString(), {\n fill: fill ? (fillColor as string) : undefined,\n stroke: stroke ? (strokeColor as string) : undefined,\n strokeWidth: lineWidth,\n maxRandomnessOffset,\n roughness,\n bowing,\n curveFitting,\n curveTightness,\n curveStepCount,\n fillStyle,\n fillWeight,\n hachureAngle,\n hachureGap,\n simplification,\n dashOffset,\n dashGap,\n zigzagOffset,\n seed,\n fillLineDash,\n fillLineDashOffset,\n disableMultiStroke,\n disableMultiStrokeFill,\n preserveVertices,\n fixedDecimalPlaceDigits\n });\n\n context.highPerformanceRestore();\n }\n\n drawShape(\n graphic: IGraphic,\n ctx: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ): void {\n if (this.canvasRenderer.drawShape) {\n return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);\n }\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { IGraphicRender, IAreaCacheItem, IContext2d, IMarkAttribute, IThemeAttribute, IGraphicAttribute, IArea, IAreaGraphicAttribute } from '@visactor/vrender';
2
+ import { DefaultCanvasAreaRender } from '@visactor/vrender';
3
+ export declare class RoughCanvasAreaRender extends DefaultCanvasAreaRender implements IGraphicRender {
4
+ type: 'area';
5
+ numberType: number;
6
+ style: 'rough';
7
+ protected drawSegmentItem(context: IContext2d, cache: IAreaCacheItem, fill: boolean, fillOpacity: number, attribute: Partial<IAreaGraphicAttribute>, defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[], clipRange: number, offsetX: number, offsetY: number, offsetZ: number, area: IArea, fillCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute | IThemeAttribute[]) => boolean): boolean;
8
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __importDefault = this && this.__importDefault || function(mod) {
8
+ return mod && mod.__esModule ? mod : {
9
+ default: mod
10
+ };
11
+ };
12
+
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: !0
15
+ }), exports.RoughCanvasAreaRender = void 0;
16
+
17
+ const inversify_1 = require("inversify"), vrender_1 = require("@visactor/vrender"), roughjs_1 = __importDefault(require("roughjs")), config_1 = require("./config");
18
+
19
+ let RoughCanvasAreaRender = class extends vrender_1.DefaultCanvasAreaRender {
20
+ constructor() {
21
+ super(...arguments), this.style = "rough";
22
+ }
23
+ drawSegmentItem(context, cache, fill, fillOpacity, attribute, defaultAttribute, clipRange, offsetX, offsetY, offsetZ, area, fillCb) {
24
+ if (fillCb) return super.drawSegmentItem(context, cache, fill, fillOpacity, attribute, defaultAttribute, clipRange, offsetX, offsetY, offsetZ, area, fillCb);
25
+ context.highPerformanceSave();
26
+ const canvas = context.canvas.nativeCanvas, rc = roughjs_1.default.canvas(canvas, {}), customPath = new vrender_1.CustomPath2D;
27
+ (0, vrender_1.drawAreaSegments)(customPath, cache, clipRange, {
28
+ offsetX: offsetX,
29
+ offsetY: offsetY
30
+ });
31
+ const {maxRandomnessOffset: maxRandomnessOffset = config_1.defaultRouthThemeSpec.maxRandomnessOffset, roughness: roughness = config_1.defaultRouthThemeSpec.roughness, bowing: bowing = config_1.defaultRouthThemeSpec.bowing, curveFitting: curveFitting = config_1.defaultRouthThemeSpec.curveFitting, curveTightness: curveTightness = config_1.defaultRouthThemeSpec.curveTightness, curveStepCount: curveStepCount = config_1.defaultRouthThemeSpec.curveStepCount, fillStyle: fillStyle = config_1.defaultRouthThemeSpec.fillStyle, fillWeight: fillWeight = config_1.defaultRouthThemeSpec.fillWeight, hachureAngle: hachureAngle = config_1.defaultRouthThemeSpec.hachureAngle, hachureGap: hachureGap = config_1.defaultRouthThemeSpec.hachureGap, simplification: simplification = config_1.defaultRouthThemeSpec.simplification, dashOffset: dashOffset = config_1.defaultRouthThemeSpec.dashOffset, dashGap: dashGap = config_1.defaultRouthThemeSpec.dashGap, zigzagOffset: zigzagOffset = config_1.defaultRouthThemeSpec.zigzagOffset, seed: seed = config_1.defaultRouthThemeSpec.seed, fillLineDash: fillLineDash = config_1.defaultRouthThemeSpec.fillLineDash, fillLineDashOffset: fillLineDashOffset = config_1.defaultRouthThemeSpec.fillLineDashOffset, disableMultiStroke: disableMultiStroke = config_1.defaultRouthThemeSpec.disableMultiStroke, disableMultiStrokeFill: disableMultiStrokeFill = config_1.defaultRouthThemeSpec.disableMultiStrokeFill, preserveVertices: preserveVertices = config_1.defaultRouthThemeSpec.preserveVertices, fixedDecimalPlaceDigits: fixedDecimalPlaceDigits = config_1.defaultRouthThemeSpec.fixedDecimalPlaceDigits} = attribute;
32
+ let {fillColor: fillColor, strokeColor: strokeColor, lineWidth: lineWidth} = attribute;
33
+ return Array.isArray(defaultAttribute) ? defaultAttribute.forEach((item => {
34
+ fillColor = null != fillColor ? fillColor : item.fillColor, strokeColor = null != strokeColor ? strokeColor : item.strokeColor,
35
+ lineWidth = null != lineWidth ? lineWidth : item.lineWidth;
36
+ })) : (fillColor = null != fillColor ? fillColor : defaultAttribute.fillColor, strokeColor = null != strokeColor ? strokeColor : defaultAttribute.strokeColor,
37
+ lineWidth = null != lineWidth ? lineWidth : defaultAttribute.lineWidth), rc.path(customPath.toString(), {
38
+ fill: fill ? fillColor : void 0,
39
+ strokeWidth: lineWidth,
40
+ maxRandomnessOffset: maxRandomnessOffset,
41
+ roughness: roughness,
42
+ bowing: bowing,
43
+ curveFitting: curveFitting,
44
+ curveTightness: curveTightness,
45
+ curveStepCount: curveStepCount,
46
+ fillStyle: fillStyle,
47
+ fillWeight: fillWeight,
48
+ hachureAngle: hachureAngle,
49
+ hachureGap: hachureGap,
50
+ simplification: simplification,
51
+ dashOffset: dashOffset,
52
+ dashGap: dashGap,
53
+ zigzagOffset: zigzagOffset,
54
+ seed: seed,
55
+ fillLineDash: fillLineDash,
56
+ fillLineDashOffset: fillLineDashOffset,
57
+ disableMultiStroke: disableMultiStroke,
58
+ disableMultiStrokeFill: disableMultiStrokeFill,
59
+ preserveVertices: preserveVertices,
60
+ fixedDecimalPlaceDigits: fixedDecimalPlaceDigits
61
+ }), context.highPerformanceRestore(), !1;
62
+ }
63
+ };
64
+
65
+ RoughCanvasAreaRender = __decorate([ (0, inversify_1.injectable)() ], RoughCanvasAreaRender),
66
+ exports.RoughCanvasAreaRender = RoughCanvasAreaRender;
67
+ //# sourceMappingURL=rough-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-area.ts"],"names":[],"mappings":"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","file":"rough-area.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport type {\n IGraphicRender,\n IAreaCacheItem,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicAttribute,\n IArea,\n IAreaGraphicAttribute\n} from '@visactor/vrender';\nimport { drawAreaSegments, DefaultCanvasAreaRender, CustomPath2D, drawSegments } from '@visactor/vrender';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\n\n@injectable()\nexport class RoughCanvasAreaRender extends DefaultCanvasAreaRender implements IGraphicRender {\n declare type: 'area';\n declare numberType: number;\n style: 'rough' = 'rough';\n\n /**\n * 绘制segment\n * @param context\n * @param cache\n * @param fill\n * @param stroke\n * @param attribute\n * @param defaultAttribute\n * @param clipRange\n * @param offsetX\n * @param offsetY\n * @param fillCb\n * @param strokeCb\n * @returns 返回true代表跳过后续绘制\n */\n protected drawSegmentItem(\n context: IContext2d,\n cache: IAreaCacheItem,\n fill: boolean,\n fillOpacity: number,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n clipRange: number,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n area: IArea,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ): boolean {\n if (fillCb) {\n return super.drawSegmentItem(\n context,\n cache,\n fill,\n fillOpacity,\n attribute,\n defaultAttribute,\n clipRange,\n offsetX,\n offsetY,\n offsetZ,\n area,\n fillCb\n );\n }\n context.highPerformanceSave();\n // 获取到原生canvas\n const canvas = context.canvas.nativeCanvas;\n const rc = rough.canvas(canvas, {});\n\n const customPath = new CustomPath2D();\n\n drawAreaSegments(customPath, cache, clipRange, {\n offsetX,\n offsetY\n });\n\n const {\n maxRandomnessOffset = defaultRouthThemeSpec.maxRandomnessOffset,\n roughness = defaultRouthThemeSpec.roughness,\n bowing = defaultRouthThemeSpec.bowing,\n curveFitting = defaultRouthThemeSpec.curveFitting,\n curveTightness = defaultRouthThemeSpec.curveTightness,\n curveStepCount = defaultRouthThemeSpec.curveStepCount,\n fillStyle = defaultRouthThemeSpec.fillStyle,\n fillWeight = defaultRouthThemeSpec.fillWeight,\n hachureAngle = defaultRouthThemeSpec.hachureAngle,\n hachureGap = defaultRouthThemeSpec.hachureGap,\n simplification = defaultRouthThemeSpec.simplification,\n dashOffset = defaultRouthThemeSpec.dashOffset,\n dashGap = defaultRouthThemeSpec.dashGap,\n zigzagOffset = defaultRouthThemeSpec.zigzagOffset,\n seed = defaultRouthThemeSpec.seed,\n fillLineDash = defaultRouthThemeSpec.fillLineDash,\n fillLineDashOffset = defaultRouthThemeSpec.fillLineDashOffset,\n disableMultiStroke = defaultRouthThemeSpec.disableMultiStroke,\n disableMultiStrokeFill = defaultRouthThemeSpec.disableMultiStrokeFill,\n preserveVertices = defaultRouthThemeSpec.preserveVertices,\n fixedDecimalPlaceDigits = defaultRouthThemeSpec.fixedDecimalPlaceDigits\n } = attribute as any;\n\n let { fillColor, strokeColor, lineWidth } = attribute;\n\n if (Array.isArray(defaultAttribute)) {\n defaultAttribute.forEach(item => {\n fillColor = fillColor ?? item.fillColor;\n strokeColor = strokeColor ?? item.strokeColor;\n lineWidth = lineWidth ?? item.lineWidth;\n });\n } else {\n fillColor = fillColor ?? defaultAttribute.fillColor;\n strokeColor = strokeColor ?? defaultAttribute.strokeColor;\n lineWidth = lineWidth ?? defaultAttribute.lineWidth;\n }\n\n rc.path(customPath.toString(), {\n fill: fill ? (fillColor as string) : undefined,\n strokeWidth: lineWidth,\n maxRandomnessOffset,\n roughness,\n bowing,\n curveFitting,\n curveTightness,\n curveStepCount,\n fillStyle,\n fillWeight,\n hachureAngle,\n hachureGap,\n simplification,\n dashOffset,\n dashGap,\n zigzagOffset,\n seed,\n fillLineDash,\n fillLineDashOffset,\n disableMultiStroke,\n disableMultiStrokeFill,\n preserveVertices,\n fixedDecimalPlaceDigits\n });\n\n context.highPerformanceRestore();\n\n return false;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { IGraphicRender, IRenderService, IGraphic, ICircle, IContext2d, IMarkAttribute, IThemeAttribute, IGraphicAttribute, IDrawContext, IGraphicRenderDrawParams } from '@visactor/vrender';
2
+ export declare class RoughCanvasCircleRender implements IGraphicRender {
3
+ readonly canvasRenderer: IGraphicRender;
4
+ type: 'circle';
5
+ numberType: number;
6
+ style: 'rough';
7
+ constructor(canvasRenderer: IGraphicRender);
8
+ draw(circle: ICircle, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
9
+ drawShape(graphic: IGraphic, ctx: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
10
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __metadata = this && this.__metadata || function(k, v) {
8
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
+ }, __param = this && this.__param || function(paramIndex, decorator) {
10
+ return function(target, key) {
11
+ decorator(target, key, paramIndex);
12
+ };
13
+ }, __importDefault = this && this.__importDefault || function(mod) {
14
+ return mod && mod.__esModule ? mod : {
15
+ default: mod
16
+ };
17
+ };
18
+
19
+ Object.defineProperty(exports, "__esModule", {
20
+ value: !0
21
+ }), exports.RoughCanvasCircleRender = void 0;
22
+
23
+ const inversify_1 = require("inversify"), vrender_1 = require("@visactor/vrender"), roughjs_1 = __importDefault(require("roughjs"));
24
+
25
+ let RoughCanvasCircleRender = class {
26
+ constructor(canvasRenderer) {
27
+ this.canvasRenderer = canvasRenderer, this.style = "rough", this.type = "circle",
28
+ this.numberType = vrender_1.CIRCLE_NUMBER_TYPE;
29
+ }
30
+ draw(circle, renderService, drawContext, params) {
31
+ const {context: context} = drawContext;
32
+ if (!context) return;
33
+ const canvas = context.canvas.nativeCanvas, rc = roughjs_1.default.canvas(canvas, {}), circleAttribute = (0,
34
+ vrender_1.getTheme)(circle).circle;
35
+ let {x: x = circleAttribute.x, y: y = circleAttribute.y} = circle.attribute;
36
+ circle.transMatrix.onlyTranslate() ? context.onlyTranslate() || context.clearMatrix() : (x = 0,
37
+ y = 0, context.transformFromMatrix(circle.transMatrix, !0));
38
+ const {fillColor: fillColor = circleAttribute.fillColor, strokeColor: strokeColor = circleAttribute.strokeColor, radius: radius = circleAttribute.radius, fill: fill = circleAttribute.fill, stroke: stroke = circleAttribute.stroke, lineWidth: lineWidth = circleAttribute.lineWidth} = circle.attribute;
39
+ rc.circle(x, y, radius, {
40
+ fill: fill ? fillColor : void 0,
41
+ stroke: stroke ? strokeColor : void 0,
42
+ strokeWidth: lineWidth,
43
+ fillStyle: "zigzag",
44
+ roughness: .5
45
+ });
46
+ }
47
+ drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb) {
48
+ if (this.canvasRenderer.drawShape) return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);
49
+ }
50
+ };
51
+
52
+ RoughCanvasCircleRender = __decorate([ (0, inversify_1.injectable)(), __param(0, (0,
53
+ inversify_1.inject)(vrender_1.DefaultCanvasCircleRender)), __metadata("design:paramtypes", [ Object ]) ], RoughCanvasCircleRender),
54
+ exports.RoughCanvasCircleRender = RoughCanvasCircleRender;
55
+ //# sourceMappingURL=rough-circle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-circle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAA+C;AAa/C,+CAA4F;AAC5F,sDAA4B;AAGrB,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAKlC,YAEkB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAJhD,UAAK,GAAY,OAAO,CAAC;QAMvB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,4BAAkB,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,MAAe,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QAC/G,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAGD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QAC3C,MAAM,EAAE,GAAG,iBAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAGpC,MAAM,eAAe,GAAG,IAAA,kBAAQ,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAChD,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE;YAEvC,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACvD;aAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;YAEnC,OAAO,CAAC,WAAW,EAAE,CAAC;SACvB;QAED,MAAM,EACJ,SAAS,GAAG,eAAe,CAAC,SAAS,EACrC,WAAW,GAAG,eAAe,CAAC,WAAW,EACzC,MAAM,GAAG,eAAe,CAAC,MAAM,EAC/B,IAAI,GAAG,eAAe,CAAC,IAAI,EAC3B,MAAM,GAAG,eAAe,CAAC,MAAM,EAC/B,SAAS,GAAG,eAAe,CAAC,SAAS,EACtC,GAAG,MAAM,CAAC,SAAS,CAAC;QACrB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAE,SAAoB,CAAC,CAAC,CAAC,SAAS;YAC9C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAE,WAAsB,CAAC,CAAC,CAAC,SAAS;YACpD,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;IACL,CAAC;IACD,SAAS,CACP,OAAiB,EACjB,GAAe,EACf,CAAS,EACT,CAAS,EACT,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;QAEZ,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YACjC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SACjG;IACH,CAAC;CACF,CAAA;AA1EY,uBAAuB;IADnC,IAAA,sBAAU,GAAE;IAOR,WAAA,IAAA,kBAAM,EAAC,mCAAyB,CAAC,CAAA;;GANzB,uBAAuB,CA0EnC;AA1EY,0DAAuB","file":"rough-circle.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport type {\n IGraphicRender,\n IRenderService,\n IGraphic,\n ICircle,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicAttribute,\n IDrawContext,\n IGraphicRenderDrawParams\n} from '@visactor/vrender';\nimport { CIRCLE_NUMBER_TYPE, DefaultCanvasCircleRender, getTheme } from '@visactor/vrender';\nimport rough from 'roughjs';\n\n@injectable()\nexport class RoughCanvasCircleRender implements IGraphicRender {\n declare type: 'circle';\n declare numberType: number;\n style: 'rough' = 'rough';\n\n constructor(\n @inject(DefaultCanvasCircleRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n this.type = 'circle';\n this.numberType = CIRCLE_NUMBER_TYPE;\n }\n\n draw(circle: ICircle, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n\n // 获取到原生canvas\n const canvas = context.canvas.nativeCanvas;\n const rc = rough.canvas(canvas, {});\n\n // const circleAttribute = graphicService.themeService.getCurrentTheme().circleAttribute;\n const circleAttribute = getTheme(circle).circle;\n let { x = circleAttribute.x, y = circleAttribute.y } = circle.attribute;\n if (!circle.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n context.transformFromMatrix(circle.transMatrix, true);\n } else if (!context.onlyTranslate()) {\n // 当前context有rotate/scale,重置matrix\n context.clearMatrix();\n }\n\n const {\n fillColor = circleAttribute.fillColor,\n strokeColor = circleAttribute.strokeColor,\n radius = circleAttribute.radius,\n fill = circleAttribute.fill,\n stroke = circleAttribute.stroke,\n lineWidth = circleAttribute.lineWidth\n } = circle.attribute;\n rc.circle(x, y, radius, {\n fill: fill ? (fillColor as string) : undefined,\n stroke: stroke ? (strokeColor as string) : undefined,\n strokeWidth: lineWidth,\n fillStyle: 'zigzag',\n roughness: 0.5\n });\n }\n drawShape(\n graphic: IGraphic,\n ctx: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ): void {\n if (this.canvasRenderer.drawShape) {\n return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);\n }\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { IGraphicRender, IContext2d, IMarkAttribute, IThemeAttribute, IGraphicAttribute, ISegPath2D, ILine, ILineGraphicAttribute, IClipRangeByDimensionType } from '@visactor/vrender';
2
+ import { DefaultCanvasLineRender } from '@visactor/vrender';
3
+ export declare class RoughCanvasLineRender extends DefaultCanvasLineRender implements IGraphicRender {
4
+ type: 'line';
5
+ numberType: number;
6
+ style: 'rough';
7
+ protected drawSegmentItem(context: IContext2d, cache: ISegPath2D, fill: boolean, stroke: boolean, fillOpacity: number, strokeOpacity: number, attribute: Partial<ILineGraphicAttribute>, defaultAttribute: Required<ILineGraphicAttribute> | Partial<ILineGraphicAttribute>[], clipRange: number, clipRangeByDimension: IClipRangeByDimensionType, offsetX: number, offsetY: number, line: ILine, fillCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute | IThemeAttribute[]) => boolean, strokeCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute | IThemeAttribute[]) => boolean): boolean;
8
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __importDefault = this && this.__importDefault || function(mod) {
8
+ return mod && mod.__esModule ? mod : {
9
+ default: mod
10
+ };
11
+ };
12
+
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: !0
15
+ }), exports.RoughCanvasLineRender = void 0;
16
+
17
+ const inversify_1 = require("inversify"), vrender_1 = require("@visactor/vrender"), roughjs_1 = __importDefault(require("roughjs")), config_1 = require("./config");
18
+
19
+ let RoughCanvasLineRender = class extends vrender_1.DefaultCanvasLineRender {
20
+ constructor() {
21
+ super(...arguments), this.style = "rough";
22
+ }
23
+ drawSegmentItem(context, cache, fill, stroke, fillOpacity, strokeOpacity, attribute, defaultAttribute, clipRange, clipRangeByDimension, offsetX, offsetY, line, fillCb, strokeCb) {
24
+ if (fillCb || strokeCb) return super.drawSegmentItem(context, cache, fill, stroke, fillOpacity, strokeOpacity, attribute, defaultAttribute, clipRange, clipRangeByDimension, offsetX, offsetY, line, fillCb, strokeCb);
25
+ context.highPerformanceSave();
26
+ const canvas = context.canvas.nativeCanvas, rc = roughjs_1.default.canvas(canvas, {}), customPath = new vrender_1.CustomPath2D;
27
+ (0, vrender_1.drawSegments)(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {
28
+ offsetX: offsetX,
29
+ offsetY: offsetY
30
+ });
31
+ const {maxRandomnessOffset: maxRandomnessOffset = config_1.defaultRouthThemeSpec.maxRandomnessOffset, roughness: roughness = config_1.defaultRouthThemeSpec.roughness, bowing: bowing = config_1.defaultRouthThemeSpec.bowing, curveFitting: curveFitting = config_1.defaultRouthThemeSpec.curveFitting, curveTightness: curveTightness = config_1.defaultRouthThemeSpec.curveTightness, curveStepCount: curveStepCount = config_1.defaultRouthThemeSpec.curveStepCount, fillStyle: fillStyle = config_1.defaultRouthThemeSpec.fillStyle, fillWeight: fillWeight = config_1.defaultRouthThemeSpec.fillWeight, hachureAngle: hachureAngle = config_1.defaultRouthThemeSpec.hachureAngle, hachureGap: hachureGap = config_1.defaultRouthThemeSpec.hachureGap, simplification: simplification = config_1.defaultRouthThemeSpec.simplification, dashOffset: dashOffset = config_1.defaultRouthThemeSpec.dashOffset, dashGap: dashGap = config_1.defaultRouthThemeSpec.dashGap, zigzagOffset: zigzagOffset = config_1.defaultRouthThemeSpec.zigzagOffset, seed: seed = config_1.defaultRouthThemeSpec.seed, fillLineDash: fillLineDash = config_1.defaultRouthThemeSpec.fillLineDash, fillLineDashOffset: fillLineDashOffset = config_1.defaultRouthThemeSpec.fillLineDashOffset, disableMultiStroke: disableMultiStroke = config_1.defaultRouthThemeSpec.disableMultiStroke, disableMultiStrokeFill: disableMultiStrokeFill = config_1.defaultRouthThemeSpec.disableMultiStrokeFill, preserveVertices: preserveVertices = config_1.defaultRouthThemeSpec.preserveVertices, fixedDecimalPlaceDigits: fixedDecimalPlaceDigits = config_1.defaultRouthThemeSpec.fixedDecimalPlaceDigits} = attribute;
32
+ let {fillColor: fillColor, strokeColor: strokeColor, lineWidth: lineWidth} = attribute;
33
+ return Array.isArray(defaultAttribute) ? defaultAttribute.forEach((item => {
34
+ fillColor = null != fillColor ? fillColor : item.fillColor, strokeColor = null != strokeColor ? strokeColor : item.strokeColor,
35
+ lineWidth = null != lineWidth ? lineWidth : item.lineWidth;
36
+ })) : (fillColor = null != fillColor ? fillColor : defaultAttribute.fillColor, strokeColor = null != strokeColor ? strokeColor : defaultAttribute.strokeColor,
37
+ lineWidth = null != lineWidth ? lineWidth : defaultAttribute.lineWidth), rc.path(customPath.toString(), {
38
+ fill: fill ? fillColor : void 0,
39
+ stroke: stroke ? strokeColor : void 0,
40
+ strokeWidth: lineWidth,
41
+ maxRandomnessOffset: maxRandomnessOffset,
42
+ roughness: roughness,
43
+ bowing: bowing,
44
+ curveFitting: curveFitting,
45
+ curveTightness: curveTightness,
46
+ curveStepCount: curveStepCount,
47
+ fillStyle: fillStyle,
48
+ fillWeight: fillWeight,
49
+ hachureAngle: hachureAngle,
50
+ hachureGap: hachureGap,
51
+ simplification: simplification,
52
+ dashOffset: dashOffset,
53
+ dashGap: dashGap,
54
+ zigzagOffset: zigzagOffset,
55
+ seed: seed,
56
+ fillLineDash: fillLineDash,
57
+ fillLineDashOffset: fillLineDashOffset,
58
+ disableMultiStroke: disableMultiStroke,
59
+ disableMultiStrokeFill: disableMultiStrokeFill,
60
+ preserveVertices: preserveVertices,
61
+ fixedDecimalPlaceDigits: fixedDecimalPlaceDigits
62
+ }), context.highPerformanceRestore(), !1;
63
+ }
64
+ };
65
+
66
+ RoughCanvasLineRender = __decorate([ (0, inversify_1.injectable)() ], RoughCanvasLineRender),
67
+ exports.RoughCanvasLineRender = RoughCanvasLineRender;
68
+ //# sourceMappingURL=rough-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-line.ts"],"names":[],"mappings":"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","file":"rough-line.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport type {\n IGraphicRender,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicAttribute,\n ISegPath2D,\n ILine,\n ILineGraphicAttribute,\n IClipRangeByDimensionType\n} from '@visactor/vrender';\nimport { IRenderService, IGraphic, DefaultCanvasLineRender, getTheme, CustomPath2D, drawSegments } from '@visactor/vrender';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\n\n@injectable()\nexport class RoughCanvasLineRender extends DefaultCanvasLineRender implements IGraphicRender {\n declare type: 'line';\n declare numberType: number;\n style: 'rough' = 'rough';\n\n /**\n * 绘制segment\n * @param context\n * @param cache\n * @param fill\n * @param stroke\n * @param attribute\n * @param defaultAttribute\n * @param clipRange\n * @param offsetX\n * @param offsetY\n * @param fillCb\n * @param strokeCb\n * @returns 返回true代表跳过后续绘制\n */\n protected drawSegmentItem(\n context: IContext2d,\n cache: ISegPath2D,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n attribute: Partial<ILineGraphicAttribute>,\n defaultAttribute: Required<ILineGraphicAttribute> | Partial<ILineGraphicAttribute>[],\n clipRange: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n offsetX: number,\n offsetY: number,\n line: ILine,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ): boolean {\n if (fillCb || strokeCb) {\n return super.drawSegmentItem(\n context,\n cache,\n fill,\n stroke,\n fillOpacity,\n strokeOpacity,\n attribute,\n defaultAttribute,\n clipRange,\n clipRangeByDimension,\n offsetX,\n offsetY,\n line,\n fillCb,\n strokeCb\n );\n }\n context.highPerformanceSave();\n // 获取到原生canvas\n const canvas = context.canvas.nativeCanvas;\n const rc = rough.canvas(canvas, {});\n\n const customPath = new CustomPath2D();\n\n drawSegments(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {\n offsetX,\n offsetY\n });\n const {\n maxRandomnessOffset = defaultRouthThemeSpec.maxRandomnessOffset,\n roughness = defaultRouthThemeSpec.roughness,\n bowing = defaultRouthThemeSpec.bowing,\n curveFitting = defaultRouthThemeSpec.curveFitting,\n curveTightness = defaultRouthThemeSpec.curveTightness,\n curveStepCount = defaultRouthThemeSpec.curveStepCount,\n fillStyle = defaultRouthThemeSpec.fillStyle,\n fillWeight = defaultRouthThemeSpec.fillWeight,\n hachureAngle = defaultRouthThemeSpec.hachureAngle,\n hachureGap = defaultRouthThemeSpec.hachureGap,\n simplification = defaultRouthThemeSpec.simplification,\n dashOffset = defaultRouthThemeSpec.dashOffset,\n dashGap = defaultRouthThemeSpec.dashGap,\n zigzagOffset = defaultRouthThemeSpec.zigzagOffset,\n seed = defaultRouthThemeSpec.seed,\n fillLineDash = defaultRouthThemeSpec.fillLineDash,\n fillLineDashOffset = defaultRouthThemeSpec.fillLineDashOffset,\n disableMultiStroke = defaultRouthThemeSpec.disableMultiStroke,\n disableMultiStrokeFill = defaultRouthThemeSpec.disableMultiStrokeFill,\n preserveVertices = defaultRouthThemeSpec.preserveVertices,\n fixedDecimalPlaceDigits = defaultRouthThemeSpec.fixedDecimalPlaceDigits\n } = attribute as any;\n\n let { fillColor, strokeColor, lineWidth } = attribute;\n\n if (Array.isArray(defaultAttribute)) {\n defaultAttribute.forEach(item => {\n fillColor = fillColor ?? item.fillColor;\n strokeColor = strokeColor ?? item.strokeColor;\n lineWidth = lineWidth ?? item.lineWidth;\n });\n } else {\n fillColor = fillColor ?? defaultAttribute.fillColor;\n strokeColor = strokeColor ?? defaultAttribute.strokeColor;\n lineWidth = lineWidth ?? defaultAttribute.lineWidth;\n }\n\n rc.path(customPath.toString(), {\n fill: fill ? (fillColor as string) : undefined,\n stroke: stroke ? (strokeColor as string) : undefined,\n strokeWidth: lineWidth,\n maxRandomnessOffset,\n roughness,\n bowing,\n curveFitting,\n curveTightness,\n curveStepCount,\n fillStyle,\n fillWeight,\n hachureAngle,\n hachureGap,\n simplification,\n dashOffset,\n dashGap,\n zigzagOffset,\n seed,\n fillLineDash,\n fillLineDashOffset,\n disableMultiStroke,\n disableMultiStrokeFill,\n preserveVertices,\n fixedDecimalPlaceDigits\n });\n\n context.highPerformanceRestore();\n\n return false;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { IGraphicRender, IRenderService, IGraphic, IContext2d, IMarkAttribute, IThemeAttribute, IGraphicAttribute, IPath, IDrawContext, IGraphicRenderDrawParams } from '@visactor/vrender';
2
+ export declare class RoughCanvasPathRender implements IGraphicRender {
3
+ readonly canvasRenderer: IGraphicRender;
4
+ type: 'path';
5
+ numberType: number;
6
+ style: 'rough';
7
+ constructor(canvasRenderer: IGraphicRender);
8
+ draw(path: IPath, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
9
+ drawShape(graphic: IGraphic, ctx: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
10
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __metadata = this && this.__metadata || function(k, v) {
8
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
+ }, __param = this && this.__param || function(paramIndex, decorator) {
10
+ return function(target, key) {
11
+ decorator(target, key, paramIndex);
12
+ };
13
+ }, __importDefault = this && this.__importDefault || function(mod) {
14
+ return mod && mod.__esModule ? mod : {
15
+ default: mod
16
+ };
17
+ };
18
+
19
+ Object.defineProperty(exports, "__esModule", {
20
+ value: !0
21
+ }), exports.RoughCanvasPathRender = void 0;
22
+
23
+ const inversify_1 = require("inversify"), vrender_1 = require("@visactor/vrender"), roughjs_1 = __importDefault(require("roughjs")), config_1 = require("./config");
24
+
25
+ let RoughCanvasPathRender = class {
26
+ constructor(canvasRenderer) {
27
+ this.canvasRenderer = canvasRenderer, this.style = "rough", this.type = "path",
28
+ this.numberType = vrender_1.PATH_NUMBER_TYPE;
29
+ }
30
+ draw(path, renderService, drawContext, params) {
31
+ const {context: context} = drawContext;
32
+ if (!context) return;
33
+ const canvas = context.canvas.nativeCanvas, rc = roughjs_1.default.canvas(canvas, {});
34
+ context.highPerformanceSave();
35
+ const pathAttribute = (0, vrender_1.getTheme)(path).path;
36
+ context.transformFromMatrix(path.transMatrix, !0);
37
+ const {fill: fill = (null == pathAttribute.fill ? !!path.attribute.fillColor : pathAttribute.fill), stroke: stroke = (null == pathAttribute.stroke ? !!path.attribute.strokeColor : pathAttribute.stroke), fillColor: fillColor = pathAttribute.fillColor, strokeColor: strokeColor = pathAttribute.strokeColor, lineWidth: lineWidth = pathAttribute.lineWidth, path: p = pathAttribute.path, maxRandomnessOffset: maxRandomnessOffset = config_1.defaultRouthThemeSpec.maxRandomnessOffset, roughness: roughness = config_1.defaultRouthThemeSpec.roughness, bowing: bowing = config_1.defaultRouthThemeSpec.bowing, curveFitting: curveFitting = config_1.defaultRouthThemeSpec.curveFitting, curveTightness: curveTightness = config_1.defaultRouthThemeSpec.curveTightness, curveStepCount: curveStepCount = config_1.defaultRouthThemeSpec.curveStepCount, fillStyle: fillStyle = config_1.defaultRouthThemeSpec.fillStyle, fillWeight: fillWeight = config_1.defaultRouthThemeSpec.fillWeight, hachureAngle: hachureAngle = config_1.defaultRouthThemeSpec.hachureAngle, hachureGap: hachureGap = config_1.defaultRouthThemeSpec.hachureGap, simplification: simplification = config_1.defaultRouthThemeSpec.simplification, dashOffset: dashOffset = config_1.defaultRouthThemeSpec.dashOffset, dashGap: dashGap = config_1.defaultRouthThemeSpec.dashGap, zigzagOffset: zigzagOffset = config_1.defaultRouthThemeSpec.zigzagOffset, seed: seed = config_1.defaultRouthThemeSpec.seed, fillLineDash: fillLineDash = config_1.defaultRouthThemeSpec.fillLineDash, fillLineDashOffset: fillLineDashOffset = config_1.defaultRouthThemeSpec.fillLineDashOffset, disableMultiStroke: disableMultiStroke = config_1.defaultRouthThemeSpec.disableMultiStroke, disableMultiStrokeFill: disableMultiStrokeFill = config_1.defaultRouthThemeSpec.disableMultiStrokeFill, preserveVertices: preserveVertices = config_1.defaultRouthThemeSpec.preserveVertices, fixedDecimalPlaceDigits: fixedDecimalPlaceDigits = config_1.defaultRouthThemeSpec.fixedDecimalPlaceDigits} = path.attribute;
38
+ "string" == typeof p && rc.path(p, {
39
+ fill: fill ? fillColor : void 0,
40
+ stroke: stroke ? strokeColor : void 0,
41
+ strokeWidth: lineWidth,
42
+ maxRandomnessOffset: maxRandomnessOffset,
43
+ roughness: roughness,
44
+ bowing: bowing,
45
+ curveFitting: curveFitting,
46
+ curveTightness: curveTightness,
47
+ curveStepCount: curveStepCount,
48
+ fillStyle: fillStyle,
49
+ fillWeight: fillWeight,
50
+ hachureAngle: hachureAngle,
51
+ hachureGap: hachureGap,
52
+ simplification: simplification,
53
+ dashOffset: dashOffset,
54
+ dashGap: dashGap,
55
+ zigzagOffset: zigzagOffset,
56
+ seed: seed,
57
+ fillLineDash: fillLineDash,
58
+ fillLineDashOffset: fillLineDashOffset,
59
+ disableMultiStroke: disableMultiStroke,
60
+ disableMultiStrokeFill: disableMultiStrokeFill,
61
+ preserveVertices: preserveVertices,
62
+ fixedDecimalPlaceDigits: fixedDecimalPlaceDigits
63
+ }), context.highPerformanceRestore();
64
+ }
65
+ drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb) {
66
+ if (this.canvasRenderer.drawShape) return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);
67
+ }
68
+ };
69
+
70
+ RoughCanvasPathRender = __decorate([ (0, inversify_1.injectable)(), __param(0, (0,
71
+ inversify_1.inject)(vrender_1.DefaultCanvasPathRender)), __metadata("design:paramtypes", [ Object ]) ], RoughCanvasPathRender),
72
+ exports.RoughCanvasPathRender = RoughCanvasPathRender;
73
+ //# sourceMappingURL=rough-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-path.ts"],"names":[],"mappings":"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","file":"rough-path.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport type {\n IGraphicRender,\n IRenderService,\n IGraphic,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicAttribute,\n IPath,\n IDrawContext,\n IGraphicRenderDrawParams\n} from '@visactor/vrender';\nimport { PATH_NUMBER_TYPE, DefaultCanvasPathRender, getTheme } from '@visactor/vrender';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\n\n@injectable()\nexport class RoughCanvasPathRender implements IGraphicRender {\n type: 'path';\n numberType: number;\n style: 'rough' = 'rough';\n\n constructor(\n @inject(DefaultCanvasPathRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n this.type = 'path';\n this.numberType = PATH_NUMBER_TYPE;\n }\n\n draw(path: IPath, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n\n // 获取到原生canvas\n const canvas = context.canvas.nativeCanvas;\n const rc = rough.canvas(canvas, {});\n\n context.highPerformanceSave();\n\n const pathAttribute = getTheme(path).path;\n context.transformFromMatrix(path.transMatrix, true);\n\n const {\n fill = pathAttribute.fill == null ? !!path.attribute.fillColor : pathAttribute.fill,\n stroke = pathAttribute.stroke == null ? !!path.attribute.strokeColor : pathAttribute.stroke,\n fillColor = pathAttribute.fillColor,\n strokeColor = pathAttribute.strokeColor,\n lineWidth = pathAttribute.lineWidth,\n path: p = pathAttribute.path,\n maxRandomnessOffset = defaultRouthThemeSpec.maxRandomnessOffset,\n roughness = defaultRouthThemeSpec.roughness,\n bowing = defaultRouthThemeSpec.bowing,\n curveFitting = defaultRouthThemeSpec.curveFitting,\n curveTightness = defaultRouthThemeSpec.curveTightness,\n curveStepCount = defaultRouthThemeSpec.curveStepCount,\n fillStyle = defaultRouthThemeSpec.fillStyle,\n fillWeight = defaultRouthThemeSpec.fillWeight,\n hachureAngle = defaultRouthThemeSpec.hachureAngle,\n hachureGap = defaultRouthThemeSpec.hachureGap,\n simplification = defaultRouthThemeSpec.simplification,\n dashOffset = defaultRouthThemeSpec.dashOffset,\n dashGap = defaultRouthThemeSpec.dashGap,\n zigzagOffset = defaultRouthThemeSpec.zigzagOffset,\n seed = defaultRouthThemeSpec.seed,\n fillLineDash = defaultRouthThemeSpec.fillLineDash,\n fillLineDashOffset = defaultRouthThemeSpec.fillLineDashOffset,\n disableMultiStroke = defaultRouthThemeSpec.disableMultiStroke,\n disableMultiStrokeFill = defaultRouthThemeSpec.disableMultiStrokeFill,\n preserveVertices = defaultRouthThemeSpec.preserveVertices,\n fixedDecimalPlaceDigits = defaultRouthThemeSpec.fixedDecimalPlaceDigits\n } = path.attribute as any;\n if (typeof p === 'string') {\n rc.path(p, {\n fill: fill ? (fillColor as string) : undefined,\n stroke: stroke ? (strokeColor as string) : undefined,\n strokeWidth: lineWidth,\n maxRandomnessOffset,\n roughness,\n bowing,\n curveFitting,\n curveTightness,\n curveStepCount,\n fillStyle,\n fillWeight,\n hachureAngle,\n hachureGap,\n simplification,\n dashOffset,\n dashGap,\n zigzagOffset,\n seed,\n fillLineDash,\n fillLineDashOffset,\n disableMultiStroke,\n disableMultiStrokeFill,\n preserveVertices,\n fixedDecimalPlaceDigits\n });\n }\n\n context.highPerformanceRestore();\n }\n drawShape(\n graphic: IGraphic,\n ctx: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ): void {\n if (this.canvasRenderer.drawShape) {\n return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);\n }\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { IGraphicRender, IRenderService, IRect, IGraphicAttribute, IContext2d, IGraphic, IMarkAttribute, IThemeAttribute, IDrawContext, IGraphicRenderDrawParams } from '@visactor/vrender';
2
+ export declare class RoughCanvasRectRender implements IGraphicRender {
3
+ readonly canvasRenderer: IGraphicRender;
4
+ type: 'rect';
5
+ numberType: number;
6
+ style: 'rough';
7
+ constructor(canvasRenderer: IGraphicRender);
8
+ draw(rect: IRect, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
9
+ drawShape(graphic: IGraphic, ctx: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
10
+ }