@jetprint/editor-sdk 1.2.3 → 1.2.5

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 (31) hide show
  1. package/dist/components/Editor/components/EditorAddToCartDialog.vue.d.ts +1 -0
  2. package/dist/components/Editor/components/EditorSidebar.vue.d.ts +35 -0
  3. package/dist/components/Editor/components/EditorTopbar.vue.d.ts +24 -0
  4. package/dist/components/Editor/components/EmbroideryStitchPanel.vue.d.ts +9 -0
  5. package/dist/components/Editor/components/PreviewPanel.vue.d.ts +1 -1
  6. package/dist/components/Editor/components/Theme1UploadPanel.vue.d.ts +35 -0
  7. package/dist/components/Editor/composables/useBackgroundRemoval.d.ts +62 -0
  8. package/dist/components/Editor/composables/useBrushRefine.d.ts +31 -0
  9. package/dist/components/Editor/composables/useCanvasStateByDiecut.d.ts +8 -0
  10. package/dist/components/Editor/composables/useCanvasViewport.d.ts +1 -0
  11. package/dist/components/Editor/composables/useEmbroidery.d.ts +57 -0
  12. package/dist/components/Editor/composables/usePreviewManager.d.ts +516 -0
  13. package/dist/components/Editor/composables/usePreviewRenderer.d.ts +2 -0
  14. package/dist/components/Editor/headless/headlessFontLoader.d.ts +7 -0
  15. package/dist/components/Editor/index.vue.d.ts +7 -5
  16. package/dist/components/Editor/liveRender/types.d.ts +4 -0
  17. package/dist/components/Editor/utils/editorSizeOptions.d.ts +6 -0
  18. package/dist/components/Editor/utils/embroideryStitch.d.ts +25 -0
  19. package/dist/components/Editor/utils/pattern.d.ts +1 -1
  20. package/dist/components/Editor/utils/pillow3dPreview.d.ts +37 -0
  21. package/dist/components/Editor/workers/embroidery.worker.d.ts +47 -0
  22. package/dist/editor-sdk.es.js +44069 -40951
  23. package/dist/index.d.ts +6 -0
  24. package/dist/style.css +1 -1
  25. package/dist/types.d.ts +54 -0
  26. package/dist/utils/backgroundRenderer.d.ts +6 -3
  27. package/dist/utils/protection/encryptedModules.generated.d.ts +1 -1
  28. package/dist/utils/renderService/layerEffects.d.ts +148 -0
  29. package/dist/utils/renderService/types.d.ts +4 -0
  30. package/dist/utils/renderedImagesDB.d.ts +3 -0
  31. package/package.json +1 -1
