@visactor/vrender-kits 1.0.0-alpha.5 → 1.0.0-alpha.6

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 (88) hide show
  1. package/cjs/canvas/contributions/browser/context.d.ts +1 -1
  2. package/cjs/canvas/contributions/browser/context.js +1 -0
  3. package/cjs/canvas/contributions/browser/context.js.map +1 -1
  4. package/cjs/canvas/contributions/modules.js +2 -1
  5. package/cjs/env/contributions/module.js +2 -0
  6. package/cjs/env/contributions/node-contribution.js +1 -1
  7. package/cjs/index.d.ts +2 -0
  8. package/cjs/index.js +2 -1
  9. package/cjs/index.js.map +1 -1
  10. package/cjs/picker/contributions/canvas-picker/star-module.d.ts +2 -0
  11. package/cjs/picker/contributions/canvas-picker/star-module.js +15 -0
  12. package/cjs/picker/contributions/canvas-picker/star-module.js.map +1 -0
  13. package/cjs/picker/contributions/canvas-picker/star-picker.d.ts +8 -0
  14. package/cjs/picker/contributions/canvas-picker/star-picker.js +30 -0
  15. package/cjs/picker/contributions/canvas-picker/star-picker.js.map +1 -0
  16. package/cjs/picker/contributions/constants.d.ts +1 -0
  17. package/cjs/picker/contributions/constants.js +2 -2
  18. package/cjs/picker/contributions/constants.js.map +1 -1
  19. package/cjs/register/register-gif.d.ts +7 -0
  20. package/cjs/register/register-gif.js +19 -0
  21. package/cjs/register/register-gif.js.map +1 -0
  22. package/cjs/register/register-glyph.js +2 -1
  23. package/cjs/register/register-star.d.ts +6 -0
  24. package/cjs/register/register-star.js +16 -0
  25. package/cjs/register/register-star.js.map +1 -0
  26. package/cjs/render/contributions/rough/base-render.d.ts +3 -1
  27. package/cjs/render/contributions/rough/base-render.js +49 -0
  28. package/cjs/render/contributions/rough/base-render.js.map +1 -1
  29. package/cjs/render/contributions/rough/config.js +4 -4
  30. package/cjs/render/contributions/rough/config.js.map +1 -1
  31. package/cjs/render/contributions/rough/context.d.ts +142 -0
  32. package/cjs/render/contributions/rough/context.js +408 -0
  33. package/cjs/render/contributions/rough/context.js.map +1 -0
  34. package/cjs/render/contributions/rough/rough-line.d.ts +6 -4
  35. package/cjs/render/contributions/rough/rough-line.js +14 -48
  36. package/cjs/render/contributions/rough/rough-line.js.map +1 -1
  37. package/cjs/render/contributions/rough/rough-rect.d.ts +1 -1
  38. package/cjs/render/contributions/rough/rough-rect.js +2 -44
  39. package/cjs/render/contributions/rough/rough-rect.js.map +1 -1
  40. package/cjs/render/contributions/rough/rough-symbol.d.ts +3 -4
  41. package/cjs/render/contributions/rough/rough-symbol.js +3 -47
  42. package/cjs/render/contributions/rough/rough-symbol.js.map +1 -1
  43. package/cjs/tools/dynamicTexture.js +2 -0
  44. package/dist/index.es.js +544 -174
  45. package/es/canvas/contributions/browser/context.d.ts +1 -1
  46. package/es/canvas/contributions/browser/context.js +1 -0
  47. package/es/canvas/contributions/browser/context.js.map +1 -1
  48. package/es/canvas/contributions/modules.js +2 -1
  49. package/es/env/contributions/module.js +2 -0
  50. package/es/env/contributions/node-contribution.js +1 -1
  51. package/es/index.d.ts +2 -0
  52. package/es/index.js +4 -0
  53. package/es/index.js.map +1 -1
  54. package/es/picker/contributions/canvas-picker/star-module.d.ts +2 -0
  55. package/es/picker/contributions/canvas-picker/star-module.js +13 -0
  56. package/es/picker/contributions/canvas-picker/star-module.js.map +1 -0
  57. package/es/picker/contributions/canvas-picker/star-picker.d.ts +8 -0
  58. package/es/picker/contributions/canvas-picker/star-picker.js +26 -0
  59. package/es/picker/contributions/canvas-picker/star-picker.js.map +1 -0
  60. package/es/picker/contributions/constants.d.ts +1 -0
  61. package/es/picker/contributions/constants.js +2 -0
  62. package/es/picker/contributions/constants.js.map +1 -1
  63. package/es/register/register-gif.d.ts +7 -0
  64. package/es/register/register-gif.js +20 -0
  65. package/es/register/register-gif.js.map +1 -0
  66. package/es/register/register-glyph.js +2 -1
  67. package/es/register/register-star.d.ts +6 -0
  68. package/es/register/register-star.js +15 -0
  69. package/es/register/register-star.js.map +1 -0
  70. package/es/render/contributions/rough/base-render.d.ts +3 -1
  71. package/es/render/contributions/rough/base-render.js +49 -0
  72. package/es/render/contributions/rough/base-render.js.map +1 -1
  73. package/es/render/contributions/rough/config.js +4 -4
  74. package/es/render/contributions/rough/config.js.map +1 -1
  75. package/es/render/contributions/rough/context.d.ts +142 -0
  76. package/es/render/contributions/rough/context.js +402 -0
  77. package/es/render/contributions/rough/context.js.map +1 -0
  78. package/es/render/contributions/rough/rough-line.d.ts +6 -4
  79. package/es/render/contributions/rough/rough-line.js +15 -48
  80. package/es/render/contributions/rough/rough-line.js.map +1 -1
  81. package/es/render/contributions/rough/rough-rect.d.ts +1 -1
  82. package/es/render/contributions/rough/rough-rect.js +1 -43
  83. package/es/render/contributions/rough/rough-rect.js.map +1 -1
  84. package/es/render/contributions/rough/rough-symbol.d.ts +3 -4
  85. package/es/render/contributions/rough/rough-symbol.js +4 -46
  86. package/es/render/contributions/rough/rough-symbol.js.map +1 -1
  87. package/es/tools/dynamicTexture.js +2 -0
  88. package/package.json +2 -2