@@ -86,6 +86,264 @@ export declare function usePreviewManager(getCanvas: () => Canvas | null, fileBa
86
86
  id?: number | undefined;
87
87
  opacity?: number | undefined;
88
88
  clipping?: boolean | undefined;
89
+ effects?: {
90
+ [x: string]: unknown;
91
+ scale?: number | {
92
+ value: number;
93
+ unit?: string | undefined;
94
+ } | null | undefined;
95
+ dropShadow?: {
96
+ enabled?: boolean | undefined;
97
+ color?: {
98
+ r: number;
99
+ g: number;
100
+ b: number;
101
+ } | undefined;
102
+ blendMode?: string | undefined;
103
+ opacity?: number | undefined;
104
+ angle?: number | {
105
+ value: number;
106
+ unit?: string | undefined;
107
+ } | null | undefined;
108
+ distance?: number | {
109
+ value: number;
110
+ unit?: string | undefined;
111
+ } | null | undefined;
112
+ size?: number | {
113
+ value: number;
114
+ unit?: string | undefined;
115
+ } | null | undefined;
116
+ } | {
117
+ enabled?: boolean | undefined;
118
+ color?: {
119
+ r: number;
120
+ g: number;
121
+ b: number;
122
+ } | undefined;
123
+ blendMode?: string | undefined;
124
+ opacity?: number | undefined;
125
+ angle?: number | {
126
+ value: number;
127
+ unit?: string | undefined;
128
+ } | null | undefined;
129
+ distance?: number | {
130
+ value: number;
131
+ unit?: string | undefined;
132
+ } | null | undefined;
133
+ size?: number | {
134
+ value: number;
135
+ unit?: string | undefined;
136
+ } | null | undefined;
137
+ }[] | undefined;
138
+ outerGlow?: {
139
+ enabled?: boolean | undefined;
140
+ color?: {
141
+ r: number;
142
+ g: number;
143
+ b: number;
144
+ } | undefined;
145
+ blendMode?: string | undefined;
146
+ opacity?: number | undefined;
147
+ size?: number | {
148
+ value: number;
149
+ unit?: string | undefined;
150
+ } | null | undefined;
151
+ } | undefined;
152
+ innerGlow?: {
153
+ enabled?: boolean | undefined;
154
+ color?: {
155
+ r: number;
156
+ g: number;
157
+ b: number;
158
+ } | undefined;
159
+ blendMode?: string | undefined;
160
+ opacity?: number | undefined;
161
+ size?: number | {
162
+ value: number;
163
+ unit?: string | undefined;
164
+ } | null | undefined;
165
+ } | undefined;
166
+ innerShadow?: {
167
+ enabled?: boolean | undefined;
168
+ color?: {
169
+ r: number;
170
+ g: number;
171
+ b: number;
172
+ } | undefined;
173
+ blendMode?: string | undefined;
174
+ opacity?: number | undefined;
175
+ angle?: number | {
176
+ value: number;
177
+ unit?: string | undefined;
178
+ } | null | undefined;
179
+ distance?: number | {
180
+ value: number;
181
+ unit?: string | undefined;
182
+ } | null | undefined;
183
+ size?: number | {
184
+ value: number;
185
+ unit?: string | undefined;
186
+ } | null | undefined;
187
+ } | {
188
+ enabled?: boolean | undefined;
189
+ color?: {
190
+ r: number;
191
+ g: number;
192
+ b: number;
193
+ } | undefined;
194
+ blendMode?: string | undefined;
195
+ opacity?: number | undefined;
196
+ angle?: number | {
197
+ value: number;
198
+ unit?: string | undefined;
199
+ } | null | undefined;
200
+ distance?: number | {
201
+ value: number;
202
+ unit?: string | undefined;
203
+ } | null | undefined;
204
+ size?: number | {
205
+ value: number;
206
+ unit?: string | undefined;
207
+ } | null | undefined;
208
+ }[] | undefined;
209
+ solidFill?: {
210
+ enabled?: boolean | undefined;
211
+ color?: {
212
+ r: number;
213
+ g: number;
214
+ b: number;
215
+ } | undefined;
216
+ blendMode?: string | undefined;
217
+ opacity?: number | undefined;
218
+ } | {
219
+ enabled?: boolean | undefined;
220
+ color?: {
221
+ r: number;
222
+ g: number;
223
+ b: number;
224
+ } | undefined;
225
+ blendMode?: string | undefined;
226
+ opacity?: number | undefined;
227
+ }[] | undefined;
228
+ patternOverlay?: {
229
+ enabled?: boolean | undefined;
230
+ pattern?: {
231
+ id?: string | undefined;
232
+ } | undefined;
233
+ blendMode?: string | undefined;
234
+ opacity?: number | undefined;
235
+ scale?: number | {
236
+ value: number;
237
+ unit?: string | undefined;
238
+ } | null | undefined;
239
+ phase?: {
240
+ x?: number | undefined;
241
+ y?: number | undefined;
242
+ } | undefined;
243
+ } | {
244
+ enabled?: boolean | undefined;
245
+ pattern?: {
246
+ id?: string | undefined;
247
+ } | undefined;
248
+ blendMode?: string | undefined;
249
+ opacity?: number | undefined;
250
+ scale?: number | {
251
+ value: number;
252
+ unit?: string | undefined;
253
+ } | null | undefined;
254
+ phase?: {
255
+ x?: number | undefined;
256
+ y?: number | undefined;
257
+ } | undefined;
258
+ }[] | undefined;
259
+ satin?: {
260
+ enabled?: boolean | undefined;
261
+ color?: {
262
+ r: number;
263
+ g: number;
264
+ b: number;
265
+ } | undefined;
266
+ blendMode?: string | undefined;
267
+ opacity?: number | undefined;
268
+ angle?: number | {
269
+ value: number;
270
+ unit?: string | undefined;
271
+ } | null | undefined;
272
+ distance?: number | {
273
+ value: number;
274
+ unit?: string | undefined;
275
+ } | null | undefined;
276
+ size?: number | {
277
+ value: number;
278
+ unit?: string | undefined;
279
+ } | null | undefined;
280
+ } | undefined;
281
+ bevel?: {
282
+ enabled?: boolean | undefined;
283
+ size?: number | {
284
+ value: number;
285
+ unit?: string | undefined;
286
+ } | null | undefined;
287
+ soften?: number | {
288
+ value: number;
289
+ unit?: string | undefined;
290
+ } | null | undefined;
291
+ strength?: number | {
292
+ value: number;
293
+ unit?: string | undefined;
294
+ } | null | undefined;
295
+ depth?: number | {
296
+ value: number;
297
+ unit?: string | undefined;
298
+ } | null | undefined;
299
+ angle?: number | {
300
+ value: number;
301
+ unit?: string | undefined;
302
+ } | null | undefined;
303
+ altitude?: number | {
304
+ value: number;
305
+ unit?: string | undefined;
306
+ } | null | undefined;
307
+ localLightingAngle?: number | {
308
+ value: number;
309
+ unit?: string | undefined;
310
+ } | null | undefined;
311
+ localLightingAltitude?: number | {
312
+ value: number;
313
+ unit?: string | undefined;
314
+ } | null | undefined;
315
+ technique?: string | undefined;
316
+ useShape?: boolean | undefined;
317
+ useTexture?: boolean | undefined;
318
+ pattern?: {
319
+ id?: string | undefined;
320
+ } | undefined;
321
+ scale?: number | {
322
+ value: number;
323
+ unit?: string | undefined;
324
+ } | null | undefined;
325
+ phase?: {
326
+ x?: number | undefined;
327
+ y?: number | undefined;
328
+ } | undefined;
329
+ highlightColor?: {
330
+ r: number;
331
+ g: number;
332
+ b: number;
333
+ } | undefined;
334
+ shadowColor?: {
335
+ r: number;
336
+ g: number;
337
+ b: number;
338
+ } | undefined;
339
+ highlightBlendMode?: string | undefined;
340
+ shadowBlendMode?: string | undefined;
341
+ highlightOpacity?: number | undefined;
342
+ shadowOpacity?: number | undefined;
343
+ } | undefined;
344
+ gradientOverlay?: unknown;
345
+ stroke?: unknown;
346
+ } | undefined;
89
347
  }[];
90
348
  };
91
349
  materialList: {
@@ -196,6 +454,264 @@ export declare function usePreviewManager(getCanvas: () => Canvas | null, fileBa
196
454
  id?: number | undefined;
197
455
  opacity?: number | undefined;
198
456
  clipping?: boolean | undefined;
457
+ effects?: {
458
+ [x: string]: unknown;
459
+ scale?: number | {
460
+ value: number;
461
+ unit?: string | undefined;
462
+ } | null | undefined;
463
+ dropShadow?: {
464
+ enabled?: boolean | undefined;
465
+ color?: {
466
+ r: number;
467
+ g: number;
468
+ b: number;
469
+ } | undefined;
470
+ blendMode?: string | undefined;
471
+ opacity?: number | undefined;
472
+ angle?: number | {
473
+ value: number;
474
+ unit?: string | undefined;
475
+ } | null | undefined;
476
+ distance?: number | {
477
+ value: number;
478
+ unit?: string | undefined;
479
+ } | null | undefined;
480
+ size?: number | {
481
+ value: number;
482
+ unit?: string | undefined;
483
+ } | null | undefined;
484
+ } | {
485
+ enabled?: boolean | undefined;
486
+ color?: {
487
+ r: number;
488
+ g: number;
489
+ b: number;
490
+ } | undefined;
491
+ blendMode?: string | undefined;
492
+ opacity?: number | undefined;
493
+ angle?: number | {
494
+ value: number;
495
+ unit?: string | undefined;
496
+ } | null | undefined;
497
+ distance?: number | {
498
+ value: number;
499
+ unit?: string | undefined;
500
+ } | null | undefined;
501
+ size?: number | {
502
+ value: number;
503
+ unit?: string | undefined;
504
+ } | null | undefined;
505
+ }[] | undefined;
506
+ outerGlow?: {
507
+ enabled?: boolean | undefined;
508
+ color?: {
509
+ r: number;
510
+ g: number;
511
+ b: number;
512
+ } | undefined;
513
+ blendMode?: string | undefined;
514
+ opacity?: number | undefined;
515
+ size?: number | {
516
+ value: number;
517
+ unit?: string | undefined;
518
+ } | null | undefined;
519
+ } | undefined;
520
+ innerGlow?: {
521
+ enabled?: boolean | undefined;
522
+ color?: {
523
+ r: number;
524
+ g: number;
525
+ b: number;
526
+ } | undefined;
527
+ blendMode?: string | undefined;
528
+ opacity?: number | undefined;
529
+ size?: number | {
530
+ value: number;
531
+ unit?: string | undefined;
532
+ } | null | undefined;
533
+ } | undefined;
534
+ innerShadow?: {
535
+ enabled?: boolean | undefined;
536
+ color?: {
537
+ r: number;
538
+ g: number;
539
+ b: number;
540
+ } | undefined;
541
+ blendMode?: string | undefined;
542
+ opacity?: number | undefined;
543
+ angle?: number | {
544
+ value: number;
545
+ unit?: string | undefined;
546
+ } | null | undefined;
547
+ distance?: number | {
548
+ value: number;
549
+ unit?: string | undefined;
550
+ } | null | undefined;
551
+ size?: number | {
552
+ value: number;
553
+ unit?: string | undefined;
554
+ } | null | undefined;
555
+ } | {
556
+ enabled?: boolean | undefined;
557
+ color?: {
558
+ r: number;
559
+ g: number;
560
+ b: number;
561
+ } | undefined;
562
+ blendMode?: string | undefined;
563
+ opacity?: number | undefined;
564
+ angle?: number | {
565
+ value: number;
566
+ unit?: string | undefined;
567
+ } | null | undefined;
568
+ distance?: number | {
569
+ value: number;
570
+ unit?: string | undefined;
571
+ } | null | undefined;
572
+ size?: number | {
573
+ value: number;
574
+ unit?: string | undefined;
575
+ } | null | undefined;
576
+ }[] | undefined;
577
+ solidFill?: {
578
+ enabled?: boolean | undefined;
579
+ color?: {
580
+ r: number;
581
+ g: number;
582
+ b: number;
583
+ } | undefined;
584
+ blendMode?: string | undefined;
585
+ opacity?: number | undefined;
586
+ } | {
587
+ enabled?: boolean | undefined;
588
+ color?: {
589
+ r: number;
590
+ g: number;
591
+ b: number;
592
+ } | undefined;
593
+ blendMode?: string | undefined;
594
+ opacity?: number | undefined;
595
+ }[] | undefined;
596
+ patternOverlay?: {
597
+ enabled?: boolean | undefined;
598
+ pattern?: {
599
+ id?: string | undefined;
600
+ } | undefined;
601
+ blendMode?: string | undefined;
602
+ opacity?: number | undefined;
603
+ scale?: number | {
604
+ value: number;
605
+ unit?: string | undefined;
606
+ } | null | undefined;
607
+ phase?: {
608
+ x?: number | undefined;
609
+ y?: number | undefined;
610
+ } | undefined;
611
+ } | {
612
+ enabled?: boolean | undefined;
613
+ pattern?: {
614
+ id?: string | undefined;
615
+ } | undefined;
616
+ blendMode?: string | undefined;
617
+ opacity?: number | undefined;
618
+ scale?: number | {
619
+ value: number;
620
+ unit?: string | undefined;
621
+ } | null | undefined;
622
+ phase?: {
623
+ x?: number | undefined;
624
+ y?: number | undefined;
625
+ } | undefined;
626
+ }[] | undefined;
627
+ satin?: {
628
+ enabled?: boolean | undefined;
629
+ color?: {
630
+ r: number;
631
+ g: number;
632
+ b: number;
633
+ } | undefined;
634
+ blendMode?: string | undefined;
635
+ opacity?: number | undefined;
636
+ angle?: number | {
637
+ value: number;
638
+ unit?: string | undefined;
639
+ } | null | undefined;
640
+ distance?: number | {
641
+ value: number;
642
+ unit?: string | undefined;
643
+ } | null | undefined;
644
+ size?: number | {
645
+ value: number;
646
+ unit?: string | undefined;
647
+ } | null | undefined;
648
+ } | undefined;
649
+ bevel?: {
650
+ enabled?: boolean | undefined;
651
+ size?: number | {
652
+ value: number;
653
+ unit?: string | undefined;
654
+ } | null | undefined;
655
+ soften?: number | {
656
+ value: number;
657
+ unit?: string | undefined;
658
+ } | null | undefined;
659
+ strength?: number | {
660
+ value: number;
661
+ unit?: string | undefined;
662
+ } | null | undefined;
663
+ depth?: number | {
664
+ value: number;
665
+ unit?: string | undefined;
666
+ } | null | undefined;
667
+ angle?: number | {
668
+ value: number;
669
+ unit?: string | undefined;
670
+ } | null | undefined;
671
+ altitude?: number | {
672
+ value: number;
673
+ unit?: string | undefined;
674
+ } | null | undefined;
675
+ localLightingAngle?: number | {
676
+ value: number;
677
+ unit?: string | undefined;
678
+ } | null | undefined;
679
+ localLightingAltitude?: number | {
680
+ value: number;
681
+ unit?: string | undefined;
682
+ } | null | undefined;
683
+ technique?: string | undefined;
684
+ useShape?: boolean | undefined;
685
+ useTexture?: boolean | undefined;
686
+ pattern?: {
687
+ id?: string | undefined;
688
+ } | undefined;
689
+ scale?: number | {
690
+ value: number;
691
+ unit?: string | undefined;
692
+ } | null | undefined;
693
+ phase?: {
694
+ x?: number | undefined;
695
+ y?: number | undefined;
696
+ } | undefined;
697
+ highlightColor?: {
698
+ r: number;
699
+ g: number;
700
+ b: number;
701
+ } | undefined;
702
+ shadowColor?: {
703
+ r: number;
704
+ g: number;
705
+ b: number;
706
+ } | undefined;
707
+ highlightBlendMode?: string | undefined;
708
+ shadowBlendMode?: string | undefined;
709
+ highlightOpacity?: number | undefined;
710
+ shadowOpacity?: number | undefined;
711
+ } | undefined;
712
+ gradientOverlay?: unknown;
713
+ stroke?: unknown;
714
+ } | undefined;
199
715
  }[];
200
716
  };