@@ -12,10 +12,6 @@ var __decorate = this && this.__decorate || function(decorators, target, key, de
12
12
 
13
13
  import { RECT_NUMBER_TYPE, DefaultCanvasRectRender, inject, injectable } from "@visactor/vrender-core";
14
14
 
15
- import rough from "roughjs";
16
-
17
- import { defaultRouthThemeSpec } from "./config";
18
-
19
15
  import { RoughBaseRender } from "./base-render";
20
16
 
21
17
  let RoughCanvasRectRender = class extends RoughBaseRender {
@@ -24,45 +20,7 @@ let RoughCanvasRectRender = class extends RoughBaseRender {
24
20
  this.numberType = RECT_NUMBER_TYPE;
25
21
  }
26
22
  draw(rect, renderService, drawContext, params) {
27
- const {context: context} = drawContext;
28
- if (!context) return;
29
- const canvas = context.canvas.nativeCanvas, rc = rough.canvas(canvas);
30
- context.highPerformanceSave();
31
- const rectAttribute = rect.getGraphicTheme();
32
- let {x: x = rectAttribute.x, y: y = rectAttribute.y} = rect.attribute;
33
- if (rect.transMatrix.onlyTranslate()) {
34
- const {dx: dx = rectAttribute.dx, dy: dy = rectAttribute.dy} = rect.attribute;
35
- x += dx, y += dy, context.setTransformForCurrent();
36
- } else x = 0, y = 0, context.transformFromMatrix(rect.transMatrix, !0);
37
- const {fill: fill = rectAttribute.fill, stroke: stroke = rectAttribute.stroke, fillColor: fillColor = rectAttribute.fill, strokeColor: strokeColor = rectAttribute.stroke, x1: x1, y1: y1, lineWidth: lineWidth = rectAttribute.lineWidth, 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} = rect.attribute;
38
- let {width: width = rectAttribute.width, height: height = rectAttribute.height} = rect.attribute;
39
- width = (null != width ? width : x1 - x) || 0, height = (null != height ? height : y1 - y) || 0,
40
- rc.rectangle(x, y, width, height, {
41
- fill: fill ? fillColor : void 0,
42
- stroke: stroke ? strokeColor : void 0,
43
- strokeWidth: lineWidth,
44
- maxRandomnessOffset: maxRandomnessOffset,
45
- roughness: roughness,
46
- bowing: bowing,
47
- curveFitting: curveFitting,
48
- curveTightness: curveTightness,
49
- curveStepCount: curveStepCount,
50
- fillStyle: fillStyle,
51
- fillWeight: fillWeight,
52
- hachureAngle: hachureAngle,
53
- hachureGap: hachureGap,
54
- simplification: simplification,
55
- dashOffset: dashOffset,
56
- dashGap: dashGap,
57
- zigzagOffset: zigzagOffset,
58
- seed: seed,
59
- fillLineDash: fillLineDash,
60
- fillLineDashOffset: fillLineDashOffset,
61
- disableMultiStroke: disableMultiStroke,
62
- disableMultiStrokeFill: disableMultiStrokeFill,
63
- preserveVertices: preserveVertices,
64
- fixedDecimalPlaceDigits: fixedDecimalPlaceDigits
65
- }), context.highPerformanceRestore();
23
+ this.doDraw(rect, renderService, drawContext, params);
66
24
  }
67
25
  };
68
26
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render/contributions/rough/rough-rect.ts"],"names":[],"mappings":"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","file":"rough-rect.js","sourcesContent":["import type {\n IGraphicRender,\n IRenderService,\n IRect,\n IDrawContext,\n IGraphicRenderDrawParams\n} from '@visactor/vrender-core';\nimport { RECT_NUMBER_TYPE, DefaultCanvasRectRender, getTheme, inject, injectable } from '@visactor/vrender-core';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\nimport { RoughBaseRender } from './base-render';\n\n@injectable()\nexport class RoughCanvasRectRender extends RoughBaseRender implements IGraphicRender {\n type: 'rect';\n numberType: number;\n style: 'rough' = 'rough';\n\n constructor(\n @inject(DefaultCanvasRectRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n super();\n this.type = 'rect';\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n draw(rect: IRect, 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 rectAttribute = graphicService.themeService.getCurrentTheme().rectAttribute;\n const rectAttribute = rect.getGraphicTheme();\n let { x = rectAttribute.x, y = rectAttribute.y } = rect.attribute;\n if (!rect.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n context.transformFromMatrix(rect.transMatrix, true);\n } else {\n const { dx = rectAttribute.dx, dy = rectAttribute.dy } = rect.attribute;\n x += dx;\n y += dy;\n // 当前context有rotate/scale,重置matrix\n context.setTransformForCurrent();\n }\n\n const {\n fill = rectAttribute.fill,\n stroke = rectAttribute.stroke,\n fillColor = rectAttribute.fill,\n strokeColor = rectAttribute.stroke,\n x1,\n y1,\n lineWidth = rectAttribute.lineWidth,\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 } = rect.attribute as any;\n\n let { width = rectAttribute.width, height = rectAttribute.height } = rect.attribute;\n\n width = (width ?? x1 - x) || 0;\n height = (height ?? y1 - y) || 0;\n\n rc.rectangle(x, y, width, height, {\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"]}
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-rect.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAML,gBAAgB,EAChB,uBAAuB,EACvB,MAAM,EACN,UAAU,EAEX,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIzC,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,eAAe;IAKxD,YAEkB,cAA8B;QAE9C,KAAK,EAAE,CAAC;QAFQ,mBAAc,GAAd,cAAc,CAAgB;QAJhD,UAAK,GAAY,OAAO,CAAC;QAOvB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,IAAW,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QAC3G,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AAjBY,qBAAqB;IADjC,UAAU,EAAE;IAOR,WAAA,MAAM,CAAC,uBAAuB,CAAC,CAAA;;GANvB,qBAAqB,CAiBjC;SAjBY,qBAAqB","file":"rough-rect.js","sourcesContent":["import {\n type IGraphicRender,\n type IRenderService,\n type IRect,\n type IDrawContext,\n type IGraphicRenderDrawParams,\n RECT_NUMBER_TYPE,\n DefaultCanvasRectRender,\n inject,\n injectable,\n CustomPath2D\n} from '@visactor/vrender-core';\n\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\nimport { RoughBaseRender } from './base-render';\nimport { RoughContext2d } from './context';\n\n@injectable()\nexport class RoughCanvasRectRender extends RoughBaseRender implements IGraphicRender {\n type: 'rect';\n numberType: number;\n style: 'rough' = 'rough';\n\n constructor(\n @inject(DefaultCanvasRectRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n super();\n this.type = 'rect';\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n draw(rect: IRect, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n this.doDraw(rect, renderService, drawContext, params);\n }\n}\n"]}
@@ -1,11 +1,10 @@
1
- import type { IGraphicRender, IRenderService, ISymbol, IGraphicAttribute, IContext2d, IGraphic, IMarkAttribute, IThemeAttribute, IDrawContext, IGraphicRenderDrawParams } from '@visactor/vrender-core';
2
- import { BaseRender } from '@visactor/vrender-core';
3
- export declare class RoughCanvasSymbolRender extends BaseRender<ISymbol> implements IGraphicRender {
1
+ import type { IGraphicRender, IRenderService, ISymbol, IDrawContext, IGraphicRenderDrawParams } from '@visactor/vrender-core';
2
+ import { RoughBaseRender } from './base-render';
3
+ export declare class RoughCanvasSymbolRender extends RoughBaseRender implements IGraphicRender {
4
4
  readonly canvasRenderer: IGraphicRender;
5
5
  type: 'symbol';
6
6
  numberType: number;
7
7
  style: 'rough';
8
8
  constructor(canvasRenderer: IGraphicRender);
9
9
  draw(symbol: ISymbol, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
10
- 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;
11
10
  }
@@ -10,59 +10,17 @@ var __decorate = this && this.__decorate || function(decorators, target, key, de
10
10
  };
11
11
  };
12
12
 
13
- import { SYMBOL_NUMBER_TYPE, DefaultCanvasSymbolRender, BaseRender, CustomPath2D, inject, injectable } from "@visactor/vrender-core";
13
+ import { SYMBOL_NUMBER_TYPE, DefaultCanvasSymbolRender, inject, injectable } from "@visactor/vrender-core";
14
14
 
15
- import rough from "roughjs";
15
+ import { RoughBaseRender } from "./base-render";
16
16
 
17
- import { defaultRouthThemeSpec } from "./config";
18
-
19
- let RoughCanvasSymbolRender = class extends BaseRender {
17
+ let RoughCanvasSymbolRender = class extends RoughBaseRender {
20
18
  constructor(canvasRenderer) {
21
19
  super(), this.canvasRenderer = canvasRenderer, this.type = "symbol", this.numberType = SYMBOL_NUMBER_TYPE,
22
20
  this.style = "rough";
23
21
  }
24
22
  draw(symbol, renderService, drawContext, params) {
25
- const {context: context} = drawContext;
26
- if (!context) return;
27
- const canvas = context.canvas.nativeCanvas, rc = rough.canvas(canvas);
28
- context.highPerformanceSave();
29
- const symbolAttribute = symbol.getGraphicTheme(), data = this.transform(symbol, symbolAttribute, context), {x: x, y: y, z: z, lastModelMatrix: lastModelMatrix} = data, parsedPath = symbol.getParsedPath();
30
- if (!parsedPath) return;
31
- const {fill: fill = symbolAttribute.fill, stroke: stroke = symbolAttribute.stroke, fillColor: fillColor = symbolAttribute.fill, strokeColor: strokeColor = symbolAttribute.stroke, size: size = symbolAttribute.size, lineWidth: lineWidth = symbolAttribute.lineWidth, 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} = symbol.attribute;
32
- let svgPath = "";
33
- if (parsedPath.drawToSvgPath) svgPath = parsedPath.drawToSvgPath(size, x, y); else {
34
- const customPath = new CustomPath2D;
35
- parsedPath.draw(customPath, size, x, y) && customPath.closePath(), svgPath = customPath.toString();
36
- }
37
- rc.path(svgPath, {
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();
63
- }
64
- drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb) {
65
- if (this.canvasRenderer.drawShape) return this.canvasRenderer.drawShape(graphic, ctx, x, y, drawContext, params, fillCb, strokeCb);
23
+ this.doDraw(symbol, renderService, drawContext, params);
66
24
  }
67
25
  };
68
26
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render/contributions/rough/rough-symbol.ts"],"names":[],"mappings":"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","file":"rough-symbol.js","sourcesContent":["import type {\n IGraphicRender,\n IRenderService,\n ISymbol,\n IGraphicAttribute,\n IContext2d,\n IGraphic,\n IMarkAttribute,\n IThemeAttribute,\n IDrawContext,\n IGraphicRenderDrawParams\n} from '@visactor/vrender-core';\nimport {\n SYMBOL_NUMBER_TYPE,\n DefaultCanvasSymbolRender,\n BaseRender,\n getTheme,\n CustomPath2D,\n inject,\n injectable\n} from '@visactor/vrender-core';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\n\n@injectable()\nexport class RoughCanvasSymbolRender extends BaseRender<ISymbol> implements IGraphicRender {\n type: 'symbol';\n numberType: number;\n style: 'rough';\n\n constructor(\n @inject(DefaultCanvasSymbolRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n super();\n this.type = 'symbol';\n this.numberType = SYMBOL_NUMBER_TYPE;\n this.style = 'rough';\n }\n\n draw(symbol: ISymbol, 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 const symbolAttribute = symbol.getGraphicTheme();\n const data = this.transform(symbol, symbolAttribute, context);\n const { x, y, z, lastModelMatrix } = data;\n\n const parsedPath = symbol.getParsedPath();\n // todo: 考虑使用path\n if (!parsedPath) {\n return;\n }\n\n const {\n fill = symbolAttribute.fill,\n stroke = symbolAttribute.stroke,\n fillColor = symbolAttribute.fill,\n strokeColor = symbolAttribute.stroke,\n size = symbolAttribute.size,\n lineWidth = symbolAttribute.lineWidth,\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 } = symbol.attribute as any;\n\n let svgPath = '';\n if (parsedPath.drawToSvgPath) {\n svgPath = parsedPath.drawToSvgPath(size, x, y);\n } else {\n const customPath = new CustomPath2D();\n if (parsedPath.draw(customPath, size, x, y)) {\n customPath.closePath();\n }\n svgPath = customPath.toString();\n }\n\n rc.path(svgPath, {\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"]}
1
+ {"version":3,"sources":["../src/render/contributions/rough/rough-symbol.ts"],"names":[],"mappings":";;;;;;;;;;;;AAYA,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EAIzB,MAAM,EACN,UAAU,EACX,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGzC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,eAAe;IAK1D,YAEkB,cAA8B;QAE9C,KAAK,EAAE,CAAC;QAFQ,mBAAc,GAAd,cAAc,CAAgB;QAG9C,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,MAAe,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QAC/G,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF,CAAA;AAlBY,uBAAuB;IADnC,UAAU,EAAE;IAOR,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;;GANzB,uBAAuB,CAkBnC;SAlBY,uBAAuB","file":"rough-symbol.js","sourcesContent":["import type {\n IGraphicRender,\n IRenderService,\n ISymbol,\n IGraphicAttribute,\n IContext2d,\n IGraphic,\n IMarkAttribute,\n IThemeAttribute,\n IDrawContext,\n IGraphicRenderDrawParams\n} from '@visactor/vrender-core';\nimport {\n SYMBOL_NUMBER_TYPE,\n DefaultCanvasSymbolRender,\n BaseRender,\n getTheme,\n CustomPath2D,\n inject,\n injectable\n} from '@visactor/vrender-core';\nimport rough from 'roughjs';\nimport { defaultRouthThemeSpec } from './config';\nimport { RoughContext2d } from './context';\nimport { RoughBaseRender } from './base-render';\n\n@injectable()\nexport class RoughCanvasSymbolRender extends RoughBaseRender implements IGraphicRender {\n type: 'symbol';\n numberType: number;\n style: 'rough';\n\n constructor(\n @inject(DefaultCanvasSymbolRender)\n public readonly canvasRenderer: IGraphicRender\n ) {\n super();\n this.type = 'symbol';\n this.numberType = SYMBOL_NUMBER_TYPE;\n this.style = 'rough';\n }\n\n draw(symbol: ISymbol, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n this.doDraw(symbol, renderService, drawContext, params);\n }\n}\n"]}
@@ -1 +1,3 @@
1
+
2
+
1
3
  //# sourceMappingURL=dynamicTexture.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-kits",
3
- "version": "1.0.0-alpha.5",
3
+ "version": "1.0.0-alpha.6",
4
4
  "description": "",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index.js",
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "dependencies": {
15
15
  "@visactor/vutils": "~0.19.5",
16
- "@visactor/vrender-core": "1.0.0-alpha.5",
16
+ "@visactor/vrender-core": "1.0.0-alpha.6",
17
17
  "@resvg/resvg-js": "2.4.1",
18
18
  "roughjs": "4.5.2",
19
19
  "gifuct-js": "2.1.2",