201
717
  materialList: {
@@ -47,6 +47,8 @@ export declare function usePreviewRenderer(options: {
47
47
  getEditorAreaWidth?: () => number;
48
48
  /** 当前选中尺码,多尺码时使 fabricScreenshotList id 与 psdJson 一致 */
49
49
  getSelectedSize?: () => string;
50
+ /** 特殊设计模式(none|embroidery|pillow3d)。pillow3d 时把设计截图过伪立体效果,作为预览效果图的设计纹理 */
51
+ getSpecialMode?: () => string;
50
52
  saveCanvasState: (diecutId: string) => Promise<void>;
51
53
  generateDiecutScreenshot: (diecutId: string, opts?: {
52
54
  multiplier?: number;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 确保给定字体族(来自 fabric 文字对象的 fontFamily)已加载完成。
3
+ * 传空数组则预热全部内置字体。渲染前调用并 await,避免文字用系统兜底字体。
4
+ */
5
+ export declare function ensureFontsForCanvas(families: string[]): Promise<void>;
6
+ /** 递归收集 fabric 状态对象(含 group 嵌套)里所有文字对象的 fontFamily。 */
7
+ export declare function collectFontFamilies(objects: any[]): string[];
@@ -29,6 +29,7 @@ type EditorProps = {
29
29
  onAddToCartSuccess?: (payload?: {
30
30
  addedCount?: number;
31
31
  psTaskCode?: string;
32
+ psTaskId?: string;
32
33
  }) => void;
33
34
  onAddToCartError?: (msg?: string) => void;
34
35
  onGoHome?: () => void;
@@ -42,15 +43,15 @@ type EditorProps = {
42
43
  /** 左侧栏额外 Tab(竖条 + 内容区由宿主传入 Vue 组件) */
43
44
  customSidebarTabs?: CustomSidebarTabDef[];
44
45
  };
45
- declare var __VLS_21: {}, __VLS_27: {}, __VLS_135: {}, __VLS_141: {};
46
+ declare var __VLS_22: {}, __VLS_28: {}, __VLS_141: {}, __VLS_147: {};
46
47
  type __VLS_Slots = {} & {
47
- 'topbar-left'?: (props: typeof __VLS_21) => any;
48
+ 'topbar-left'?: (props: typeof __VLS_22) => any;
48
49
  } & {
49
- 'topbar-right'?: (props: typeof __VLS_27) => any;
50
+ 'topbar-right'?: (props: typeof __VLS_28) => any;
50
51
  } & {
51
- 'topbar-left'?: (props: typeof __VLS_135) => any;
52
+ 'topbar-left'?: (props: typeof __VLS_141) => any;
52
53
  } & {
53
- 'topbar-right'?: (props: typeof __VLS_141) => any;
54
+ 'topbar-right'?: (props: typeof __VLS_147) => any;
54
55
  };
55
56
  declare const __VLS_component: import("vue").DefineComponent<EditorProps, {
56
57
  renderAllTemplates: () => Promise<Array<{
@@ -172,6 +173,7 @@ declare const __VLS_component: import("vue").DefineComponent<EditorProps, {
172
173
  onAddToCartSuccess: (payload?: {
173
174
  addedCount?: number;
174
175
  psTaskCode?: string;
176
+ psTaskId?: string;
175
177
  }) => void;
176
178
  onAddToCartError: (msg?: string) => void;
177
179
  messages: Record<string, string>;
@@ -1,3 +1,4 @@
1
+ import type { LayerEffects } from '../../../utils/renderService/layerEffects';
1
2
  export declare enum EPartType {
2
3
  Drawing = 0,
3
4
  Material = 1
@@ -43,6 +44,7 @@ export interface ISmartObject {
43
44
  imagePath?: string;
44
45
  filterList?: IFilter[];
45
46
  puppet?: IFilter;
47
+ effects?: LayerEffects;
46
48
  }
47
49
  export interface IPsdPartData {
48
50
  id: number;
@@ -59,6 +61,7 @@ export interface IPsdPartData {
59
61
  blendMode?: string;
60
62
  opacity?: number;
61
63
  clipping?: boolean;
64
+ effects?: LayerEffects;
62
65
  }
63
66
  export interface IBounds {
64
67
  top: number;
@@ -122,6 +125,7 @@ export interface IDeformationLayer {
122
125
  clipping?: boolean;
123
126
  filterList?: IFilter[];
124
127
  puppet?: IFilter;
128
+ effects?: LayerEffects;
125
129
  }
126
130
  export interface IDeformationData {
127
131
  canvasWidth: number;
@@ -1,6 +1,12 @@
1
1
  /** 编辑器尺码:与刀板里的 "default" 占位一致,大小写不敏感 */
2
2
  /** theme1 产品面板「全部」选项值(颜色 / 尺码共用) */
3
3
  export declare const SKU_ALL_VALUE = "all";
4
+ /**
5
+ * 服务端"默认" SKU(尺码/颜色)的规范值——接口对默认 SKU 统一返回大写 `Default`。
6
+ * SDK 在【空值兜底 / 输出 / 文件命名】处一律用它,杜绝自造小写 `default` 导致与服务端不一致、第三方匹配不上。
7
+ * 注意:匹配判断仍走大小写不敏感的 isDefaultSkuLabel;本常量只用于"需要产出一个默认值"的场合。
8
+ */
9
+ export declare const DEFAULT_SKU_VALUE = "Default";
4
10
  export declare function isDefaultSizeLabel(s: string): boolean;
5
11
  /** 与 isDefaultSizeLabel 同义,供颜色 SKU 复用 */
6
12
  export declare const isDefaultSkuLabel: typeof isDefaultSizeLabel;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 刺绣 · 针法纹理渲染(节点③)
3
+ *
4
+ * 给定一个「色块形状蒙版」(mask,不透明=该色块) + 颜色 + 针法类型,
5
+ * 生成一张同尺寸 canvas:在整块范围画出该针法的纹理,再裁剪(destination-in)到色块形状内。
6
+ * 纯 Canvas 2D,纹理是「视觉效果」近似(非真实绣花机针迹)。
7
+ */
8
+ export type StitchKey = 'satin' | 'fill' | 'running' | 'cross' | 'frenchKnot' | 'bean' | 'zigzag' | 'estitch' | 'tartan' | 'circular' | 'spiral' | 'meander' | 'contour';
9
+ type RGB = [number, number, number];
10
+ export interface StitchParams {
11
+ /** 针距/纹理密度基准(px),越小越密;默认按类型取值 */
12
+ spacing?: number;
13
+ /** 绣线角度(度),默认 45 */
14
+ angle?: number;
15
+ }
16
+ /** 各针法默认针距(与 drawPattern 内的 ?? 值一致),供面板滑块取初值。 */
17
+ export declare const STITCH_DEFAULT_SPACING: Record<StitchKey, number>;
18
+ /** 哪些针法的「角度」有意义(其余用各自固有朝向,角度无效)。 */
19
+ export declare const STITCH_USES_ANGLE: ReadonlyArray<StitchKey>;
20
+ /**
21
+ * 渲染某色块的针法纹理 canvas:在 mask 范围内画针法,裁剪到 mask 形状。
22
+ * @param mask 色块形状蒙版(不透明=该色块),决定输出尺寸与裁剪
23
+ */
24
+ export declare function renderStitchCanvas(mask: HTMLCanvasElement, color: RGB, type: StitchKey, params?: StitchParams): HTMLCanvasElement;
25
+ export {};
@@ -37,7 +37,7 @@ export declare const setPatternCenterOffset: (pattern: any, rectW: number, rectH
37
37
  * 还原:优先沿用 JSON / 画布对象 fill 上的 offsetX/Y(与普通图层几何一致);仅新建或无有效 offset 时按画布居中。
38
38
  */
39
39
  export declare const applyPatternOffsetFromSavedOrCenter: (pattern: any, canvasW: number, canvasH: number, tileWidth: number, tileHeight: number, scale: number, savedFill: any) => void;
40
- export declare const buildPatternSource: (img: HTMLImageElement | HTMLCanvasElement, mode: string) => HTMLImageElement | HTMLCanvasElement;
40
+ export declare const buildPatternSource: (img: HTMLImageElement | HTMLCanvasElement, mode: string) => HTMLCanvasElement | HTMLImageElement;
41
41
  export declare const createFabricPattern: (source: any, scale: number) => Pattern;
42
42
  /** 默认图片加载(离屏导出等无 token 代理场景) */
43
43
  export declare function loadImageElement(url: string): Promise<HTMLImageElement | null>;